first pass on pp model