refactor weapons