public Item equip(Item equipping, AbilitySet abilities) {
		Item replace = null;
		try {
			for (Field f : EquipmentSet.class.getFields()) {
				if (f.getClass().equals(equipping.getClass())) {
					replace = (Item) f.get(this);
					f.set(this, equipping);
				}
			}
		} catch (IllegalArgumentException e) {
			System.out.println("Item cannot be equipped.");
			return equipping;
		} catch (IllegalAccessException e) {
			// won't happen
		} if (equipping.getClass().getName().equals("Shield")) { 
			replace = offHand;
			offHand = null;
			offHandEq = false;
			shieldEq = true;
			abilities.offHand = shield.power;
			System.out.println("Offhand item removed and shield equipped.");
		} else if (equipping.getClass().getName().equals("OffHand")) {
			replace = shield;
			shield = null;
			shieldEq = false;
			offHandEq = true;
			abilities.offHand = offHand.power;
			System.out.println("Shield removed and offhand item equipped.");
		} else if (equipping.getClass().getName().equals("Weapon")) {
			abilities.main1 = mainHand.primary;
			abilities.main2 = mainHand.secondary;
		}
		return replace;
	}