Refactored Domain Model.
Refactored application structure.