'The base load method, loads the configuration
:param cnf: The configuration as a dictionary
:param metadata_construction: Is this only to be able to construct
metadata. If so some things can be left out.
:return: The Configuration instance'

def load(self, cnf, metadata_construction=False):

    _uc = self.unicode_convert
    for arg in COMMON_ARGS:
        if (arg == 'virtual_organization'):
            if ('virtual_organization' in cnf):
                for (key, val) in cnf['virtual_organization'].items():
                    self.vorg[key] = VirtualOrg(None, key, val)
            continue
        elif (arg == 'extension_schemas'):
            if ('extension_schemas' in cnf):
                for mod_file in cnf['extension_schemas']:
                    _mod = self._load(mod_file)
                    self.extension_schema[_mod.NAMESPACE] = _mod
        try:
            setattr(self, arg, _uc(cnf[arg]))
        except KeyError:
            pass
        except TypeError:
            setattr(self, arg, cnf[arg])
    if ('service' in cnf):
        for typ in ['aa', 'idp', 'sp', 'pdp', 'aq']:
            try:
                self.load_special(cnf['service'][typ], typ, metadata_construction=metadata_construction)
                self.serves.append(typ)
            except KeyError:
                pass
    if ('extensions' in cnf):
        self.do_extensions(cnf['extensions'])
    self.load_complex(cnf, metadata_construction=metadata_construction)
    self.context = self.def_context
    return self
