Reworked event dispatching