def load_observations((observations, regex, rename), path, filenames):
    """
    Returns a provisional name based dictionary of observations of the object.
    Each observations is keyed on the date. ie. a dictionary of dictionaries.

    :rtype : None
    :param observations: dictionary to store observtions into
    :param path: the directory where filenames are.
    :param filenames: list of files in path.
    """

    for filename in filenames:
        if re.search(regex, filename) is None:
            logging.warning("Skipping {}".format(filename))
            continue
        print os.path.join(path,filename)
        obs = mpc.MPCReader().read(os.path.join(path,filename))
        for ob in obs:
            if rename:
                new_provisional_name = os.path.basename(filename)
                new_provisional_name = new_provisional_name[0:new_provisional_name.find(".")]
                ob.provisional_name = new_provisional_name
                # ob.comment.name = new_provisional_name
            key1 = "{:.5f}".format(ob.date.mjd)
            key2 = ob.provisional_name 
            if key1 not in observations:
                 observations[key1] = {}
            if key2 in observations[key1]:
               if observations[key1][key2]:
                   continue
               if not observation.null_observation:
                   logger.error(filename)
                   logger.error(line)
                   logger.error(str(observations[key1][key2]))
                   raise ValueError("conflicting observations for {} in {}".format(key2, key1))
            observations[key1][key2] = ob