factored out logic to subclasses of UITableView and UITableViewCells