Implement Domain Layer