Add event-based architecture