Refactor methods to allow more delegation to the model and view