navigation refactoring