Moved to an event-driven model