Navigation refactor