refactoring events cascade