refactoring event add remove