def with_headers(self, headers=None, **params):
        """
        Add headers to the request.   
        
        :param headers: A dict, or a list of key, value pairs
        :param params: A dict of key value pairs   
        """        
        if isinstance(headers, (tuple, list)):
            headers = dict(headers)

        if params:
            if isinstance(headers, dict):
                headers.update(params)
            elif headers is None:
                headers = params

        self._headers.update(headers)
        return self