pushes burden to the controller to select the right type of cell