'Translates a list of new changed and deleted into
Add and remove instructions
:param new: list of new items
:param changed: list of tuples (from, to)
:param deleted: list of things to delete
:returns: a tuple with a list of items to remove and to add
**Example**::
new = [AggregatedActivity]
deleted = [AggregatedActivity]
changed = [(AggregatedActivity, AggregatedActivity)]
to_remove, to_delete = feed._translate_diff(new, changed, deleted)'

def _translate_diff(self, new, changed, deleted):

    error_format = 'please    only    send    aggregated    activities    not    %s'
    flat_changed = sum(map(list, changed), [])
    for aggregated_activity in itertools.chain(new, flat_changed, deleted):
        if (not isinstance(aggregated_activity, AggregatedActivity)):
            raise ValueError((error_format % aggregated_activity))
    to_remove = deleted[:]
    to_add = new[:]
    if changed:
        to_remove += [c[0] for c in changed]
        to_add += [c[1] for c in changed]
    return (to_remove, to_add)
