Events

Initial work on events.

There are (knowingly) a number of TODOs that will happen at a later date