enhance(controllers): encapsulate with interfaces
Is your feature related to a problem? Please describe.
The view does not need to know how the code in the controller is implemented.
Describe the solution you'd like.
Encapsulate the code in the controllers with interfaces and use implementations of these.