<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def changeKey(self, **kwargs):
 """Change a variable of the thing. Mostly included for future additions. :param key: The value you want to change :param value: The new value :param thing: a string with the name of the thing, which is then checked using getThings. :param thingUri: Uri (string) of the thing you are getting the state from, not checked against getThings. :return: a dict with the state of the Thing. :raises: ValueError if the requested thing does not exists or the position is not between 0 and 100. NameError if not logged in. SyntaxError when not exactly one of the params is given. """

        login_return = self._is_logged_in()
        #check the thing being changed
        if "thingUri" in kwargs:
            thingUri = kwargs['thingUri']
        elif "thing" in kwargs:
            thing = kwargs['thing']
            for t in self._getThings():
                if 'NAME' in t:
                    if  t['NAME'] == thing and 'thingUri' in t:
                        thingUri = t['thingUri']
                        break
                    else:
                        raise ValueError('Unknown thing: ' + thing)
                else:
                    raise ValueError('No things available.')
        else:
            return SyntaxError("Please provide either the 'thing' name or the 'thingUri' not both and at least one")

        if 'key' in kwargs:
            key = kwargs['key']
        else:
            raise SyntaxError("Please provide a key to change")

        if 'value' in kwargs:
            value = kwargs['value']
        else:
            raise SyntaxError("Please provide a value to change to")

        if key.lower().find('position'):
            if int(value) < 0 or int(value) > 100:
                return ValueError("Please set the position between 0 and 100.")

        #prepare data payload
        data = {
            "data": {
                str(key): str(value)
            },
            "path": "/thing" + thingUri,
            "host": "https://thing.brunt.co:8080"
        }
        
        #call the request method and return the response.
        resp = self._http.request(data, RequestTypes.PUT)
        resp.update(login_return)
        return resp