def update(self, d, ignore_errors=True, block_user_signals=False):
        """
        Supply a dictionary or databox with a header of the same format
        and see what happens! (Hint: it updates the existing values.)
        
        This will store non-existent key-value pairs in the dictionary 
        self._lazy_load. When you add settings in the future,
        these will be checked for the default values.
        """
        if not type(d) == dict: d = d.headers

        # Update the lazy load
        self._lazy_load.update(d)

        # loop over the dictionary and update
        for k in list(self._lazy_load.keys()):

            # Only proceed if the parameter exists
            if not self._find_parameter(k.split('/'), False, True) == None:

                # Pop the value so it's not set again in the future
                v = self._lazy_load.pop(k)
                self._set_value_safe(k, v, ignore_errors, block_user_signals)

        return self
Supply a dictionary or databox with a header of the same format
        and see what happens! (Hint: it updates the existing values.)
        
        This will store non-existent key-value pairs in the dictionary 
        self._lazy_load. When you add settings in the future,
        these will be checked for the default values.