layer requires controller which requires the view