Create packages based on the BusinessModel and not the implementation
- http://www.javapractices.com/topic/TopicAction.do;jsessionid=F65E08B844D6213B5B147256246DFED6?Id=205
It'll help to avoid the BigSoupOfClasses.
Features tend to interlace each other. For example, "print coupons" could be consider a feature, but it also overlaps with "promotion" features and bill creation. Then again, every known grouping aspect candidate has overlaps. That's the nature of the business domain.
Related: SeparationAndGroupingAreArchaicConcepts, VariationsTendTowardCartesianProduct