public void rotateEdges(TileColor face) {
		List<int[]> corners = new ArrayList<int[]>();
		List<int[]> edges = new ArrayList<int[]>();
		if (face.equals(TileColor.white)) {
			// corners
			corners.add(createArray(1, 0, 2));
			corners.add(createArray(1, 2, 2));
			corners.add(createArray(2, 0, 0));
			corners.add(createArray(2, 0, 2));
			corners.add(createArray(4, 2, 0));
			corners.add(createArray(4, 0, 0));
			corners.add(createArray(5, 2, 2));
			corners.add(createArray(5, 2, 0));
			// edges
			edges.add(bottomEdge(TileColor.blue));
			edges.add(leftEdge(TileColor.red));
			edges.add(topEdge(TileColor.green));
			edges.add(rightEdge(TileColor.orange));
		} else if (face.equals(TileColor.blue)) {
			// corners
			corners.add(createArray(3, 2, 0));
			corners.add(createArray(3, 0, 0));
			corners.add(createArray(2, 2, 0));
			corners.add(createArray(2, 0, 0));
			corners.add(createArray(0, 2, 0));
			corners.add(createArray(0, 0, 0));
			corners.add(createArray(5, 2, 0));
			corners.add(createArray(5, 0, 0));
			// edges
			edges.add(topEdge(TileColor.yellow));
			edges.add(topEdge(TileColor.red));
			edges.add(topEdge(TileColor.white));
			edges.add(topEdge(TileColor.orange));
		} else if (face.equals(TileColor.red)) {
			// corners
			corners.add(createArray(1, 2, 2));
			corners.add(createArray(1, 2, 0));
			corners.add(createArray(3, 0, 0));
			corners.add(createArray(3, 0, 2));
			corners.add(createArray(4, 2, 2));
			corners.add(createArray(4, 2, 0));
			corners.add(createArray(0, 2, 2));
			corners.add(createArray(0, 2, 0));
			// edges
			edges.add(rightEdge(TileColor.blue));
			edges.add(leftEdge(TileColor.yellow));
			edges.add(rightEdge(TileColor.green));
			edges.add(rightEdge(TileColor.white));
		} else if (face.equals(TileColor.yellow)) {
			// corners
			corners.add(createArray(1, 2, 0));
			corners.add(createArray(1, 0, 0));
			corners.add(createArray(5, 0, 0));
			corners.add(createArray(5, 0, 2));
			corners.add(createArray(4, 0, 2));
			corners.add(createArray(4, 2, 2));
			corners.add(createArray(2, 2, 2));
			corners.add(createArray(2, 2, 0));
			// edges
			edges.add(topEdge(TileColor.blue));
			edges.add(leftEdge(TileColor.orange));
			edges.add(bottomEdge(TileColor.green));
			edges.add(rightEdge(TileColor.red));
		} else if (face.equals(TileColor.green)) {
			// corners
			corners.add(createArray(0, 0, 2));
			corners.add(createArray(0, 2, 2));
			corners.add(createArray(2, 0, 2));
			corners.add(createArray(2, 2, 2));
			corners.add(createArray(3, 0, 2));
			corners.add(createArray(3, 2, 2));
			corners.add(createArray(5, 0, 2));
			corners.add(createArray(5, 2, 2));
			// edges
			edges.add(bottomEdge(TileColor.white));
			edges.add(bottomEdge(TileColor.red));
			edges.add(bottomEdge(TileColor.yellow));
			edges.add(bottomEdge(TileColor.orange));
		} else if (face.equals(TileColor.orange)) {
			// corners
			corners.add(createArray(1, 0, 0));
			corners.add(createArray(1, 0, 2));
			corners.add(createArray(0, 0, 0));
			corners.add(createArray(0, 0, 2));
			corners.add(createArray(4, 0, 0));
			corners.add(createArray(4, 0, 2));
			corners.add(createArray(3, 2, 2));
			corners.add(createArray(3, 2, 0));
			// edges
			edges.add(leftEdge(TileColor.blue));
			edges.add(leftEdge(TileColor.white));
			edges.add(leftEdge(TileColor.green));
			edges.add(rightEdge(TileColor.yellow));
		}
		// set corners
		TileColor corner1 = getColor(corners.get(corners.size() - 2));
		TileColor corner2 = getColor(corners.get(corners.size() - 1));
		for (int i = corners.size() - 1; i > 1; i--) {
			setPiece(corners.get(i), getColor(corners.get(i - 2)));
		}
		setPiece(corners.get(0), corner1);
		setPiece(corners.get(1), corner2);
		// set edges
		TileColor edge = getColor(edges.get(edges.size() - 1));
		for (int i = edges.size() - 1; i > 0; i--) {
			setPiece(edges.get(i), getColor(edges.get(i - 1)));
		}
		setPiece(edges.get(0), edge);
	}