private void updateSizeRank() {
		int newSizeRank = population.size()/10 + 1;
		if (newSizeRank != sizeRank)
		{
			int minSideLength = getSideLength(Math.min(newSizeRank, sizeRank));
			Building[][] newBuildings = new Building[getSideLength(newSizeRank)][getSideLength(newSizeRank)];
			for (int iNew = Math.max(0, newSizeRank-sizeRank)*16, iOld = Math.max(0, sizeRank-newSizeRank)*16; iNew < minSideLength|| iOld < minSideLength; ++iNew, ++iOld)
			{
				for (int jNew = Math.max(0, newSizeRank-sizeRank)*16, jOld = Math.max(0, sizeRank-newSizeRank)*16; jNew < minSideLength|| jOld < minSideLength; ++jNew, ++jOld)
				{
					newBuildings[iNew][jNew] = buildings[iOld][jOld];
				}
			}
			int newGrowth = newSizeRank - sizeRank;
			growth += newGrowth;

			buildings = newBuildings;
			sizeRank = newSizeRank;
			buildSideWalks(sizeRank-newGrowth, sizeRank);
		}
	}