[50%] abstract cqrs