refactored weapon
merge