GenericWeapon almost finished
merge