'expects a special set of keys'

def loadd(self, ava):

    if ('attributes' in ava):
        for (key, val) in ava['attributes'].items():
            self.attributes[key] = val
    try:
        self.tag = ava['tag']
    except KeyError:
        if (not self.tag):
            raise KeyError('ExtensionElement    must    have    a    tag')
    try:
        self.namespace = ava['namespace']
    except KeyError:
        if (not self.namespace):
            raise KeyError('ExtensionElement    must    belong    to    a    namespace')
    try:
        self.text = ava['text']
    except KeyError:
        pass
    if ('children' in ava):
        for item in ava['children']:
            self.children.append(ExtensionElement(item['tag']).loadd(item))
    return self
