another pass at normalizing model/schema