updated controller, model, and view