def try_heuristics(objects, fun):
    """ 
        fun must return either a string or None
    """
    names = []
    for o in objects:
        name = fun(o)
        names.append(name)
        if name is None:
            return None
    if len(names) == len(set(names)):
        return names
    return None
