Some work on events, more later (hopefully)