Expand a large class into its methods and data members. Now partition the class. The partitioning will suggest an inheritance hierarchy. Look for virtual partitions which are independent of each other, there may be other ways to split the class as well.