refactoring weapon classes