event-driven user controls