public String toString() {
		//creates a grid of grids, all even dims 0,2,4... horizontal, all odd dims 1,3,5... vertical
		int xSum = 1;
		int ySum = 1;
		int[] xyDimSizes = new int[dimSizesWB.length];
		for (int i=0; i<dimSizesWB.length; i++) {
			if ((i % 2) == 0) {
				xyDimSizes[i] = xSum;
				xSum *= dimSizesWB[i];
				xSum++;
			} else {
				xyDimSizes[i] = ySum;
				ySum *= dimSizesWB[i];
				ySum++;
			}
		}
		char[][] outputGrid = new char[ySum][xSum];
		for (int i=0; i<tileLetters.length; i++) {
			char c = tileLetters[i];
			if (c == 0) c = ' ';
			int x = 0;
			int y = 0;
			for (int j=0; j<dimSizesAct.length; j++) {
				int div = i / dimStepsWB[j];
				int mod = div % (dimSizesWB[j]);
				//mod is coord in dim
				if ((j % 2) == 0) {
					x += mod * xyDimSizes[j];
				} else {
					y += mod * xyDimSizes[j];
				}
			}
			outputGrid[y][x] = c;
		}
		StringBuilder sb = new StringBuilder();
		for (char[] line : outputGrid) {
			for (int i=0; i<line.length; i++) {
				if (line[i] == 0) line[i] = ' ';
			}
			sb.append(line);
			sb.append(NL);
		}
		return sb.toString();
	}