Assembly planning is an important activity which directly governs more than 50% of the cost of products. Literature reveals that considerable theoretical work has been focused on assembly sequence planning but very little work addresses practical implementation. The assembly planning problem needs a special consideration on account of the need for partial constraints such as subassembly detection. This paper reports the design and implementation of a software system which automatically determines a product assembly sequence, and subassemblies, which can be assembled in parallel, given only the geometric description of the assembly. The system is conceptually divided into two stages. The first stage takes CAD model of the product assembly as input, which generates a contact relationship and precedence relationship to aid in the generation of assembly sequences. In the second stage the relationships generated in first stage are augmented with fastener information to determine the subassemblies. The software system developed was successfully tested on practical assemblies. Comparison with literature shows that this algorithm is not only fast but unlike other algorithms, it also gives sequences in which multiple parts can be assembled at a time.