Trying to tidy a few things up, event processing simplified