further refine traverse