implements weapons experience. Big refactoring