Refactored navigation into composite pattern