public void Unload()
        {
            Log.Info(Log.LogSource.PoxDB, "Database.Unload() called");
            if (!ready)
            {
                return;
            }
            // todo: what if it is loading?

            Champions.Clear();
            Abilities.Clear();
            Abilities_similar.Clear();
            Spells.Clear();
            Relics.Clear();
            Equipments.Clear();

            Factions.Clear();
            Races.Clear();
            Classes.Clear();
            Rarities.Clear();
            Expansions.Clear();
            AbilityNames.Clear();

            ready = false;
        }
        /*void SetupAbilityAbilities(Ability ab)
         * {
         *  foreach (int a in ab.DescriptionAbilities)
         *      ab.DescriptionAbilities_refs.Add(Abilities[a]);
         * }
         *
         * void SetupSpellAbilities(Spell s)
         * {
         *  foreach (int a in s.DescriptionAbilities)
         *      s.DescriptionAbilities_refs.Add(Abilities[a]);
         * }
         *
         * void SetupRelicAbilities(Relic r)
         * {
         *  foreach (int a in r.DescriptionAbilities)
         *      r.DescriptionAbilities_refs.Add(Abilities[a]);
         * }
         *
         * void SetupEquipmentAbilities(Equipment e)
         * {
         *  foreach (int a in e.DescriptionAbilities)
         *      e.DescriptionAbilities_refs.Add(Abilities[a]);
         * }*/

        void ResolveSimilarAbilities()
        {
            foreach (var kv in Abilities)
            {
                if (!Abilities_similar.ContainsKey(kv.Value.Name))
                {
                    Abilities_similar.Add(kv.Value.Name, new List <int>());
                }

                Abilities_similar[kv.Value.Name].Add(kv.Key);
            }
        }