def clone(self, to_linode=None, region=None, service=None, configs=[], disks=[],
            label=None, group=None, with_backups=None):
        if to_linode and region:
            raise ValueError('You may only specify one of "to_linode" and "region"')
        if region and not service:
            raise ValueError('Specifying a region requires a "service" as well')
        if not isinstance(configs, list) and not isinstance(configs, PaginatedList):
            configs = [configs]
        if not isinstance(disks, list) and not isinstance(disks, PaginatedList):
            disks = [disks]
        cids = [ c.id if issubclass(type(c), Base) else c for c in configs ]
        dids = [ d.id if issubclass(type(d), Base) else d for d in disks ]
        params = {
            "linode_id": to_linode.id if issubclass(type(to_linode), Base) else to_linode,
            "region": region.id if issubclass(type(region), Base) else region,
            "type": service.id if issubclass(type(service), Base) else service,
            "configs": cids if cids else None,
            "disks": dids if dids else None,
            "label": label,
            "group": group,
            "with_backups": with_backups,
        }
        result = self._client.post('{}/clone'.format(Instance.api_endpoint), model=self, data=params)
        if not 'id' in result:
            raise UnexpectedResponseError('Unexpected response cloning Instance!', json=result)
        l = Instance(self._client, result['id'], result)
        return l