Refactor: adding new domain layer