diff --git a/bin/mutalyzer b/bin/mutalyzer
index 36af8af7aad61ccd8cea79c3ee8f4493822433c8..e61d6a6e074312eed39465516f3c3997494f35b8 100755
--- a/bin/mutalyzer
+++ b/bin/mutalyzer
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 Command-line interface to the nomenclature checker.
 
diff --git a/bin/mutalyzer-batchd b/bin/mutalyzer-batchd
index c6351f92a0b33b82ec4faa3ec14e59d9777f235b..868eafa933fe36a3e7681c2d9641c6d7840fb0f5 100755
--- a/bin/mutalyzer-batchd
+++ b/bin/mutalyzer-batchd
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 Daemon for processing scheduled batch jobs.
 
diff --git a/bin/mutalyzer-cache-sync b/bin/mutalyzer-cache-sync
index bca5c1d7399de40b78060f792ef50750cb6f97cd..405084ea16b373b3e0e161a1cc35cb03cb55432b 100755
--- a/bin/mutalyzer-cache-sync
+++ b/bin/mutalyzer-cache-sync
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 Synchronize the database cache with other Mutalyzer instances.
 
diff --git a/bin/mutalyzer-mapping-update b/bin/mutalyzer-mapping-update
index e46a89c4d7f723a665b03050371148ec8548aba4..cbc88ef27dab3c6f81854a91424605748df7e1dd 100755
--- a/bin/mutalyzer-mapping-update
+++ b/bin/mutalyzer-mapping-update
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 Update the database with mapping information from the NCBI.
 
diff --git a/bin/mutalyzer-webservice.wsgi b/bin/mutalyzer-webservice.wsgi
index e9e1a822a6f3b288b5462c47f4788a5aef9293a5..bc624da31f7e733ff61b899860ca67f6c2fafb2b 100755
--- a/bin/mutalyzer-webservice.wsgi
+++ b/bin/mutalyzer-webservice.wsgi
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 WSGI interface to the Mutalyzer SOAP webservice.
 
diff --git a/bin/mutalyzer-website.wsgi b/bin/mutalyzer-website.wsgi
index e6077d2a98fc86816b284475fe404b7ee9b6ec9e..be05dbb3e67e0bfb8c17762f2e001304a76eba8d 100755
--- a/bin/mutalyzer-website.wsgi
+++ b/bin/mutalyzer-website.wsgi
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 WSGI interface to the Mutalyzer website.
 
diff --git a/extras/migrations/001-db-gbinfo-add-created.migration b/extras/migrations/001-db-gbinfo-add-created.migration
index 309422e53d1faf953090f2bb7ce8e60995dc988b..26fd668a98012159486e81b7f6853f09cbf91e1e 100755
--- a/extras/migrations/001-db-gbinfo-add-created.migration
+++ b/extras/migrations/001-db-gbinfo-add-created.migration
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 Add a column and index 'created' to the 'GBInfo' table.
 
diff --git a/extras/migrations/002-db-map-to-mapping.migration b/extras/migrations/002-db-map-to-mapping.migration
index 8ee6bfb2558d38b78f39fa5725a58def0a8e30ab..be33512b1f774206b240b9cde2e05b573a8e0e38 100755
--- a/extras/migrations/002-db-map-to-mapping.migration
+++ b/extras/migrations/002-db-map-to-mapping.migration
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-
 """
 Convert the old 'map' tables to the new 'Mapping' tables.
 
diff --git a/extras/soap-tools/getCache.py b/extras/soap-tools/getCache.py
new file mode 100755
index 0000000000000000000000000000000000000000..cc8ecc18c20568193e0ae3da681537c4473f261d
--- /dev/null
+++ b/extras/soap-tools/getCache.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+"""
+Get cache entries from a Mutalyzer installation.
+
+Usage:
+  {command} days
+
+  days: Retrieve entries of at most this number of days old.
+
+The cache entries are retrieved from the Mutalyzer SOAP webservice and printed
+to standard output.
+"""
+
+
+from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
+
+import sys
+from datetime import datetime, timedelta
+from suds.client import Client
+
+from mutalyzer.util import format_usage
+
+
+WSDL_LOCATION = 'http://localhost/mutalyzer/services/?wsdl'
+
+
+def main(days):
+    """
+    Get cache entries and print them to standard output.
+    """
+    created_since = datetime.today() - timedelta(days=days)
+    service = Client(WSDL_LOCATION, cache=None).service
+    result = service.getCache(created_since)
+
+    if result:
+        for entry in result.CacheEntry:
+            print 'Entry %s created at %s' % (entry.name, entry.created)
+
+
+if __name__ == '__main__':
+    if len(sys.argv) != 2:
+        print format_usage()
+        sys.exit(1)
+    try:
+        main(int(sys.argv[1]))
+    except ValueError:
+        print 'First argument must be an integer'
+        sys.exit(1)
diff --git a/extras/soap-tools/getcache.py b/extras/soap-tools/getcache.py
deleted file mode 100755
index f40bc9abd0f7ebbadea314e0f95b06f509849d07..0000000000000000000000000000000000000000
--- a/extras/soap-tools/getcache.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-
-from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
-
-import sys
-from datetime import datetime, timedelta
-from suds.client import Client
-
-URL = 'http://localhost/mutalyzer/services/?wsdl'
-
-c = Client(URL, cache=None)
-o = c.service
-
-days = 1
-if len(sys.argv) > 1:
-    days = int(sys.argv[1])
-
-created_since = datetime.today() - timedelta(days=days)
-
-print 'Getting cache...'
-
-cache = o.getCache(created_since)
-
-if cache:
-    for r in cache.CacheEntry:
-        print r.name
-        if 'gi' in r:
-            print 'GI: %s' % r.gi
-        print 'Hash: %s' % r.hash
-        if 'chromosomeName' in r:
-            print r.chromosomeName
-        if 'chromosomeStart' in r:
-            print r.chromosomeStart
-        if 'chromosomeStop' in r:
-            print r.chromosomeStop
-        if 'chromosomeOrientation' in r:
-            print r.chromosomeOrientation
-        if 'url' in r:
-            print r.url
-        print 'Created: %s' % r.created
-        if 'cached' in r:
-            print 'Cached as %s' % r.cached
-        print
diff --git a/extras/soap-tools/getdbSNPDescriptions.py b/extras/soap-tools/getdbSNPDescriptions.py
new file mode 100755
index 0000000000000000000000000000000000000000..11cc54a803ec40804dc292e50a29ae74ed9fd745
--- /dev/null
+++ b/extras/soap-tools/getdbSNPDescriptions.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+"""
+Get HGVS descriptions for a dbSNP rs number.
+
+Usage:
+  {command} rs_number
+
+  rs_number: A valid dbSNP rs number, e.g. 'rs9919552'.
+
+The HGVS descriptions are retrieved from the Mutalyzer SOAP webservice and
+printed to standard output.
+"""
+
+
+from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
+
+import sys
+from suds.client import Client
+
+from mutalyzer.util import format_usage
+
+
+WSDL_LOCATION = 'http://localhost/mutalyzer/services/?wsdl'
+
+
+def main(rs_number):
+    """
+    Get HGVS descriptions and print them to standard output.
+    """
+    service = Client(WSDL_LOCATION, cache=None).service
+    result = service.getdbSNPDescriptions(rs_number)
+
+    if result:
+        for description in result.string:
+            print description
+
+
+if __name__ == '__main__':
+    if len(sys.argv) != 2:
+        print format_usage()
+        sys.exit(1)
+    main(sys.argv[1])
diff --git a/extras/soap-tools/getdbsnpdescription.py b/extras/soap-tools/getdbsnpdescription.py
deleted file mode 100755
index 81e999a5ea37caddc0cc589bf638354f334b3003..0000000000000000000000000000000000000000
--- a/extras/soap-tools/getdbsnpdescription.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python
-
-from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
-
-import sys
-from suds.client import Client
-
-URL = 'http://localhost/mutalyzer/services/?wsdl'
-
-if len(sys.argv) < 2:
-    print 'Please provide a dbSNP rs number'
-    sys.exit(1)
-
-c = Client(URL, cache=None)
-o = c.service
-
-# Example: rs9919552
-print 'Getting HGVS descriptions for ' + sys.argv[1] + ' ...'
-
-r = o.getdbSNPDescriptions(sys.argv[1])
-
-if r:
-    for description in r.string:
-        print description
diff --git a/extras/soap-tools/numberConversion.py b/extras/soap-tools/numberConversion.py
new file mode 100755
index 0000000000000000000000000000000000000000..f72fb5320b6410f00b2d1d28fff4681b41330f70
--- /dev/null
+++ b/extras/soap-tools/numberConversion.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+"""
+Convert a variant description from c. to g. notation or vice versa.
+
+Usage:
+  {command} build description
+
+  build: Human genome reference build to use, i.e. 'hg18' or 'hg19'.
+  description: Variant description to convert.
+
+The converted HGVS description(s) is (are) retrieved from the Mutalyzer SOAP
+webservice and printed to standard output.
+"""
+
+
+from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
+
+import sys
+from suds.client import Client
+
+from mutalyzer.util import format_usage
+
+
+WSDL_LOCATION = 'http://localhost/mutalyzer/services/?wsdl'
+
+
+def main(build, description):
+    """
+    Convert variant description from c. to g. notation or vice versa.
+    """
+    service = Client(WSDL_LOCATION, cache=None).service
+    result = service.numberConversion(build, description)
+
+    if result:
+        for description in result.string:
+            print description
+    else:
+        print 'No descriptions returned.'
+
+
+if __name__ == '__main__':
+    if len(sys.argv) != 3:
+        print format_usage()
+        sys.exit(1)
+    main(*sys.argv[1:])
diff --git a/extras/soap-tools/positionconvert.py b/extras/soap-tools/positionconvert.py
deleted file mode 100755
index 2bbea9e9932a01cd9aa0509ce252bcd27f594c45..0000000000000000000000000000000000000000
--- a/extras/soap-tools/positionconvert.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env python
-
-# Usage:
-#   ./positionconvert.py hg18 'NC_000011.9:g.111959695G>T'
-
-from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
-
-import sys
-from suds.client import Client  # https://fedorahosted.org/suds/
-
-URL = 'http://localhost/mutalyzer/services/?wsdl'
-
-if len(sys.argv) < 3:
-    print 'Please provide a human genome build and a variant'
-    sys.exit(1)
-
-c = Client(URL)
-o = c.service
-
-print 'Running position converter for variant ' + sys.argv[1] + ' ...\n'
-
-r = o.numberConversion(sys.argv[1], sys.argv[2])
-
-if r:
-    for v in r.string:
-        print v
-else:
-    print 'No variants returned.'
diff --git a/extras/soap-tools/sliceChromosomeByGene.py b/extras/soap-tools/sliceChromosomeByGene.py
new file mode 100755
index 0000000000000000000000000000000000000000..698a927cfd5a155c9d7484813c843ffc7b0f381c
--- /dev/null
+++ b/extras/soap-tools/sliceChromosomeByGene.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+"""
+Create a slice of a chromosome by gene.
+
+Usage:
+  {command} gene
+
+  gene: Gene symbol of the gene to slice.
+
+A slice containing the gene with 5000 upstream bases and 2000 downstream bases
+is created with the Mutalyzer SOAP webservice. The resulting UD number is
+printed to standard output.
+"""
+
+
+from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
+
+import sys
+from suds.client import Client
+from suds import WebFault
+
+from mutalyzer.util import format_usage
+
+
+WSDL_LOCATION = 'http://localhost/mutalyzer/services/?wsdl'
+
+
+def main(gene):
+    """
+    Slice chromosome by gene and print UD number to standard output.
+    """
+    service = Client(WSDL_LOCATION, cache=None).service
+
+    try:
+        print service.sliceChromosomeByGene(gene, 'Human', 5000, 2000)
+    except WebFault as message:
+        print message
+
+
+if __name__ == '__main__':
+    if len(sys.argv) != 2:
+        print format_usage()
+        sys.exit(1)
+    main(sys.argv[1])
diff --git a/extras/soap-tools/slicechromosomebygene.py b/extras/soap-tools/slicechromosomebygene.py
deleted file mode 100755
index dacbb134e1ae839fc9a97dbe0deca18f2e4ee609..0000000000000000000000000000000000000000
--- a/extras/soap-tools/slicechromosomebygene.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python
-
-from mutalyzer.util import monkey_patch_suds; monkey_patch_suds()
-
-import sys
-from suds.client import Client
-from suds import WebFault
-
-URL = 'http://localhost/mutalyzer/services/?wsdl'
-
-if len(sys.argv) < 2:
-    print 'Please provide a gene symbol'
-    sys.exit(1)
-
-c = Client(URL, cache=None)
-o = c.service
-
-print 'Slicing chromosome for gene ' + sys.argv[1] + ' (Human, 5000 upstream, 2000 downstream) ...'
-
-try:
-    r = o.sliceChromosomeByGene(sys.argv[1], 'Human', 5000, 2000)
-    print r
-except WebFault as message:
-    print message
diff --git a/mutalyzer/__init__.py b/mutalyzer/__init__.py
index 8728f32fdeccdfe4c716cfbb1f54397cb0355992..07ce56981c9808d1bf5c419858cac68a6f97ca96 100644
--- a/mutalyzer/__init__.py
+++ b/mutalyzer/__init__.py
@@ -1,4 +1,6 @@
-"""HGVS variant nomenclature checker."""
+"""
+HGVS variant nomenclature checker.
+"""
 
 
 import os