Today almost every IT specialist uses models of some form or another. Models help raise the abstraction level of a system description. Although models usually describe IT systems statically, they can also be used to describe the dynamic behaviour of the system. The OMG's MDA® approach suggests describing business and application logic separately from any underlying platform technology in Platform Independent Models. The UML 2.0 provides powerful and flexible behavioural modelling capabilities. As the focus of the development process shifts from being code-centric to model-centric, the need for an environment to debug and execute models becomes more apparent. The ability to execute models provides additional avenues for the exploitation of the models in validation, verification, and simulation. The use of executable models enables the visualization and discovery of defects early in the development cycle, avoiding costly rework at later stages. We describe an architecture for implementing a generic model execution engine that enables the simulation of models. The main advantages of our architecture are its generic nature and its dedication to maintaining controllability and observability of the simulation. We have used this generic framework to build a UML simulator, which can be extended to support different UML profiles. The architecture also supports non-UML models.