diff --git a/extras/config.example b/extras/config.example
index 33ebc4c3cf387ea7eeea9877db993396a4e11432..62bf3ce30edb865a31f1a21c174f5c0fc99497ae 100644
--- a/extras/config.example
+++ b/extras/config.example
@@ -122,7 +122,6 @@ PIDfile = "/var/run/mutalyzer/mutalyzer-batchd.pid"
 batchInputMaxSize = 5
 
 # The output header for NameChecking
-# Todo: migration for restriction sites
 nameCheckOutHeader = "Input", "Errors | Messages", "AccNo", "Genesymbol", "Variant", "Reference Sequence Start Descr.", "Coding DNA Descr.", "Protein Descr.", "GeneSymbol Coding DNA Descr.", "GeneSymbol Protein Descr.", "Genomic Reference", "Coding Reference", "Protein Reference", "Affected Transcripts", "Affected Proteins", "Restriction Sites Created", "Restriction Sites Deleted"
 
 # The output header for SyntaxChecking
diff --git a/extras/config.user.example b/extras/config.user.example
index 92dd1d4b39840fd0cce0d30efd2521df74c55e1e..fe0887d72c6b17bc0c0e00f51a435ef9cb46ed29 100644
--- a/extras/config.user.example
+++ b/extras/config.user.example
@@ -4,6 +4,9 @@
 # Copy this file to ~/.config/mutalyzer/config to overwrite definitions from
 # /etc/mutalyzer.config.
 
+# Use this email address for retrieval of records at the NCBI.
+email = "mutalyzer@humgen.nl"
+
 # The cache directory.
 cache = "/home/<USERNAME>/.cache/mutalyzer"
 
diff --git a/mutalyzer/config.py b/mutalyzer/config.py
index 29ea9e07494b221c37e9e483a0c7fbe162344db6..0627927cacee381a91033a666f8f8ba17c477779 100644
--- a/mutalyzer/config.py
+++ b/mutalyzer/config.py
@@ -106,8 +106,58 @@ class _Config():
         if not config:
             raise ConfigurationError('Could not locate configuration.')
 
-        try:
+        # We define default values for many configuration settings (except for
+        # some that are mandatory for the user to define, i.e. those in the
+        # extras/config.user.example file).
+        # Todo: Do not duplicate default values here and in the example config
+        #     file template.
+        config.setdefault('cachesize', 50)
+        config.setdefault('maxDldSize', 10)
+        config.setdefault('minDldSize', 512)
+        config.setdefault('lrgurl', 'ftp://ftp.ebi.ac.uk/pub/databases/lrgex/')
+        config.setdefault('internalDb', 'mutalyzer')
+        config.setdefault('dbNames', ['hg18', 'hg19', 'mm10'])
+        config.setdefault('defaultDb', 'hg19')
+        config.setdefault('LocalMySQLuser', 'mutalyzer')
+        config.setdefault('LocalMySQLhost', 'localhost')
+        config.setdefault('autoReconnect', False)
+        config.setdefault('proteinLinkLifetime', 30)
+        config.setdefault('proteinLinkNoneLifetime', 5)
+        config.setdefault('datestring', '%Y-%m-%d %H:%M:%S')
+        config.setdefault('loglevel', 3)
+        config.setdefault('outputlevel', 1)
+        config.setdefault('debug', True)
+        config.setdefault('flanksize', 25)
+        config.setdefault('maxvissize', 25)
+        config.setdefault('flankclipsize', 6)
+        config.setdefault('mailFrom', 'noreply@humgen.nl')
+        config.setdefault('mailSubject', 'Result of Mutalyzer batch check.')
+        config.setdefault('resultsDir', config['cache'])
+        config.setdefault('PIDfile', '/var/run/mutalyzer/mutalyzer-batchd.pid')
+        config.setdefault('batchInputMaxSize', 5)
+        config.setdefault('nameCheckOutHeader',
+            ['Input', 'Errors | Messages', 'AccNo', 'Genesymbol', 'Variant',
+             'Reference Sequence Start Descr.', 'Coding DNA Descr.',
+             'Protein Descr.', 'GeneSymbol Coding DNA Descr.',
+             'GeneSymbol Protein Descr.', 'Genomic Reference',
+             'Coding Reference', 'Protein Reference', 'Affected Transcripts',
+             'Affected Proteins', 'Restriction Sites Created',
+             'Restriction Sites Deleted'])
+        config.setdefault('syntaxCheckOutHeader', ['Input', 'Status'])
+        config.setdefault('positionConverterOutHeader',
+            ['Input Variant', 'Errors', 'Chromosomal Variant', 'Coding Variant(s)'])
+        config.setdefault('snpConverterOutHeader',
+            ['Input Variant', 'HGVS description(s)', 'Errors | Messages'])
+        config.setdefault('bufSize', 32768)
+        config.setdefault('header', ['AccNo', 'Genesymbol', 'Mutation'])
+        config.setdefault('threshold', 0.05)
+        config.setdefault('spliceAlarm', 2)
+        config.setdefault('spliceWarn', 5)
+        config.setdefault('piwik', False)
+        config.setdefault('piwikBase', 'https://piwik.example.com')
+        config.setdefault('piwikSite', 1)
 
+        try:
             # We explicitely read all configuration values ad store them in
             # our own dictionary. This makes sure we notice missing or
             # incorrect values upon instantiation.
@@ -116,7 +166,7 @@ class _Config():
             self._values = {'autoReconnect': config.as_bool('autoReconnect'),
                             'debug':         config.as_bool('debug'),
                             'piwik':         config.as_bool('piwik'),
-                            'threshold':     float(config['threshold'])}
+                            'threshold':     config.as_float('threshold')}
 
             # Simple string values.
             for name in ('email', 'cache', 'lrgurl', 'internalDb', 'dbNames',
@@ -133,11 +183,11 @@ class _Config():
                          'maxvissize', 'flankclipsize', 'bufSize',
                          'spliceAlarm', 'spliceWarn', 'piwikSite',
                          'proteinLinkLifetime', 'proteinLinkNoneLifetime'):
-                self._values[name] = int(config[name])
+                self._values[name] = config.as_int(name)
 
             # File sizes (given in megabytes, stored in bytes).
             for name in ('cachesize', 'maxDldSize', 'batchInputMaxSize'):
-                self._values[name] = int(config[name]) * 1048576
+                self._values[name] = config.as_int(name) * 1048576
 
         except KeyError as e:
             raise ConfigurationError('Missing configuration value: %s' % e)