refactor events
specs written for all events