'Provides'

def process_data(self, iterator, start_val=0, max_vals=None, **kwargs):

    no_detail = ('no_detail' in kwargs)
    rval = []
    message = None
    for (count, line) in enumerate(iterator):
        if (count < start_val):
            continue
        if (max_vals and ((count - start_val) >= max_vals)):
            message = (self.error_max_vals % (max_vals, 'features'))
            break
        feature = line.split()
        payload = [hash(line), int(feature[1]), int(feature[2])]
        if no_detail:
            rval.append(payload)
            continue
        payload.extend([feature[3], feature[5], int(feature[1]), int(feature[2]), None, float(feature[4]), float(feature[6]), float(feature[7]), float(feature[8])])
        rval.append(payload)
    return {'data': rval, 'message': message}
