refactor navigation