public void findTilesAndBoard(ArrayList<char[]> inList) {
		this.in = new char[inList.size()][];
		for (int i = inList.size(); i-- > 0;)
			in[i] = inList.get(i);

		RawTile raw;
		ArrayList<RawTile> rawTiles = new ArrayList<RawTile>();
		for (int j = 0; j < in.length; j++) {
			for (int i = 0; i < in[j].length; i++) {
				if (in[j][i] != ' ') {
					// detect & explore raw piece and clear the points using ' '
					raw = new RawTile();
					exploreTile(in, i, j, raw);
					raw.nomalize();
					rawTiles.add(raw);
					if (maxTile == null) {
						maxTile = raw;
						minTile = raw;
					} else if (raw.compareTo(maxTile) > 0) {
						maxTile = raw;
					} else if (raw.compareTo(minTile) < 0) {
						minTile = raw;
					}

				}
			}
		}
		board = new Tile(0, maxTile, maxTile.width(), maxTile.height(), true);
		rawTiles.remove(maxTile);
		tiles = new Tile[rawTiles.size()];

		singleTileSize = rawTiles.get(0).size();
		allSameSizeTiles = true;
		int i = 0;
		totalTileSquare = 0;
		for (RawTile rawTile : rawTiles) {
			tiles[i] = new Tile(i, rawTile, maxTile.width(), maxTile.height(), false);
			totalTileSquare += tiles[i].size();
			if (singleTileSize != tiles[i].size())
				allSameSizeTiles = false;
			i++;
		}
		i = 1;
	}