moved more navigation-related code into page_navigator
huge refactoring, fix up page model