private void primeCube(List<DefinedMove> path) {
		RubiksCube rc = this.initialRcConfig;
		
		// Pre requisite : we must prime the cube
		// Identify the upper right cubie of the front facelet and especially the color on the top face
		Cubie frontFaceUpperRightCubie = rc.getCubie(3, 3, 3);
		Facelet topFacelet = frontFaceUpperRightCubie.getTopFace();
		
		// We move the top middle row clockwise, until the central facelet has the same color as previous topFacelet 
		Cubie topFaceCenterCubie = rc.getCubie(2, 3, 2);
		int nbMove = 0;
		List<DefinedMove> prereqPath = new ArrayList<DefinedMove>();
		while (! topFaceCenterCubie.getTopFace().equals(topFacelet) && ++nbMove <= 3) {
			addLocalMove(prereqPath, Move.ROLL, 2);
			topFaceCenterCubie = rc.getCubie(2, 3, 2);
		};
		
		if (nbMove == 4) {
			// We move the top center column, until the central facelet has the same color as previous topFacelet 
			nbMove = 0;
			prereqPath.clear();
			while (! topFaceCenterCubie.getTopFace().equals(topFacelet) && ++nbMove <= 3) {
				addLocalMove(prereqPath, Move.PITCH, 2);
				topFaceCenterCubie = rc.getCubie(2, 3, 2);
			};
		}
		path.addAll(prereqPath);
		
		if (RubiksCube2D.DEBUG) {
			if (prereqPath.isEmpty())
				System.out.println("AI::prerequisite => already done !");
			else
				System.out.println("AI::prerequisite => " + path);
		}
	}