cleaned up traversal methods