AbstractWeapon class added