reworked the data model