diff --git a/modules/mol/alg/doc/molalg.rst b/modules/mol/alg/doc/molalg.rst
index 4eb0d9ea963021227b0583fabf152eac649edf2b..759903efc6b9d089086d8c2f3ecc200f9daac22c 100644
--- a/modules/mol/alg/doc/molalg.rst
+++ b/modules/mol/alg/doc/molalg.rst
@@ -37,60 +37,6 @@ Local Distance Test scores (lDDT, DRMSD)
 .. autoclass:: ost.mol.alg.lddt.CustomCompound
   :members:
 
-.. function:: CheckStructure(ent, \
-                             bond_table, \
-                             angle_table, \
-                             nonbonded_table, \
-                             bond_tolerance, \
-                             angle_tolerance)
-
-  Perform structural checks and filters the structure.
-
-  :param ent: Structure to check
-  :type ent: :class:`~ost.mol.EntityView`
-  :param bond_table: List of bond stereo chemical parameters obtained from
-    :class:`~ost.io.StereoChemicalParamsReader` or :func:`FillStereoChemicalParams`
-  :type bond_table: :class:`~ost.mol.alg.StereoChemicalParams`
-  :param angle_table: List of angle stereo chemical parameters obtained from
-    :class:`~ost.io.StereoChemicalParamsReader` or :func:`FillStereoChemicalParams`
-  :type angle_table: :class:`~ost.mol.alg.StereoChemicalParams`
-  :param nonbonded_table: Information about the clashing distances obtained from
-    :class:`~ost.io.StereoChemicalParamsReader` or :func:`FillClashingDistances`
-  :type nonbonded_table: :class:`~ost.mol.alg.ClashingDistances`
-  :param bond_tolerance: Tolerance in stddev for bonds
-  :type bond_tolerance: :class:`float`
-  :param angle_tolerance: Tolerance in stddev for angles
-  :type angle_tolerance: :class:`float`
-
-    
-.. class:: StereoChemicalProps(bond_table, angle_table, nonbonded_table)
-  
-  Object containing the stereo-chemical properties read form stereochmical_props.txt
-  file.
-
-  :param bond_table: Sets :attr:`bond_table`
-  :param angle_table: Sets :attr:`angle_table`
-  :param nonbonded_table: Sets :attr:`nonbonded_table`
-
-  .. attribute:: bond_table
-  
-    Object containing bond parameters
-    
-    :type: :class:`~ost.mol.alg.StereoChemicalParams`
-
-  .. attribute:: angle_table
-    
-    Object containing angle parameters
-    
-    :type: :class:`~ost.mol.alg.StereoChemicalParams`
-
-  .. attribute:: nonbonded_table
-    
-    Object containing clashing distances parameters
-    
-    :type: :class:`~ost.mol.alg.ClashingDistances`
-
-
 .. class:: lDDTSettings(radius=15, \
                         sequence_separation=0, \
                         cutoffs=(0.5, 1.0, 2.0, 4.0), \
@@ -137,6 +83,25 @@ Local Distance Test scores (lDDT, DRMSD)
     :rtype:  :class:`str`
 
 
+:mod:`stereochemistry <ost.mol.alg.stereochemistry>` -- Stereochemistry Checks
+--------------------------------------------------------------------------------
+
+.. warning::
+
+  Stereochemistry checks described in
+  `Mariani et al. <https://dx.doi.org/10.1093/bioinformatics/btt473>`_ are
+  considered deprecated. They have been re-implemented and now support
+  nucleotides. The old code is still available and documented
+  :doc:`here <stereochemistry_deprecated>`.
+
+.. automodule:: ost.mol.alg.stereochemistry
+   :members:
+   :member-order: bysource
+   :synopsis: Stereochemistry checks
+
+.. currentmodule:: ost.mol.alg
+
+
 :mod:`scoring <ost.mol.alg.scoring>` -- Specialized scoring functions
 --------------------------------------------------------------------------------
 
diff --git a/modules/mol/alg/pymod/stereochemistry.py b/modules/mol/alg/pymod/stereochemistry.py
index 39713accdfdb3cdb35c483eaa1b79e81306bb48e..e3f43691f19f224b524664af863e886165936952 100644
--- a/modules/mol/alg/pymod/stereochemistry.py
+++ b/modules/mol/alg/pymod/stereochemistry.py
@@ -170,9 +170,9 @@ def GetBondParam(a1, a2, stereo_data):
     """ Returns mean and standard deviation for bond
 
     :param a1: First atom that defines bond
-    :type a1: :class:`mol.AtomView`/:class:`mol.AtomHandle`
+    :type a1: :class:`ost.mol.AtomView`/:class:`ost.mol.AtomHandle`
     :param a2: Second atom that defines bond
-    :type a2: :class:`mol.AtomView`/:class:`mol.AtomHandle`
+    :type a2: :class:`ost.mol.AtomView`/:class:`ost.mol.AtomHandle`
     :param stereo_data: Stereochemistry data
     :type stereo_data: :class:`dict`
     :returns: :class:`tuple` with mean and standard deviation. Values are None
@@ -201,11 +201,11 @@ def GetAngleParam(a1, a2, a3, stereo_data):
     """ Returns mean and standard deviation for angle
 
     :param a1: First atom that defines angle
-    :type a1: :class:`mol.AtomView`/:class:`mol.AtomHandle`
+    :type a1: :class:`ost.mol.AtomView`/:class:`ost.mol.AtomHandle`
     :param a2: Second atom that defines angle
-    :type a2: :class:`mol.AtomView`/:class:`mol.AtomHandle`
-    :param a3: Second atom that defines angle
-    :type a3: :class:`mol.AtomView`/:class:`mol.AtomHandle`
+    :type a2: :class:`ost.mol.AtomView`/:class:`ost.mol.AtomHandle`
+    :param a3: Third atom that defines angle
+    :type a3: :class:`ost.mol.AtomView`/:class:`ost.mol.AtomHandle`
     :param stereo_data: Stereochemistry data
     :type stereo_data: :class:`dict`
     :returns: :class:`tuple` with mean and standard deviation. Values are None
@@ -244,7 +244,7 @@ def GetClashes(ent, vdw_radii = None, tolerance = 1.5, disulfid_dist = 2.03,
     The default values are not very sensitive.
 
     :param ent: Entity for which you want to identify clashing atoms
-    :type ent: :class:`EntityHandle`/:class:`EntityView`
+    :type ent: :class:`ost.mol.EntityHandle`/:class:`ost.mol.EntityView`
     :param vdw_radii: Element based van der Waals radii. Only atoms of these
                       elements will be considered. If not given, default values
                       for all elements occuring in proteins/nucleotides are
@@ -259,7 +259,7 @@ def GetClashes(ent, vdw_radii = None, tolerance = 1.5, disulfid_dist = 2.03,
     :param disulfid_tolerance: The respective tolerance
     :type disulfid_dist: :class:`float`
     :returns: A :class:`list` of pairs. Each pair consists of two
-              :class:`mol.AtomView` from *ent* that are clashing.
+              :class:`ost.mol.AtomView` from *ent* that are clashing.
     """
 
     if vdw_radii is None:
@@ -312,14 +312,14 @@ def GetBadBonds(ent, stereo_data = None, tolerance=12):
     """ Identify unrealistic bonds
 
     :param ent: Entity for which you want to identify unrealistic bonds
-    :type ent: :class:`mol.EntityHandle`/:class:`mol.EntityView`
+    :type ent: :class:`ost.mol.EntityHandle`/:class:`ost.mol.EntityView`
     :param stereo_data: Stereochemistry data
     :type stereo_data: :class:`dict`
     :param tolerance: Bonds that devaiate more than *tolerance* times standard
                       deviation from expected mean are considered bad
     :type tolerance: :class:`int`
     :returns: :class:`list` of pairs. Each pair consists of two
-              :class:`mol.AtomHandle` from *ent* that represent bad bonds.
+              :class:`ost.mol.AtomHandle` from *ent* that represent bad bonds.
 
     """
     assert("bond_data" in stereo_data)
@@ -339,14 +339,14 @@ def GetBadAngles(ent, stereo_data = None, tolerance=12):
     """ Identify unrealistic angles
 
     :param ent: Entity for which you want to identify unrealistic angles
-    :type ent: :class:`mol.EntityHandle`/:class:`mol.EntityView`
+    :type ent: :class:`ost.mol.EntityHandle`/:class:`ost.mol.EntityView`
     :param stereo_data: Stereochemistry data
     :type stereo_data: :class:`dict`
     :param tolerance: Angles that devaiate more than *tolerance* times standard
                       deviation from expected mean are considered bad
     :type tolerance: :class:`int`
     :returns: :class:`list` of tuples. Each tuple consists of three
-              :class:`mol.AtomHandle` from *ent* that represent bad angles.
+              :class:`ost.mol.AtomHandle` from *ent* that represent bad angles.
     """
     assert("angle_data" in stereo_data)
     return_list = list()