diff --git a/modules/mol/mm/doc/integrators.rst b/modules/mol/mm/doc/integrators.rst
new file mode 100644
index 0000000000000000000000000000000000000000..641b5e16817d19dc9d4fb4fea5d125174fb7835d
--- /dev/null
+++ b/modules/mol/mm/doc/integrators.rst
@@ -0,0 +1,125 @@
+Integrators
+================================================================================
+
+.. currentmodule:: ost.mol
+
+The Integrators are a wrapper around the integrators provided by OpenMM and
+have to be attached to the :class:`Settings` when setting up a simulation
+to provide a way of making the thing shake.
+
+.. class:: VerletIntegrator
+
+  Implementation of Verlet dynamics
+
+
+
+.. class:: BrownianIntegrator
+
+  Implementation of Brownian dynamics
+
+  .. method:: GetTemperature()
+
+    :returns:           :class:`float`
+
+  .. method:: SetTemperature(temperature)
+
+    :param temperature: :class:`float`
+
+  .. method:: GetFriction()
+
+    :returns:           :class:`float`
+
+  .. method:: SetFriction(friction)
+
+    :param friction:    :class:`float`
+
+  .. method:: GetRandomNumberSeed()
+
+    :returns:          :class:`int`
+
+  .. method:: SetRandomNumberSeed(seed)
+
+    :param seed:        :class:`int`
+
+
+
+
+.. class:: LangevinIntegrator
+
+  Implementation of the Langevin dynamics
+
+  .. method:: GetTemperature()
+
+    :returns:         :class:`float`
+
+  .. method:: SetTemperature(temperature)
+
+    :param temperature: :class:`float`
+
+  .. method:: GetFriction()
+
+    :returns:           :class:`float`
+
+  .. method:: SetFriction(friction)
+
+    :param friction:    :class:`float`
+
+  .. method:: GetRandomNumberSeed()
+
+    :returns:          :class:`int`
+
+  .. method:: SetRandomNumberSeed(seed)
+
+    :param seed:        :class:`int`
+
+
+
+.. class:: VariableVerletIntegrator
+
+  Implementation of Verlet dynamics with variable time steps
+
+  .. method:: GetErrorTolerance()
+
+    :returns:           :class:`float`
+
+  .. method:: SetErrorTolerance(tol)
+
+    :param tol:         :class:`float`
+
+
+
+.. class:: VariableLangevinIntegrator
+
+  Implementation of Langevin dynamics with variable time steps
+
+  .. method:: GetTemperature()
+
+    :returns:         :class:`float`
+
+  .. method:: SetTemperature(temperature)
+
+    :param temperature: :class:`float`
+
+  .. method:: GetFriction()
+
+    :returns:           :class:`float`
+
+  .. method:: SetFriction(friction)
+
+    :param friction:    :class:`float`
+
+  .. method:: GetRandomNumberSeed()
+
+    :returns:          :class:`int`
+
+  .. method:: SetRandomNumberSeed(seed)
+
+    :param seed:        :class:`int`
+
+  .. method:: GetErrorTolerance()
+
+    :returns:           :class:`float`
+
+  .. method:: SetErrorTolerance()
+
+    :param tol:         :class:`float`
diff --git a/modules/mol/mm/doc/settings.rst b/modules/mol/mm/doc/settings.rst
new file mode 100644
index 0000000000000000000000000000000000000000..a26062ecf448d5cb282ca25c5d470d988c5f7977
--- /dev/null
+++ b/modules/mol/mm/doc/settings.rst
@@ -0,0 +1,253 @@
+The Molecular Mechanis Settings
+================================================================================
+
+.. currentmodule:: ost.mol
+
+The :class:`Settings` define all parameters to control the buildup of a 
+:class:`Topology` in the :class:`TopologyCreator` and the final setup
+of the :class:`Simulation` object.
+
+.. class:: Settings
+
+  .. attribute::        add_bonds  
+
+    Flag, whether bonds should be parametrized
+    in :class:`TopologyCreator`. default: True
+
+  .. attribute::        add_angles 
+
+    Flag, whether angles should be parametrized
+    in :class:`TopologyCreator`. default: True
+
+  .. attribute::        add_dihedrals 
+
+    Flag, whether dihedrals should be parametrized
+    in :class:`TopologyCreator`. default: True
+
+  .. attribute::        add_impropers 
+
+    Flag, whether impropers should be parametrized
+    in :class:`TopologyCreator`. default: True
+
+  .. attribute::        add_cmaps 
+
+    Flag, whether cmaps should be parametrized
+    in :class:`TopologyCreator`. default: True
+
+  .. attribute::        add_exclusions 
+
+    Flag, whether exclusions should be parametrized
+    in :class:`TopologyCreator`. default: True
+
+  .. attribute::        add_nonbonded
+
+    Flag, whether nonbonded interactions should be parametrized
+    in :class:`TopologyCreator`. default: True
+
+  .. attribute::        add_gbsa 
+
+    Flag, whether GBSA interactions should be parametrized
+    in :class:`TopologyCreator`. default: False
+
+  .. attribute::        constrain_hbonds
+
+    Flag, whether bonds involving hydrogens should be constraint
+    in :class:`TopologyCreator`. default: False
+
+  .. attribute::        constrain_bonds
+
+    Flag, whether all bonds should be constraint in 
+    :class:`TopologyCreator`. default: False
+
+  .. attribute::        rigid_water
+
+    Flag, whether water molecules should be made rigid in
+    :class:`TopologyCreator`. This is achieved by adding
+    a distance constraint on the the O-H bonds and an additional
+    one between the two hydrogens. default: False
+
+  .. attribute::        strict_interactions
+
+    Makes sure, that an error is thrown when a particular interaction cannot
+    be parametrized with the given forcefield in the :class:`TopologyCreator`. 
+    By setting it to False, these cases get just ignored. default: True
+
+  .. attribute::        ideal_bond_length_constraints
+
+    Flag, whether the ideal bond length from the :class:`Forcefield` should be
+    taken for distance constraints in the :class:`TopologyCreator`. 
+    :class:`Forcefield` should be taken. The actual distances from the 
+    :class:`EntityHandle` get taken otherwise. default: True
+
+  .. attribute::        fix_heavy_atoms
+
+    Flag, whether all heavy atom positions (non hydrogens) should be fixed in
+    space in the :class:`TopologyCreator`. default: False
+
+  .. attribute::        kill_electrostatics
+
+    Flag, whether all charges should just be set to zero in the
+    :class:`TopologyCreator`. default: False
+
+  .. attribute::        generate_disulfid_bonds
+
+    Flag, whether disulfid bonds based on a simple geometric criterion 
+    (SG-SG dist < 2.5A) should be built in :class:`TopologyCreator`. 
+    default: True
+
+  .. attribute::        nonbonded_method
+
+    Nonbonded method set up at the creation of the :class:`Simulation`.
+    must be one of mm.NoCutoff, mm.CutoffNonPeriodic, mm.CutoffPeriodic
+    mm.Ewald or mm.PME. default: mm.NoCutoff
+
+  .. attribute::        nonbonded_cutoff
+
+    Nonbonded cutoff set when simulation is set up. default: 10.0
+
+  .. attribute::        remove_cmm_motion
+
+    Whether a center of mass remover object should be attached to the
+    :class:`Simulation`. default: True
+
+  .. attribute::        cmm_frequency
+
+    Frequency regarding simulationsteps when the cmm remover should be applied.
+    default: 1
+
+  .. attribute::        periodic_box_extent
+
+    :class:`ost.geom.Vec3` describing the X,Y and Z extents of the rectangular
+    simulation_box defined when setting up the :class:`Simulation`. 
+    default: (0,0,0)
+
+  .. attribute::        init_temperature
+
+    Initial simulation velocities get set according to a Boltzman distribution
+    controlled by init_temperature(Kelvin). default: 0.0
+
+  .. attribute::        forcefield
+
+    :class:`Forcefield` that is used in :class:`TopologyCreator`. default: None
+
+  .. attribute::        termini_exceptions
+
+    Use termini other than the defaults set in the :class:`Forcefield` when
+    using :class:`TopologyCreator`. Has to be a :class:`TerminiExceptions`
+    object. default: None
+
+  .. attribute::        platform
+
+    Platform used by OpenMM to do the calculations. Must be one of mm.Reference,
+    mm.CPU, mm.CUDA or mm.OpenCL. If anything else than the reference platform 
+    is used, the attribute openmm_plugin_directory has to be set accordingly.
+    default: mm.Reference
+
+  .. attribute::        add_thermostat
+
+    Flag, whether an Andersen thermostat should be attached when settings up
+    the :class:`Simulation`. default: False
+
+  .. attribute::        thermostat_temperature
+
+    Temperature for the Andersen thermostat. default: NaN
+
+  .. attribute::        thermostat_collision_frequency
+
+    Collision frequency of the Andersen thermostat. default: NaN
+
+  .. attribute::        add_barostat
+
+    Flag, whether an  MonteCarlo barostat should be attached when settings up
+    the :class:`Simulation`. default: False
+
+  .. attribute::        barostat_temperature
+
+    Temperature for the MonteCarlo Barostat. default: NaN
+
+  .. attribute::        barostat_pressure
+
+    Pressure for the MonteCarlo Barostat. default: NaN
+
+  .. attribute::        barostat_frequency
+
+    Frequency of the MonteCarlo Barostat. default: 25
+
+  .. attribute::        integrator
+
+    Integrator to move the simulation forward in time. OpenMM offers following
+    Integrators: :class:`VerletIntegrator`, :class:`BrownianIntegrator`,
+    :class:`LangevinIntegrator`, :class:`VariableVerletIntegrator` and
+    :class:`VariableLangevinIntegrator`. default: None
+
+  .. attribute::        solvent_dielectric
+
+    Solvent dielectric constant. This is used for the GBSA force when the 
+    :class:`Simulation` gets set up. default: 78.3
+
+  ..  attribute::       solute_dielectric
+
+    Solute dielectric constant. This is used for the GBSA force when the
+    :class:`Simulation` gets set up. default: 1.0
+
+  .. attribute::        reaction_field_dielecric
+
+    Sets the reaction field dielectric for the Nonbonded Force when setting
+    up the :class:`Simulation`. default: 78.3
+
+  .. attribute::        use_dispersion_correction
+
+    Flag, whether the dispersion correction should be used when setting
+    up the Nonbonded Force in the :class:`Simulation`. default: True
+
+  .. attribute::        keep_ff_specific_naming
+
+    When running through the :class:`TopologyCreator`, the given ent gets 
+    renamed to the forcefield specific naming. If set to true, the naming
+    stays like that, if not the entity gets renamed to PDB standard.
+    default: True
+
+  .. attribute::        openmm_plugin_directory
+
+    Path, where OpenMM specific plugins are searched. Especially if you want
+    to use other platforms than reference, this has to be set.
+    default: "/usr/local/openmm/lib/plugins"
+
+  .. attribute::        custom_plugin_directory
+
+    Path, where custom plugins are searched. 
+    default: "/usr/local/openmm/lib/plugins"
+
+
+
+
+.. class:: TerminiExceptions
+  
+  Can be used to define exceptions from the standard assignments
+  assigned in the :class:`Forcefield`. 
+
+  .. method::           SetException(res, exception_name)
+
+    :param res:         :class:`ResidueHandle` for which the exception
+                        should be set.
+
+    :param exception_name:    :class:`str` describing the name of the
+                        Blockmodifier in the forcefield that should be
+                        applied in case of a termini
+
+  .. method::           HasException(res)
+
+    :param res:         :class:`ResidueHandle` that should be checked for 
+                        exceptions
+
+    :returns:           :class:`bool` True if res has an exception
+
+  .. method::           GetException(res)
+
+    :param res:         :class:`ResidueHandle` containing the exception
+
+    :raises:            :class:`RuntimeError` if res has no associated exception
+
+    :returns:           :class:`str` describint the name of the Blockmodifier in
+                        the forcefield, that should be applied in case of a 
+                        termini
diff --git a/modules/mol/mm/doc/topology.rst b/modules/mol/mm/doc/topology.rst
index ef20c0f4704b21b4cdac46472b2de8c60c732b1b..5fb169e76eea21d677883bf831a8fab3993963bb 100644
--- a/modules/mol/mm/doc/topology.rst
+++ b/modules/mol/mm/doc/topology.rst
@@ -23,8 +23,25 @@ that should suffice most needs.
     based on the information given by the :class:`Settings`/:class:`Forcefield`.
 
     :param entity:      :class:`EntityHandle`
+
     :param settings:    :class:`Settings`
 
+    :raises:            :class:`RuntimeError` if settings has no 
+                        :class:`Forcefield` assigned
+
+    :raises:            :class:`RuntimeError` if there is a residue with no
+                        appropriate :class:`BuildingBlock` in the 
+                        :class:`Forcefield`
+
+    :raises:            :class:`RuntimeError` if there is a 
+                        :class:`ResidueHandle` not matching the
+                        :class:`BuildingBlock` definition in the
+                        :class:`Forcefield`
+
+    :raises:            :class:`RuntimeError` if there is an interaction,
+                        that has no parameters in the forcefield. This 
+                        :class:`RuntimeError` can be supressed by the 
+                        according flag in the :class:`Settings` object.
 
 .. class:: Topology