diff --git a/cmd/path-traversal/path_traversal.go b/cmd/path-traversal/path_traversal.go
index ede0a2137c9484d25839a89b5b7f6e42c232fefd..9952b95896c93721134b7ea829fcf60693140fba 100644
--- a/cmd/path-traversal/path_traversal.go
+++ b/cmd/path-traversal/path_traversal.go
@@ -11,6 +11,22 @@ type PathElement struct {
 	Name     string
 }
 
+func (p *PathElement)Print()  {
+	printPE(0, p)
+}
+
+func printPE(indent int, pe *PathElement) {
+	for i := 0; i < indent; i++ {
+		fmt.Print("    ")
+	}
+	fmt.Println(pe.Name)
+	if len(pe.Children) > 0 {
+		for _,p := range pe.Children {
+			printPE(indent+1, p)
+		}
+	}
+}
+
 func main() {
 	tree := schema.SchemaTree
 	paths := make(map[string]*PathElement)
@@ -18,11 +34,12 @@ func main() {
 	for k,v := range tree {
 		if v.Parent != nil {
 			if v.Parent.Name == "device" {
-				paths[k] = processEntry(v)
+				pathElement := processEntry(v)
+				pathElement.Print()
+				paths[k] = pathElement
 			}
 		}
 	}
-	fmt.Println("stop")
 }
 
 func processEntry(e *yang.Entry) *PathElement {
@@ -31,9 +48,10 @@ func processEntry(e *yang.Entry) *PathElement {
 			Children: make([]*PathElement, len(e.Dir)),
 			Name:     e.Name,
 		}
+		i := 0
 		for _,v := range e.Dir {
-			child :=  processEntry(v)
-			elem.Children = append(elem.Children, child)
+			elem.Children[i] =  processEntry(v)
+			i++
 		}
 		return elem
 	}