code: def _load_features(root):
      
      out = collections.OrderedDict()
      for elem in root.findall('feature'):
          name = elem.attrib['name']
          api = elem.attrib['api']
          number = tuple([int(x) for x in elem.attrib['number'].split('.')])
          requires = [_load_require(x) for x in elem.findall('require')]
          removes = [_load_remove(x) for x in elem.findall('remove')]
          comment = elem.get('comment')
          out[name] = Feature(name, api, number, requires, removes, comment)
      return out
docs: Returns {name: Feature}