The controller is an intermediary actor between the view and the model. It is in charge of retrieving input – primarily from the view – and feeding an appropriately transformed form of the input to the model. It is also in charge of updating the view with data whenever the need arises: