Domain Driven Design Pattern