Abstracting the views with a common interface: IViewProvider
Merge apply() logic into the body of the controller
Change ApplicationResult from failure() to success()
Refactoring repeated getViewResult() to the bottom of the controller
Adding comment on catching missing resume on the try/catch
Moving model hashmap out of the controller and into the views