diff --git a/docs/conf.py b/docs/conf.py
index 8213b7e27e45886aed4af8f7762c80a0f5744ff5..5c664349ff241e5c63bc8626d69e4ae0d1b1bacb 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -15,7 +15,6 @@
 
 import sys
 import os
-import shlex
 from unittest.mock import MagicMock
 
 # If extensions (or modules to document with autodoc) are in another directory,
@@ -23,6 +22,7 @@ from unittest.mock import MagicMock
 # documentation root, use os.path.abspath to make it absolute, like shown here.
 #sys.path.insert(0, os.path.abspath('.'))
 sys.path.append(os.path.join(".."))
+
 # -- General configuration ------------------------------------------------
 
 # If your documentation needs a minimal Sphinx version, state it here.
@@ -43,9 +43,10 @@ class Mock(MagicMock):
     def __getattr__(cls, name):
             return Mock()
 
-MOCK_MODULES = ['libnacl', 'libnacl.sign']
-sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
-
+# BUG: trigger a recursion error when run with python 3...
+# MOCK_MODULES = ['libnacl', 'libnacl.sign']
+# sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
+#
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -71,9 +72,9 @@ author = 'caner & inso'
 # built documents.
 #
 # The short X.Y version.
-version = '0.12'
+version = '0.30.5'
 # The full version, including alpha/beta/rc tags.
-release = '0.12'
+release = '0.30.5'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -124,7 +125,7 @@ todo_include_todos = True
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
-html_theme = 'alabaster'
+#html_theme = 'alabaster'
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
@@ -153,7 +154,7 @@ html_theme = 'alabaster'
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+#html_static_path = ['_static']
 
 # Add any extra paths that contain custom files (such as robots.txt or
 # .htaccess) here, relative to this directory. These files are copied
diff --git a/docs/documents.rst b/docs/documents.rst
deleted file mode 100644
index 4c248c8b73ac7d132b46bbdef6027ba112a901f2..0000000000000000000000000000000000000000
--- a/docs/documents.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-Documents methods
-=================
-
-.. automodule:: duniterpy.documents.block
-   :members:
-   :special-members:
-   :exclude-members: __dict__,__weakref__
-
-.. automodule:: duniterpy.documents.certification
-   :members:
-   :special-members:
-   :exclude-members: __dict__,__weakref__
-
-.. automodule:: duniterpy.documents.document
-   :members:
-   :special-members:
-   :exclude-members: __dict__,__weakref__
-
-.. automodule:: duniterpy.documents.membership
-   :members:
-   :special-members:
-   :exclude-members: __dict__,__weakref__
-
-.. automodule:: duniterpy.documents.peer
-   :members:
-   :special-members:
-   :exclude-members: __dict__,__weakref__
-
-.. automodule:: duniterpy.documents.status
-   :members:
-   :special-members:
-   :exclude-members: __dict__,__weakref__
-
-.. automodule:: duniterpy.documents.transaction
-   :members:
-   :special-members:
-   :exclude-members: __dict__,__weakref__
\ No newline at end of file
diff --git a/docs/duniterpy.api.bma.network.rst b/docs/duniterpy.api.bma.network.rst
new file mode 100644
index 0000000000000000000000000000000000000000..050fbae5416cc8505f5556cb7ad3a78e86136093
--- /dev/null
+++ b/docs/duniterpy.api.bma.network.rst
@@ -0,0 +1,22 @@
+duniterpy.api.bma.network package
+=================================
+
+Submodules
+----------
+
+duniterpy.api.bma.network.peering module
+----------------------------------------
+
+.. automodule:: duniterpy.api.bma.network.peering
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: duniterpy.api.bma.network
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/duniterpy.api.bma.rst b/docs/duniterpy.api.bma.rst
new file mode 100644
index 0000000000000000000000000000000000000000..74e1d6fd8867f2710aba1f56055ac67bc23b946a
--- /dev/null
+++ b/docs/duniterpy.api.bma.rst
@@ -0,0 +1,70 @@
+duniterpy.api.bma package
+=========================
+
+Subpackages
+-----------
+
+.. toctree::
+
+    duniterpy.api.bma.network
+    duniterpy.api.bma.tx
+
+Submodules
+----------
+
+duniterpy.api.bma.api module
+----------------------------
+
+.. automodule:: duniterpy.api.bma.api
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.api.bma.blockchain module
+-----------------------------------
+
+.. automodule:: duniterpy.api.bma.blockchain
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.api.bma.node module
+-----------------------------
+
+.. automodule:: duniterpy.api.bma.node
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.api.bma.ud module
+---------------------------
+
+.. automodule:: duniterpy.api.bma.ud
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.api.bma.wot module
+----------------------------
+
+.. automodule:: duniterpy.api.bma.wot
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.api.bma.ws module
+---------------------------
+
+.. automodule:: duniterpy.api.bma.ws
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: duniterpy.api.bma
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/duniterpy.api.bma.tx.rst b/docs/duniterpy.api.bma.tx.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e16eb3f30b5d342adbe767c4f83df90447ed06e7
--- /dev/null
+++ b/docs/duniterpy.api.bma.tx.rst
@@ -0,0 +1,22 @@
+duniterpy.api.bma.tx package
+============================
+
+Submodules
+----------
+
+duniterpy.api.bma.tx.history module
+-----------------------------------
+
+.. automodule:: duniterpy.api.bma.tx.history
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: duniterpy.api.bma.tx
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/duniterpy.api.rst b/docs/duniterpy.api.rst
new file mode 100644
index 0000000000000000000000000000000000000000..67feec7f1a241e1f7d9b6e5ca933a4e4ea54fe9f
--- /dev/null
+++ b/docs/duniterpy.api.rst
@@ -0,0 +1,29 @@
+duniterpy.api package
+=====================
+
+Subpackages
+-----------
+
+.. toctree::
+
+    duniterpy.api.bma
+
+Submodules
+----------
+
+duniterpy.api.errors module
+---------------------------
+
+.. automodule:: duniterpy.api.errors
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: duniterpy.api
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/duniterpy.documents.rst b/docs/duniterpy.documents.rst
new file mode 100644
index 0000000000000000000000000000000000000000..750392d22646dc87004590ca6c06c3f2384ace74
--- /dev/null
+++ b/docs/duniterpy.documents.rst
@@ -0,0 +1,70 @@
+duniterpy.documents package
+===========================
+
+Submodules
+----------
+
+duniterpy.documents.block module
+--------------------------------
+
+.. automodule:: duniterpy.documents.block
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.documents.certification module
+----------------------------------------
+
+.. automodule:: duniterpy.documents.certification
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.documents.constants module
+------------------------------------
+
+.. automodule:: duniterpy.documents.constants
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.documents.document module
+-----------------------------------
+
+.. automodule:: duniterpy.documents.document
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.documents.membership module
+-------------------------------------
+
+.. automodule:: duniterpy.documents.membership
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.documents.peer module
+-------------------------------
+
+.. automodule:: duniterpy.documents.peer
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.documents.transaction module
+--------------------------------------
+
+.. automodule:: duniterpy.documents.transaction
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: duniterpy.documents
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/duniterpy.grammars.rst b/docs/duniterpy.grammars.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b99c644d91cc5c95434ccc71928da3c36c3223e9
--- /dev/null
+++ b/docs/duniterpy.grammars.rst
@@ -0,0 +1,22 @@
+duniterpy.grammars package
+==========================
+
+Submodules
+----------
+
+duniterpy.grammars.output module
+--------------------------------
+
+.. automodule:: duniterpy.grammars.output
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: duniterpy.grammars
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/duniterpy.key.rst b/docs/duniterpy.key.rst
new file mode 100644
index 0000000000000000000000000000000000000000..fb0d328568ccaf6c091d8b6fb3ff1067dcd2a7f8
--- /dev/null
+++ b/docs/duniterpy.key.rst
@@ -0,0 +1,46 @@
+duniterpy.key package
+=====================
+
+Submodules
+----------
+
+duniterpy.key.base58 module
+---------------------------
+
+.. automodule:: duniterpy.key.base58
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.key.encryption_key module
+-----------------------------------
+
+.. automodule:: duniterpy.key.encryption_key
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.key.signing_key module
+--------------------------------
+
+.. automodule:: duniterpy.key.signing_key
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+duniterpy.key.verifying_key module
+----------------------------------
+
+.. automodule:: duniterpy.key.verifying_key
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: duniterpy.key
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/duniterpy.rst b/docs/duniterpy.rst
new file mode 100644
index 0000000000000000000000000000000000000000..943b8d110ad03c26d80f25257a45e478d5d4ffb1
--- /dev/null
+++ b/docs/duniterpy.rst
@@ -0,0 +1,20 @@
+duniterpy package
+=================
+
+Subpackages
+-----------
+
+.. toctree::
+
+    duniterpy.api
+    duniterpy.documents
+    duniterpy.grammars
+    duniterpy.key
+
+Module contents
+---------------
+
+.. automodule:: duniterpy
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/generate.sh b/docs/generate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c67c6991f3aa991b2a21ba15f8f682e710da81c1
--- /dev/null
+++ b/docs/generate.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+# Infos how-to generate automatically all rst documents for a python package :
+# http://stackoverflow.com/questions/4616693/automatically-generating-documentation-for-all-python-package-contents
+
+# generate rst files of all the package
+sphinx-apidoc -o . ../duniterpy
+
+# generate HTML
+make html
diff --git a/docs/index.rst b/docs/index.rst
index 524cf6e4481fbc15a90a77ca6c9090944e058276..4531a0ce2290ab60fe96734a2ce833d9c5c7f4c7 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -4,7 +4,7 @@
    contain the root `toctree` directive.
 
 duniterpy : A python implementation of duniter API
-==============================================
+==================================================
 
 duniterpy is a library to develop an application for duniter.
 duniterpy helps to handle the following problem :
@@ -28,13 +28,12 @@ Contributions are welcome.
 
 
 Contents:
-========
+=========
 
 .. toctree::
-   :maxdepth: 2
-
-   documents
+   :glob:
 
+   modules
 
 Indices and tables
 ==================
diff --git a/docs/modules.rst b/docs/modules.rst
new file mode 100644
index 0000000000000000000000000000000000000000..be11485ab93f360e4581fe0594f3d6de4db598f5
--- /dev/null
+++ b/docs/modules.rst
@@ -0,0 +1,7 @@
+duniterpy
+=========
+
+.. toctree::
+   :maxdepth: 4
+
+   duniterpy