diff --git a/inventory_plugins/reconstructed.py b/inventory_plugins/reconstructed.py
index b35e7a8..1344e59 100644
--- a/inventory_plugins/reconstructed.py
+++ b/inventory_plugins/reconstructed.py
@@ -111,13 +111,35 @@ INSTR_FIELDS = {k: set(v + INSTR_COMMON_FIELDS) for k, v in INSTR_OWN_FIELDS.ite
 
 
 class VariableStorage(MutableMapping):
+    """Variable storage and cache.
+
+    This class implements storage for local variables, with the ability to save
+    some of them and then restore them. It also implements a cache that combines
+    both local variables and host facts.
+    """
+
     def __init__(self, host_vars):
+        """Initialize the cache using the specified mapping of host variables.
+
+        Args:
+            host_vars: the host variables
+        """
         self._host_vars = host_vars
         self._script_vars = {}
         self._script_stack = []
         self._cache = host_vars.copy()
 
     def _script_stack_push(self, variables):
+        """Push the state of some local variables to the stack.
+
+        This method will add a record containing the state of some variables to
+        the stack so it may be restored later. The state for a single variable
+        consists in a flag indicating whether the variable existed or not, and
+        its value if it did.
+
+        Args:
+            variables: an iterable of variable names whose state must be pushed
+        """
         data = {}
         for v in variables:
             if v in self._script_vars:
@@ -128,6 +150,13 @@ class VariableStorage(MutableMapping):
         self._script_stack.append(data)
 
     def _script_stack_pop(self):
+        """Restore the state of local variables from the stack.
+
+        This method will restore state entries that were saved by
+        :py:meth:`_script_stack_push`. Local variables that didn't exist then
+        will be deleted, while variables which actually existed will be
+        restored. The cache will be reset.
+        """
         restore = self._script_stack.pop()
         if not restore:
             return
@@ -141,6 +170,19 @@ class VariableStorage(MutableMapping):
         self._cache.update(self._script_vars)
 
     def _set_host_var(self, name, value):
+        """Set a host variable.
+
+        This method sets the value of a host variable in the appropriate
+        mapping, and updates the cache as will unless a local variable with the
+        same name exists.
+
+        Note: the actual inventory is not modified, only the local copy of
+        host variables is.
+
+        Args:
+            name: the name of the variable
+            value: the value of the variable
+        """
         self._host_vars[name] = value
         if name not in self._script_vars:
             self._cache[name] = value