Event refactor

Just a thought...

(note: this depends on #145)
But we could have a CHECK_NOTNULL here?