began using generic traversal