reworking the data model, the DAO layer and the unit tests