overhaul events subsystem