Refactoring how Domain events are published and consumed