Top-down hierarchical or recursive problem decomposition is a familiar and highly successful approach to design and optimization in engineering domains. However, top-down decomposition of a system or problem into more manageable parts requires a priori domain knowledge of what kinds of subsystems are feasible and what kinds of subsystem interfaces are manageable. To a large extent this depends on knowledge of existing components that have previously been identified as useful "building-blocks" in the problem domain. In this paper we overview recent work that has developed an abstract model of automatic module discovery. In an abstract domain, our method discovers modules hierarchically in a bottom-up fashion that allows their re-use in subsequent higher-level structures. This method discovers modules without any a priori knowledge of the problem’s modular structure. We outline our approach and results.