private UndirectedGraph<Vertex> multiStep(){
		initHistoricalControl();
		UndirectedGraph<Vertex> forReturn = graph.clone();
		UndirectedGraph<Vertex> forModification = null;
		rand = new Random();

		int x = 0, curColor;
		while(x < numChange){
			Vertex toChange;
			HashSet<Vertex> dis = new HashSet<Vertex>(disallowed.get(x));
			dis.addAll(currentChanges);
			if(forModification == null){forModification = graphs.get(x).clone();}
			toChange = findVertex(forModification, dis);

			if(toChange != null){
				disallowed.get(x).add(toChange);
				currentChanges.set(x, toChange);

				curColor = pushChange(forModification, toChange);

				if(x == numChange - 1){
					if(Main.getUncoloredCount(forModification) < Main.getUncoloredCount(forReturn)){
						forReturn = forModification;
					}
				} else {
					graphs.set(x, forModification);
					x++;
				}
			} else {
				if (x == 0) break;
				else{
					forModification = null;
					curColor = -1;
					currentChanges.set(x, null);
					disallowed.set(x, new HashSet<Vertex>(disallowed.get(x - 1)));
					x--;
				}
			}

		}
		return forReturn;
	}