first pass at models and views