CQRS and event sourcing can be applied independently. CQRS works well on its own. Event sourcing only makes sense if you also build query state from the event stream — which by definition is a CQRS implementation. Pašalić observed a system that event-sourced only for record keeping while reading and writing state directly from the command model 'to reduce complexity'; complexity actually grew significantly. Removing immediate state and applying CQRS proliferated many small focused classes that were easier to test and reason about.