Who's responsible for cutting up `data` calls? In theory this method could loop