adjusted traversal API