impl the navigation controller logic, make views dispatch