rewrote the event system to be faster. stop using bacon