created base classes for domain layer