controller and view layer philosophy