lots of model1 changes, almost rewritten