Separated out the Event from controller while maintaining usability.

Events now live in a separate structure and cannot be directly accessed.