public ModifierEntry(Addon a, string _name) {
			this.addon = a;

			// prevent modifier_modifier names
			name = new Pair("DOTA_Tooltip_" + _name, getVal(_name));

			// Noya says modifier tooltips are like this DOTA_Tooltip_some_modifier
			/*if (_name.Length > 8)
			{
				if (_name.Substring(0, 8) == "modifier")
				{
					name = new Pair("DOTA_Tooltip_" + _name, getVal(_name));
				}
			}*/

			description = new Pair(name.key + "_Description", "");
		}
		public HeroEntry(Addon a, string overrideHeroName, string name) {
			this.addon = a;
			try {
				// remove the npc_dota_hero part for the value.
				//this.name = new Pair(overrideHeroName, getVal(overrideHeroName.Substring(14)));
				this.name = new Pair(overrideHeroName, getVal(name));
			} catch (IndexOutOfRangeException) {
				this.name = new Pair(overrideHeroName, "");
			}
		}
		public AbilityEntry(Addon a, string _name, List<string> keys) {
			this.addon = a;
			name = new Pair("DOTA_Tooltip_ability_" + _name, getVal(_name));
			description = new Pair(name.key + "_Description", "");
			note0 = new Pair(name.key + "_Note0", "");
			lore = new Pair(name.key + "_Lore", "");

			if (keys != null) {
				abilitySpecials = new List<Pair>(keys.Count());
				for (int i = 0; i < keys.Count(); i++) {
					string abilSpecial = keys.ElementAt(i);
					abilitySpecials.Add(new Pair(name.key + "_" + abilSpecial, getAbilSpecialVal(abilSpecial)));
				}
			}
		}
		public UnitEntry(Addon a, string _name) {
			this.addon = a;
			name = new Pair(_name, getVal(_name));
		}