diff --git a/src/bmconfigparser.py b/src/bmconfigparser.py
index 726d32eb..7f28d1b8 100644
--- a/src/bmconfigparser.py
+++ b/src/bmconfigparser.py
@@ -43,8 +43,10 @@ BMConfigDefaults = {
 
 @Singleton
 class BMConfigParser(ConfigParser.SafeConfigParser):
-    """Singleton class inherited from ConfigParser.SafeConfigParser
-    with additional methods specific to bitmessage config."""
+    """
+    Singleton class inherited from :class:`ConfigParser.SafeConfigParser`
+    with additional methods specific to bitmessage config.
+    """
 
     _temp = {}
 
diff --git a/src/singleton.py b/src/singleton.py
index 1eef08e1..5c6c43be 100644
--- a/src/singleton.py
+++ b/src/singleton.py
@@ -1,6 +1,21 @@
+"""
+Singleton decorator definition
+"""
+
+from functools import wraps
+
+
 def Singleton(cls):
+    """
+    Decorator implementing the singleton pattern:
+    it restricts the instantiation of a class to one "single" instance.
+    """
     instances = {}
+
+    # https://github.com/sphinx-doc/sphinx/issues/3783
+    @wraps(cls)
     def getinstance():
+        """Find an instance or save newly created one"""
         if cls not in instances:
             instances[cls] = cls()
         return instances[cls]