This project investigates the structure of semantics definitions of programming languages. First, models of the ``core'' of a programming language are analyzed and classified; next, extensions of the core are analyzed for their harmony (correspondence) and orthogonality, and models of these extensions are related to each other and to models of the core. The ultimate goal is a ``design and analysis workbench,'' in which a language can be synthesized, classified, and prototyped. Such a workbench will aid language designers and provide experimental evidence that languages with harmonious designs have clean and correct implementations.