added traversal functions