First cut rewrite of Event system