public Holdable removeStackedItem(Character itemID, int count) throws InvalidKeyException {
		Holdable item;
		Holdable returnItem;
		if(weapons.containsKey(itemID)) {
			item = weapons.get(itemID);
			// If the item is stackable then just reduce the stack count
			returnItem = item.reduceStack(count);
			// Only if the stack has hit 0 do we actually remove the item
			if (item.stackSize() == 0) {
				weapons.remove(itemID);
				size--;
			}
		} else if (armours.containsKey(itemID)) {
			item = armours.get(itemID);
			returnItem = item.reduceStack(count);
			if (item.stackSize() == 0) {
				armours.remove(itemID);
				size--;
			}
		} else if (foods.containsKey(itemID)) {
			item = foods.get(itemID);
			returnItem = item.reduceStack(count);
			if (item.stackSize() == 0) {
				foods.remove(itemID);
				size--;
			}
		} else if (misc.containsKey(itemID)) {
			item = misc.get(itemID);
			returnItem = item.reduceStack(count);
			if (item.stackSize() == 0) {
				misc.remove(itemID);
				size--;
			}
		} else {
			throw new InvalidKeyException();
		}
		return returnItem;
	}