A pattern language by BobbyWoolf in PatternLanguagesOfProgramDesign 2, about how to divide up your Smalltalk classes into Envy Applications and Subapplications so as to minimize inter-application dependencies and maximize intra-application and intra-subapplication cohesiveness, or relatedness. The same heuristics apply to dividing Java classes into packages. --RandyStafford