add repository pattern, services, interfcaes, and separete business logic from the Domain to the Aplication layer