base classes for creating a Domain-Driven-Design Layer