@Override
  public PlayerAbilities swapAbilityScores(int strength, int intelligence, int wisdom, int dexterity,
                                           int constitution, int charisma) {
    List<Integer> scores = new ArrayList<Integer>();
    scores.add(abilities.getStrength());
    scores.add(abilities.getIntelligence());
    scores.add(abilities.getWisdom());
    scores.add(abilities.getDexterity());
    scores.add(abilities.getConstitution());
    scores.add(abilities.getCharisma());

    PlayerAbilities swappedAbilities = new PlayerAbilities();
    if (scores.contains(strength)) {
      swappedAbilities.setStrength(strength);
      scores.remove(new Integer(strength));
    } else {
      throw new RuntimeException("Can only swap one of the existing scores.");
    }
    if (scores.contains(intelligence)) {
      swappedAbilities.setIntelligence(intelligence);
      scores.remove(new Integer(intelligence));
    } else {
      throw new RuntimeException("Can only swap one of the existing scores.");
    }
    if (scores.contains(wisdom)) {
      swappedAbilities.setWisdom(wisdom);
      scores.remove(new Integer(wisdom));
    } else {
      throw new RuntimeException("Can only swap one of the existing scores.");
    }
    if (scores.contains(dexterity)) {
      swappedAbilities.setDexterity(dexterity);
      scores.remove(new Integer(dexterity));
    } else {
      throw new RuntimeException("Can only swap one of the existing scores.");
    }
    if (scores.contains(constitution)) {
      swappedAbilities.setConstitution(constitution);
      scores.remove(new Integer(constitution));
    } else {
      throw new RuntimeException("Can only swap one of the existing scores.");
    }
    if (scores.contains(charisma)) {
      swappedAbilities.setCharisma(charisma);
      scores.remove(new Integer(charisma));
    } else {
      throw new RuntimeException("Can only swap one of the existing scores.");
    }
    abilities = swappedAbilities;
    return abilities;
  }