add more Javadoc
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java b/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java
index ea80d69..508b4d7 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/BaseConstructor.java
@@ -14,6 +14,7 @@
 import java.util.Stack;
 
 import org.yaml.snakeyaml.composer.Composer;
+import org.yaml.snakeyaml.composer.ComposerException;
 import org.yaml.snakeyaml.nodes.MappingNode;
 import org.yaml.snakeyaml.nodes.Node;
 import org.yaml.snakeyaml.nodes.NodeTuple;
@@ -48,11 +49,21 @@
         this.composer = composer;
     }
 
+    /**
+     * Check if more documents available
+     * 
+     * @return true when there are more YAML documents in the stream
+     */
     public boolean checkData() {
         // If there are more documents available?
         return composer.checkNode();
     }
 
+    /**
+     * Construct and return the next document
+     * 
+     * @return constructed instance
+     */
     public Object getData() {
         // Construct and return the next document.
         composer.checkNode();
@@ -61,6 +72,13 @@
         return constructDocument(node);
     }
 
+    /**
+     * Ensure that the stream contains a single document and construct it
+     * 
+     * @return constructed instance
+     * @throws ComposerException
+     *             in case there are more documents in the stream
+     */
     public Object getSingleData() {
         // Ensure that the stream contains a single document and construct it
         Node node = composer.getSingleNode();
@@ -71,6 +89,14 @@
         return null;
     }
 
+    /**
+     * Construct complete YAML document. Call the second step in case of
+     * recursive structures. At the end cleans all the state.
+     * 
+     * @param node
+     *            root Node
+     * @return Java instance
+     */
     private Object constructDocument(Node node) {
         Object data = constructObject(node);
         while (!toBeConstructedAt2ndStep.isEmpty()) {
@@ -96,6 +122,14 @@
         return data;
     }
 
+    /**
+     * Construct object from the specified Node. Return existing instance if the
+     * node is already constructed.
+     * 
+     * @param node
+     *            Node to be constructed
+     * @return Java instance
+     */
     protected Object constructObject(Node node) {
         if (constructedObjects.containsKey(node)) {
             return constructedObjects.get(node);
@@ -114,6 +148,13 @@
         return data;
     }
 
+    /**
+     * Create Java instance from the specified Node
+     * 
+     * @param node
+     *            Node to be constructed
+     * @return Java instance
+     */
     protected Object callConstructor(Node node) {
         return getConstructor(node).construct(node);
     }
@@ -122,6 +163,14 @@
         getConstructor(node).construct2ndStep(node, object);
     }
 
+    /**
+     * Get the constructor to construct the Node. The constructor is chosen by
+     * the Node's tag.
+     * 
+     * @param node
+     *            Node to be constructed
+     * @return Construct implementation for the Node's tag
+     */
     private Construct getConstructor(Node node) {
         Construct constructor = yamlConstructors.get(node.getTag());
         if (constructor == null) {