also return view data.
add location method in ControllerAbstract.
and use it in the controllers.
use message and error methods in the controller,
instead of using view object directly.