added functional Weapon Class