refactoring traverse