refactored weapon classes to simplify their implementations