This paper presents my PhD research work in very general terms. My main interest is programming language design. Since language design is so hard, I've chosen to generalize and regularize the design of an existing, high-quality OO language, namely Beta. A good language combines good expressiveness through few, well-designed abstraction mechanisms with a high degree of safety through compile-time analyzability. I'm using two main tools in this process, an actual implementation of the generalized language, and formal semantics. A formal language specication helps in spotting inconsistencies and bad language design, enables strict conformance checks on an implementation, and supports the further development of the language in light of the insight gathered. The purpose of an implementation is to discover the pratical properties of a language, that is how it actually behaves as a tool for a programmer. The generalized language embodies a notion of inheritance built on constra..