Refactor event stuff to new Event::* classes