some changes to ensure that the view can't alter the model