internal static IEnumerator <bool> load_cache()
        {
            yield return(true);

            if (!File.Exists(CraftDataCache.cache_path))
            {
                CraftManager.log("pre-generating craft data cache");
                CraftData.load_craft_from_files(CraftManager.main_ui.active_save_dir);
            }
            else if (CraftData.cache == null)
            {
                CraftData.cache = new CraftDataCache();
            }
        }
 //load/reload craft from the active_save_dir and apply any active filters
 public void refresh()
 {
     CraftData.load_craft_from_files(active_save_dir == all_saves_ref ? null : active_save_dir);
     filter_craft();
 }