implement most models, only a few dynamic ones left to do