def tag_create(self, label, instances=None, domains=None, nodebalancers=None,
                   volumes=None, entities=[]):
        linode_ids, nodebalancer_ids, domain_ids, volume_ids = [], [], [], []
        sorter = zip((linode_ids, nodebalancer_ids, domain_ids, volume_ids),
                     (instances, nodebalancers, domains, volumes))
        for id_list, input_list in sorter:
            if input_list is not None:
                for cur in input_list:
                    if isinstance(cur, int):
                        id_list.append(cur)
                    else:
                        id_list.append(cur.id)
        type_map = {
            Instance: linode_ids,
            NodeBalancer: nodebalancer_ids,
            Domain: domain_ids,
            Volume: volume_ids,
        }
        for e in entities:
            if type(e) in type_map:
                type_map[type(e)].append(e.id)
            else:
                raise ValueError('Unsupported entity type {}'.format(type(e)))
        params = {
            'label': label,
            'linodes': linode_ids or None,
            'nodebalancers': nodebalancer_ids or None,
            'domains': domain_ids or None,
            'volumes': volume_ids or None,
        }
        result = self.post('/tags', data=params)
        if not 'label' in result:
            raise UnexpectedResponseError('Unexpected response when creating Tag!', json=result)
        t = Tag(self, result['label'], result)
        return t