def _syndic_return(self, load):
        '''
        Receive a syndic minion return and format it to look like returns from
        individual minions.

        :param dict load: The minion payload
        '''
        loads = load.get('load')
        if not isinstance(loads, list):
            loads = [load]  # support old syndics not aggregating returns
        for load in loads:
            # Verify the load
            if any(key not in load for key in ('return', 'jid', 'id')):
                continue
            # if we have a load, save it
            if load.get('load'):
                fstr = '{0}.save_load'.format(self.opts['master_job_cache'])
                self.mminion.returners[fstr](load['jid'], load['load'])

            # Register the syndic
            syndic_cache_path = os.path.join(self.opts['cachedir'], 'syndics', load['id'])
            if not os.path.exists(syndic_cache_path):
                path_name = os.path.split(syndic_cache_path)[0]
                if not os.path.exists(path_name):
                    os.makedirs(path_name)
                with salt.utils.files.fopen(syndic_cache_path, 'w') as wfh:
                    wfh.write('')

            # Format individual return loads
            for key, item in six.iteritems(load['return']):
                ret = {'jid': load['jid'],
                       'id': key}
                ret.update(item)
                if 'master_id' in load:
                    ret['master_id'] = load['master_id']
                if 'fun' in load:
                    ret['fun'] = load['fun']
                if 'arg' in load:
                    ret['fun_args'] = load['arg']
                if 'out' in load:
                    ret['out'] = load['out']
                if 'sig' in load:
                    ret['sig'] = load['sig']
                self._return(ret)