prefer self.comparator if one exists