split out traversal
preparing for repo split