Adding the required abstractions for CQRS

Complete and Continue