work on generalizing NavigationController