rewrote traversal methods