refactor and complete tests up to weapon choice