@Override
    public boolean setShip(Ship shipToPlace) {

        boolean canPlace = canPlaceShip(shipToPlace);

        // add ship
        if (canPlace) {
            // if already in list update 
            Iterator<Ship> shipIterator = ships.iterator();
            while (shipIterator.hasNext()) {
                Ship old = shipIterator.next();
                if (old.equals(shipToPlace)) {
                    ArrayList<Field> fields = old.getFields();
                    for (Field f : fields) {
                        f.setShip(null);
                    }
                    // remove list
                    old.getFields().clear();
                    shipIterator.remove();
                    break;
                }
            }
            ships.add(shipToPlace);
            buildFinalFieldList();
        }
        return canPlace;
    }