def intersects(self, key, include_self=False, exclusive=False, biggest_first=True, only=None):
        possibles = self.topology if only is None else {k: self[k] for k in only}
        if key == 'RoW' and 'RoW' not in self:
            return ['RoW'] if 'RoW' in possibles else []
        faces = self[key]
        lst = [
            (k, (len(v.intersection(faces)), len(v)))
            for k, v in possibles.items()
            if (faces.intersection(v))
        ]
        return self._finish_filter(lst, key, include_self, exclusive, biggest_first)