Implementing DDD, CQRS and Event Sourcing