def _get_instances(self, klass, add_info=None, params=dict()):
        results = []
        additionnal_info_dicts = []
        tag = klass._TAG
        if tag is None:
            tag = klass.__name__.lower()
        root = self.get(self.get_uri(klass._URI), params=params)
        while params.get('start-index') is None:  # Loop over all pages.
            for node in root.findall(tag):
                results.append(klass(self, uri=node.attrib['uri']))
                info_dict = {}
                for attrib_key in node.attrib:
                    info_dict[attrib_key] = node.attrib['uri']
                for subnode in node:
                    info_dict[subnode.tag] = subnode.text
                additionnal_info_dicts.append(info_dict)
            node = root.find('next-page')
            if node is None: break
            root = self.get(node.attrib['uri'], params=params)
        if add_info:
            return results, additionnal_info_dicts
        else:
            return results