data model - refactored