for traversals