Frameworks are the key to successful object-oriented application development. The goal of this paper is to show that successful framework development must match the business domains they are derived from, and that they must be flexible enough to evolve gracefully. Our principal contribution is the presentation of concepts that can be used for domain partitioning and framework layering in order to overcome difficulties in framework construction and layering. The work reported here is based on a series of object-oriented banking projects. The system, including several frameworks, consists of 3500 C++-classes and was developed over the past five years.