A Plugin engine was designed to guarantee PySurf 's modularity and to make it a simple and flexible development platform to prototype and test innovative approaches. It allows extension of the core package by providing Plugins that are seamlessly and natively integrated into the framework. Plugins are available for all key components (see Fig. ) and make it trivial to add custom functionality. Due to the modular framework and the design-bycontract principle applied to all components, it is possible to ensure that all functionality is validated at the setup step. Additional user input is added inside the code with the help of a domain specific language (DSL), which is used to create the input parser automatically. The parser validates the given input, making it unnecessary to check user input manually inside the Plugin. This provides several advantages; i) The specific user input needed for the Plugin is written in the code of the Plugin and there is no need to extend an existing input parser manually. This avoids duplication errors and improves the code readability, leading to very clear code. ii) Additionally, the engine can create the documentation automatically from the information provided in the source code using the sphinx documentation framework. Thus, there are no undocumented keywords and the documentation is always up-to-date with the source code.