halfway through event refactoring