re-designed data model