diff --git a/modules/mol/alg/pymod/superpose.py b/modules/mol/alg/pymod/superpose.py
index e41942d57a01a627ed6e71391118c2b2abc36c50..c748ae6e3526688e96ecb066cead4559ab54d5a4 100644
--- a/modules/mol/alg/pymod/superpose.py
+++ b/modules/mol/alg/pymod/superpose.py
@@ -231,13 +231,14 @@ def _MatchResidueByAln(ent_a, ent_b, atoms, alnmethod):
 
 def MatchResidueByLocalAln(ent_a, ent_b, atoms='all'):
   """
-  Match residues by local alignment. Takes **ent_a** and **ent_b**, extracts
-  the sequences chain-wise and aligns them in Smith/Waterman manner using the
-  BLOSUM62 matrix for scoring. The residues of the entities are then matched
-  based on this alignment. Only atoms present in both residues are included in
-  the views. Chains are processed in order of appearance. If **ent_a** and
-  **ent_b** contain a different number of chains, processing stops with
-  the lower count.
+  Match residues by local alignment. Takes **ent_a** and **ent_b**, extracts the
+  sequences chain-wise and aligns them in Smith/Waterman manner using the
+  BLOSUM62 matrix for scoring. Only residues which are marked as "protein" (see
+  :attr:`~ost.mol.ResidueHandle.is_protein`) are considered for alignment. The
+  residues of the entities are then matched based on this alignment. Only atoms
+  present in both residues are included in the views. Chains are processed in
+  order of appearance. If **ent_a** and **ent_b** contain a different number of
+  chains, processing stops with the lower count.
 
   :param ent_a: The first entity
   :type ent_a: :class:`~ost.mol.EntityView` or :class:`~ost.mol.EntityHandle`
@@ -252,13 +253,9 @@ def MatchResidueByLocalAln(ent_a, ent_b, atoms='all'):
 
 def MatchResidueByGlobalAln(ent_a, ent_b, atoms='all'):
   """
-  Match residues by global alignment. Takes **ent_a** and **ent_b**, extracts
-  the sequences chain-wise and aligns them in Needleman/Wunsch manner using the
-  BLOSUM62 matrix for scoring. The residues of the entities are then matched
-  based on this alignment. Only atoms present in both residues are included in
-  the views. Chains are processed in order of appearance. If **ent_a** and
-  **ent_b** contain a different number of chains, processing stops with
-  the lower count.
+  Match residues by global alignment.
+  Same as :func:`MatchResidueByLocalAln` but performs a global Needleman/Wunsch
+  alignment of the sequences using the BLOSUM62 matrix for scoring.
 
   :param ent_a: The first entity
   :type ent_a: :class:`~ost.mol.EntityView` or :class:`~ost.mol.EntityHandle`
@@ -272,7 +269,8 @@ def MatchResidueByGlobalAln(ent_a, ent_b, atoms='all'):
   return _MatchResidueByAln(ent_a, ent_b, atoms, ost.seq.alg.GlobalAlign)
 
 
-def Superpose(ent_a, ent_b, match='number', atoms='all', iterative=False, max_iterations=5, distance_threshold=3.0):
+def Superpose(ent_a, ent_b, match='number', atoms='all', iterative=False,
+              max_iterations=5, distance_threshold=3.0):
   """
   Superposes the model entity onto the reference. To do so, two views are
   created, returned with the result. *atoms* describes what goes into these
@@ -327,11 +325,9 @@ def Superpose(ent_a, ent_b, match='number', atoms='all', iterative=False, max_it
   elif match.upper() == 'INDEX':
     view_a, view_b = MatchResidueByIdx(ent_a, ent_b, atoms)
   elif match.upper() == 'LOCAL-ALN':
-    view_a, view_b = _MatchResidueByAln(ent_a, ent_b, atoms,
-                                        ost.seq.alg.LocalAlign)
+    view_a, view_b = MatchResidueByLocalAln(ent_a, ent_b, atoms)
   elif match.upper() == 'GLOBAL-ALN':
-    view_a, view_b = _MatchResidueByAln(ent_a, ent_b, atoms,
-                                        ost.seq.alg.GlobalAlign)
+    view_a, view_b = MatchResidueByGlobalAln(ent_a, ent_b, atoms)
   else:
     raise ValueError(not_supported)
   ## action