Weapon refactors (#64)