public static boolean moveOneBoxToClosestGoalGreedyBFS(Vector<State> inOutStatesVector, int pBoxIndex){
		
		//Set the comparator for this serach:
		oneBoxMoveComp.setBoxToClosestGoal(pBoxIndex);
		
		//Create a search queue;
		PriorityQueue<State> open = new PriorityQueue<State>(100, oneBoxMoveComp);
		//"Local" HashSet: Only the one box's position is relevant!
		HashSet<State> visitedPositions = new HashSet<State>(); //MUST BE CHANGED TO FASTER ALGORITHM
		//Add inputStates to search Queue:
		
		for(State state : inOutStatesVector){
			open.add(state);
			//check that none of the initial state
			if( 0 == Board.getGoalGradMerged( state.getBox(pBoxIndex).getRow(),
					state.getBox(pBoxIndex).getCol()) ){
				//return only the correct state.
				inOutStatesVector.clear();
				inOutStatesVector.add(state);
				return true;
			}
		}

		//Start search:
		Vector<State> tempChildStates = new Vector<State>();
		int iterations = 0;
		while(open.size() > 0 && iterations < 100){
	    	State curState = open.poll();
	    	Visualizer.printStateDelux(curState, "/Solver: moveOneBoxToClosestGoalGreedyBFS");
	    	System.out.println("open.size: " + open.size() + " iteration: " + iterations);
	    	tempChildStates.clear();
	    	curState.selectiveSuccessors(tempChildStates, pBoxIndex);
	    	for (State child : tempChildStates){
	    		if(0 == Board.getGoalGradMerged( child.getBox(pBoxIndex).getRow(),
						child.getBox(pBoxIndex).getCol()) ){
	    			//On TargetGoal!
	    			inOutStatesVector.clear();
					inOutStatesVector.add(child);
					return true;
	    		}
	    		else{
	    			if(visitedPositions.contains(child)){
	    				//nothing...
	    			}
	    			else{
		    			open.add(child);
		    			visitedPositions.add(child);
	    			}
	    		}
	    	}
	    	iterations++;
	    }
		if(Sokoban.debugMode){
			System.out.println("/Solver/MoveOne...ClosestGreedyBFS: NO path was find for moving box: "
									+ pBoxIndex + "to closest goal");
			System.out.println("...queue size: " + open.size() + ", iterations: " + iterations);
		}
		//Same States are left in inOutVector... could also add intermediate states from the search!
		return false;
	}