add range traversal