split domain-project into api and impl => part I