Event API refactoring (WIP)

Refactors the Event API to include some of the changes discussed with Kevin