better separation of event sourcing components