diff --git a/docs/dev/source/architecture.rst b/docs/dev/source/architecture.rst
index 428532b7bacb34c41bdd441006532f123b741bf0..f8760083c971e0e907f5c4bc64cba146a4dbff42 100644
--- a/docs/dev/source/architecture.rst
+++ b/docs/dev/source/architecture.rst
@@ -32,6 +32,7 @@ Organisation of modules/packages
     |   |   |-- __init__.py
     |   |   |-- vm_tags.py
     |   |-- __init__.py
+    |   |-- jobs.py
     |   |-- lib.py
     |   |-- tags.py
     |-- __init__.py
@@ -48,10 +49,3 @@ Node
 
 .. automodule:: cloudcontrol.node.node
     :members:
-
-Tags
-----
-
-.. automodule:: cloudcontrol.node.tags
-    :members:
-
diff --git a/docs/dev/source/cold_migration.rst b/docs/dev/source/cold_migration.rst
new file mode 100644
index 0000000000000000000000000000000000000000..43862ff44125e278d1876491847b04e2f5218091
--- /dev/null
+++ b/docs/dev/source/cold_migration.rst
@@ -0,0 +1,4 @@
+Cold migration steps
+====================
+
+TODO
diff --git a/docs/dev/source/exc.rst b/docs/dev/source/exc.rst
new file mode 100644
index 0000000000000000000000000000000000000000..77af39579c9710c6c2631e1c40192e1b86d03245
--- /dev/null
+++ b/docs/dev/source/exc.rst
@@ -0,0 +1,5 @@
+Exceptions
+==========
+
+.. automodule:: cloudcontrol.node.exc
+    :members:
diff --git a/docs/dev/source/host.rst b/docs/dev/source/host.rst
index 361150ceca0a780c03b233029d9fbde5ce9d9614..8bef70a711cc9357e43e63a6bcaebb8ec14ab3c5 100644
--- a/docs/dev/source/host.rst
+++ b/docs/dev/source/host.rst
@@ -1,15 +1,14 @@
 Host
 ====
 
-Tags
-----
-
-.. automodule:: cloudcontrol.node.host.tags
-    :members:
-
 Handler
 -------
 
 .. autoclass:: cloudcontrol.node.host.Handler
     :members:
 
+Tags
+----
+
+.. automodule:: cloudcontrol.node.host.tags
+    :members:
diff --git a/docs/dev/source/migration.rst b/docs/dev/source/hot_migration.rst
similarity index 100%
rename from docs/dev/source/migration.rst
rename to docs/dev/source/hot_migration.rst
diff --git a/docs/dev/source/hypervisor.rst b/docs/dev/source/hypervisor.rst
index ff9a53f025dd518332cf6fa8d0b8844e8b27b9d2..a23276c2f195645afefeba28ad84aaf4af0ad6fc 100644
--- a/docs/dev/source/hypervisor.rst
+++ b/docs/dev/source/hypervisor.rst
@@ -1,4 +1,26 @@
 Hypervisor
 ==========
 
-TODO
+Hypervisor handler
+------------------
+
+.. autoclass:: cloudcontrol.node.hypervisor.Handler
+    :members:
+
+Hypervisor object
+-----------------
+
+.. autoclass:: cloudcontrol.node.hypervisor.Hypervisor
+    :members:
+
+Storage pools and volumes
+-------------------------
+
+.. autoclass:: cloudcontrol.node.hypervisor.StorageIndex
+    :members:
+
+.. autoclass:: cloudcontrol.node.hypervisor.Storage
+    :members:
+
+.. autoclass:: cloudcontrol.node.hypervisor.Volume
+    :members:
diff --git a/docs/dev/source/index.rst b/docs/dev/source/index.rst
index 8f29e69b34f5b992531239ccea21b085cdcc9c44..70d14730b218ad1b106cabad4658f8c45f165a2d 100644
--- a/docs/dev/source/index.rst
+++ b/docs/dev/source/index.rst
@@ -12,10 +12,18 @@ Contents:
    :maxdepth: 2
 
    architecture
+   tags
+   plugins
    host
+   libvirt
    hypervisor
-   migration
+   vm
+   jobs
+   cold_migration
+   hot_migration
    test
+   exc
+   utils
 
 Indices and tables
 ==================
diff --git a/docs/dev/source/jobs.rst b/docs/dev/source/jobs.rst
new file mode 100644
index 0000000000000000000000000000000000000000..97e8a549b95609c48cbf7bc90caf78637480cd2b
--- /dev/null
+++ b/docs/dev/source/jobs.rst
@@ -0,0 +1,26 @@
+Jobs
+====
+
+Jobs manager
+------------
+
+.. autoclass:: cloudcontrol.node.jobs.JobManager
+    :members:
+
+Abstract jobs
+-------------
+
+.. autoclass:: cloudcontrol.node.jobs.BaseThreadedJob
+    :members:
+
+.. autoclass:: cloudcontrol.node.jobs.ForkedJob
+    :members:
+
+.. autoclass:: cloudcontrol.node.jobs.BaseIOJob
+    :members:
+
+Hypervisor jobs
+---------------
+
+.. automodule:: cloudcontrol.node.hypervisor.jobs
+    :members:
diff --git a/docs/dev/source/libvirt.rst b/docs/dev/source/libvirt.rst
new file mode 100644
index 0000000000000000000000000000000000000000..63ca4b31eef2b0e97bcf800837e8bbb381427186
--- /dev/null
+++ b/docs/dev/source/libvirt.rst
@@ -0,0 +1,5 @@
+Libvirt
+=======
+
+.. automodule:: cloudcontrol.node.hypervisor.lib
+    :members:
diff --git a/docs/dev/source/plugins.rst b/docs/dev/source/plugins.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0c587a8a7255ba9b48d34f19e4f7d2061b6f03f4
--- /dev/null
+++ b/docs/dev/source/plugins.rst
@@ -0,0 +1,5 @@
+Plugins
+=======
+
+.. automodule:: cloudcontrol.node.plugins
+    :members:
diff --git a/docs/dev/source/tags.rst b/docs/dev/source/tags.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8c4a38780d529587e5892a9399a729fbb8d6fb58
--- /dev/null
+++ b/docs/dev/source/tags.rst
@@ -0,0 +1,5 @@
+Tags
+====
+
+.. automodule:: cloudcontrol.node.tags
+    :members:
diff --git a/docs/dev/source/utils.rst b/docs/dev/source/utils.rst
new file mode 100644
index 0000000000000000000000000000000000000000..783c6eb74083d8f98de1335e385547f0b1c1164a
--- /dev/null
+++ b/docs/dev/source/utils.rst
@@ -0,0 +1,5 @@
+Utils
+=====
+
+.. automodule:: cloudcontrol.node.utils
+    :members:
diff --git a/docs/dev/source/vm.rst b/docs/dev/source/vm.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d15d041df88f6686d32bfa0e15a8613ddb5e7130
--- /dev/null
+++ b/docs/dev/source/vm.rst
@@ -0,0 +1,14 @@
+Domains
+=======
+
+KVM virtual machines
+--------------------
+
+.. automodule:: cloudcontrol.node.hypervisor.domains
+    :members:
+
+KVM tags
+--------
+
+.. automodule:: cloudcontrol.node.hypervisor.domains.vm_tags
+    :members: