Composition of new software tools from previously created tool fragments has long been recognized as a useful approach to the development of software systems. The Aries interpreter project applied this approach to the design and implementation of program interpreters by separating interpreter design into modules providing a core interpretation algorithm, value kind definitions, and computation models. Although the implementation of these modules for non-trivial programming languages remains a substantial task, the resulting interpretation system will permit the rapid development of subsequent tools that incorporate program interpretation as a component. Furthermore, this interpretation system would provide support not only for tools requiring conventional models of program execution, but also for tools requiring symbolic execution, dynamic data flow tracking, and other, less conventional, forms of interpretation.