Revamp the API generated from the Domain Model

This pull request implements the changes mentioned in #94.

Due to the nature of these changes, this request must be carefully reviewed.