decoupled controllers/view controllers -- added delegate support