diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
index ba75c63..6899bed 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
@@ -102,4 +102,29 @@
 
         return sb.toString();
     }
+
+    /**
+     * @see #preorderIterator()
+     */
+    public Iterator iterator()
+    {
+        return preorderIterator();
+    }
+
+    /**
+     * @see DependencyTreePreorderIterator
+     */
+    public Iterator preorderIterator()
+    {
+        return new DependencyTreePreorderIterator( this );
+    }
+
+    /**
+     * @see DependencyTreeInverseIterator
+     */
+    public Iterator inverseIterator()
+    {
+        return new DependencyTreeInverseIterator( this );
+    }
+
 }
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java
index c620195..6c41774 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java
@@ -40,6 +40,12 @@
 
     // constructors -----------------------------------------------------------
 
+    /**
+     * Create a tree initialized to the arguments
+     * 
+     * @param rootNode
+     * @param nodes
+     */
     public DependencyTree( DependencyNode rootNode, Collection nodes )
     {
         this.rootNode = rootNode;
@@ -62,7 +68,7 @@
     {
         List artifacts = new ArrayList();
 
-        Iterator it = nodes.iterator();
+        Iterator it = getNodes().iterator();
         while ( it.hasNext() )
         {
             DependencyNode node = (DependencyNode) it.next();
@@ -78,26 +84,26 @@
     }
 
     /**
-     * @see #preorderIterator()
+     * @see DependencyNode#iterator()
      */
     public Iterator iterator()
     {
-        return preorderIterator();
+        return getRootNode().iterator();
     }
 
     /**
-     * @see DependencyTreePreorderIterator
+     * @see DependencyNode#preorderIterator()
      */
     public Iterator preorderIterator()
     {
-        return new DependencyTreePreorderIterator( getRootNode() );
+        return getRootNode().preorderIterator();
     }
 
     /**
-     * @see DependencyTreeInverseIterator
+     * @see DependencyNode#inverseIterator()
      */
     public Iterator inverseIterator()
     {
-        return new DependencyTreeInverseIterator( getRootNode() );
+        return getRootNode().inverseIterator();
     }
 }
