refactor newWeapon, newSubsystem