sorted out recursive traversal