reworked events model