refactor: event raising implementation