event-driven design for navigation