CQRS framework