def load(self, filename, create = None, default_conf = {}):
        """Load the config file

        Args:
            filename (str): the filename of the config, without any path
            create (str): if the config file not found, and this parameter is not None,
                          a config file will be create with content of default_conf
            default_conf (dict): content of the default config data

        Returns:
            Return value of the ConfigFormatter.decode or the default_conf value

        Raises:
            ConfigFileNotFoundException: if the config file not found

        """
        filenames, tries = self.__search_config_files(filename)

        if len(filenames):
            self.__loaded_config_file = filenames if self.__nested else filenames[0]
            return self.__load_config_files(filenames if self.__nested else filenames[:1])

        if create is not None:
            self.__loaded_config_file = os.path.join(create, filename)
            self.save(default_conf)
            return default_conf

        raise ConfigFileNotFoundException("Config file not found in: %s" % tries)