refactored navigation logic to be more fool-proof