synchronized  public void computeNewToDosAndEnd(BlockTuple newBlocks,Block splitted,Block notSplitted){
		//Füge zuerst in HashSet ein und vereinige died mit toDoList
		//sonst iterator überschreiben
		HashSet<BlockTuple> toAdd = new HashSet<BlockTuple>();
		HashSet<BlockTuple> toDel = new HashSet<BlockTuple>();
		Block nOne = newBlocks.getBlockOne();
		Block nTwo = newBlocks.getBlockTwo();
		partition.remove(splitted);
		if(splitted.equals(notSplitted))
			partition.remove(notSplitted);
		//existingBlocks.add(nOne);
		//existingBlocks.add(nTwo);
		//Füge zu toAdd die neun BlockTuple hinzu, diemit toDelete entstehe, da toDelete eventuell nicht 
		//mehr in der toDoList ist
		toAdd.add(new BlockTuple(nOne,nTwo));
		toAdd.add(new BlockTuple(nOne,nOne));
		toAdd.add(new BlockTuple(nTwo,nTwo));
		
		Block bOne;
		Block bTwo;
		//Berechne neue todos und markiere welche zu löschen sind
		for(BlockTuple b : toDoList){
			bOne = b.getBlockOne();
			bTwo = b.getBlockTwo();
			if(bOne.equals(splitted) || bTwo.equals(splitted))
				toDel.add(b);
		}
		for(Block b : partition){
			toAdd.add(new BlockTuple(nOne, b));
			toAdd.add(new BlockTuple(nTwo, b));
		}
		partition.add(nOne);
		partition.add(nTwo);
		//Füge Hinzu/lösche
		toDoList.addAll(toAdd);
		toDoList.removeAll(toDel);
		
		//Remove the Blocks from CurrentlyDone
		currentlyDoneList.remove(splitted);
		currentlyDoneList.remove(notSplitted);
		
		
		//workFinished muss gesetzt werden
		if(toDoList.isEmpty() && currentlyDoneList.isEmpty())
			workFinished = true;
		
		//Sage bescheid dass es neue ToDoS gibt
		notifyAll();
	}