private void addStone(int x, int y, PlayerColor player) {
		Stone newStone = new Stone(x,y,player);
		intersections[y][x].setOccupant(newStone);
		boolean newStoneIsUnconnected = true;
		
		Set<StoneGroup> oldGroups = new HashSet<>();
		oldGroups.add(newStone.getGroup());
		for (Intersection i : intersections[y][x].getNeighbors()){
			if (i.isOccupied() && i.getOccupant().getOwner().equals(player)){
				oldGroups.add(i.getOccupant().getGroup());
				newStone.connect(i.getOccupant());
				newStoneIsUnconnected = false;
			}
		}
		
		//wait till after new stone group is finalized
		for (Intersection i : intersections[y][x].getNeighbors()){
			if (i.isOccupied() && !i.getOccupant().getOwner().equals(player)){
				newStone.getGroup().addSurroundingStoneGroups(i.getOccupant().getGroup());
				i.getOccupant().getGroup().addSurroundingStoneGroups(newStone.getGroup());
			}
		}
		
		oldGroups.remove(newStone.getGroup());
		activeStoneGroups.removeAll(oldGroups);
		
		
		if (newStoneIsUnconnected){
			activeStoneGroups.add(newStone.getGroup());
		}
		
	}