data model - first pass