Initial code:

Contains the logic of the base Model and the validation logic,
Minimal tests are included.