Overworking models to make them more flexible, easier to write and to read.