private boolean matchesStepTwo() {
		RubiksCube rc = this.initialRcConfig;
		
		if (! matchesStepOneTopCross())
			return false;
		
		// Get top face center cubie
		Cubie topFaceCenterCubie = rc.getCubie(2, 3, 2);
				
		// Check the edges
		Cubie frontFaceEdgeCubie       = rc.getCubie(2, 3, 3);
		Cubie frontFaceUpperRightCubie = rc.getCubie(3, 3, 3);
		if (! frontFaceEdgeCubie.getTopFace().equals(topFaceCenterCubie.getTopFace())
		 ||	! frontFaceEdgeCubie.getFrontFace().equals(frontFaceUpperRightCubie.getFrontFace()))
			return false;
		
		Cubie rightFaceEdgeCubie       = rc.getCubie(3, 3, 2);
		Cubie rightFaceUpperRightCubie = rc.getCubie(3, 3, 1);
		if (! rightFaceEdgeCubie.getTopFace().equals(topFaceCenterCubie.getTopFace())
		 ||	! rightFaceEdgeCubie.getRightFace().equals(rightFaceUpperRightCubie.getRightFace()))
			return false;
		
		Cubie backFaceEdgeCubie        = rc.getCubie(2, 3, 1);
		Cubie backFaceUpperRightCubie  = rc.getCubie(1, 3, 1);
		if (! backFaceEdgeCubie.getTopFace().equals(topFaceCenterCubie.getTopFace())
		||	! backFaceEdgeCubie.getBackFace().equals(backFaceUpperRightCubie.getBackFace()))
			return false;
		
		Cubie leftFaceEdgeCubie        = rc.getCubie(1, 3, 2);
		Cubie leftFaceUpperRightCubie  = rc.getCubie(1, 3, 3);
		if (! leftFaceEdgeCubie.getTopFace().equals(topFaceCenterCubie.getTopFace())
		||	! leftFaceEdgeCubie.getLeftFace().equals(leftFaceUpperRightCubie.getLeftFace()))
			return false;
		
		return true;
	}