perhaps separate this into separate methods that handle different parts of the model.