Event refactor

Just a thought...

(note: this depends on #145)
I'd keep the CHECK_NOTNULL, but not a big deal, just being a bit paranoid...