diff --git a/modules/bindings/doc/bindings.rst b/modules/bindings/doc/bindings.rst
index fc5357608c5a09becf40ba13b0ebed59fe634769..744f6059c6d736c6a2c2eaa57bdae979b9c7c286 100644
--- a/modules/bindings/doc/bindings.rst
+++ b/modules/bindings/doc/bindings.rst
@@ -17,3 +17,4 @@ So far, the binding module includes:
   blast
   msms
   tmtools
+  clustalw
diff --git a/modules/bindings/doc/clustalw.rst b/modules/bindings/doc/clustalw.rst
new file mode 100644
index 0000000000000000000000000000000000000000..a7f738d5e5e3a2fe71e48cb9a07874cc4078ded1
--- /dev/null
+++ b/modules/bindings/doc/clustalw.rst
@@ -0,0 +1,8 @@
+:mod:`~ost.bindings.clustalw` - Perform multiple sequence alignment
+================================================================================
+
+.. module:: ost.bindings.clustalw
+  :synopsis: Perform multiple sequence alignment
+
+
+.. autofunction:: ost.bindings.clustalw.ClustalW
diff --git a/modules/bindings/pymod/clustalw.py b/modules/bindings/pymod/clustalw.py
index 2c2fd6ebac5cf580dd1a259cb087a0ada9a127c4..0204cd8ccc9a51962ccbef257676341c43b4cd7c 100644
--- a/modules/bindings/pymod/clustalw.py
+++ b/modules/bindings/pymod/clustalw.py
@@ -5,6 +5,46 @@ import subprocess
 
 def ClustalW(seq1, seq2=None, clustalw=None, keep_files=False, nopgap=False, 
              clustalw_option_string=False):
+  '''
+  Runs a clustalw multiple sequence alignment. The results are returned as a
+  :class:`~ost.seq.AlignmentHandle` instance.
+  
+  There are two ways to use this function:
+  
+   - align exactly two sequences:
+   
+      :param seq1: sequence_one
+      :type seq1: :class:`~ost.seq.SequenceHandle` or :class:`str`
+      
+      :param seq2: sequence_two
+      :type seq2: :class:`~ost.seq.SequenceHandle` or :class:`str`
+  
+      The two sequences can be specified as two separate function parameters 
+      (`seq1`, `seq2`). The type of both parameters can be either
+      :class:`~ost.seq.SequenceHandle` or :class:`str`, but must be the same for
+      both parameters.
+      
+   - align two or more sequences:
+   
+      :param seq1: sequence_list
+      :type seq1: :class:`~ost.seq.SequenceList`
+      
+      :param seq2: must be :class:`None`
+      
+      Two or more sequences can be specified by using a
+      :class:`~ost.seq.SequenceList`. It is then passed as the first function 
+      parameter (`seq1`). The second parameter (`seq2`) must be :class:`None`.
+      
+       
+  :param clustalw: path to clustalw executable (used in :func:`~ost.settings.Locate`)
+  :type clustalw: :class:`str`
+  :param nopgap: turn residue-specific gaps off
+  :type nopgap: :class:`bool`
+  :param clustalw_option_string: additional clustalw flags (see http://toolkit.tuebingen.mpg.de/clustalw/help_params)
+  :type clustalw_option_string: :class:`str`
+  :param keep_files: do not delete temporary files
+  :type keep_files: :class:`bool`
+  '''
   clustalw_path=settings.Locate(('clustalw', 'clustalw2'), 
                                 explicit_file_name=clustalw)