Weapon framework