The controller layer manages the integrated fragmentation algorithms and sets up the fragmentation jobs. Currently, three methods of fragmentation and substructure analysis are integrated: ErtlFunctionalGroupsFinder, Sugar Removal Utility (SRU), and Scaffold Generator. Each of these methods is a stand-alone implementation based on CDK. Each fragmentation algorithm implementation has an individual wrapper class that implements a MORTAR-specific interface called IMoleculeFragmenter. Using this interface (see Figure ), fragmentation algorithms can be integrated into MORTAR. Specific fragmentation settings of an algorithm must be implemented as objects of typespecific property classes implementing the JavaFX Property<T> interface and returned in a list by the IMoleculeFragmenter method settingsProperties(). This way, a specific tab for the algorithm is automatically generated in the SettingsView of the GUI with text fields for strings or numbers or a choice box based on the property types (see Figure ). Tooltip texts describing the settings can also be defined. This auto-creation of a settings dialog supports the convenience of integrating new fragmentation algorithms into MORTAR. Apart from the settings, conditions for the input molecules passed to the specific algorithm or preprocessing routines can be defined via the interface. For example, the ErtlFunctionalGroupsFinder class does not accept input structures containing metal or metalloid atoms or charges. The former have to be filtered, the latter can be neutralised in preprocessing. The central fragmentation method in the interface is fragmentMolecule() which requires a molecule represented by an IAtomContainer object as input and returns a list of fragments represented by the same class.