public void growVillages()
	{
		ArrayList<Village> toGrow = getGrownVillages();
		for (Village v : toGrow)
		{
			boolean complete = true;
			int maxDX = (int)(v.getRelativeChunkCenter().getX());
			int maxDY = (int)(v.getRelativeChunkCenter().getY());
			int oldVillageChunkLength = v.getChunkSideLength(v.getSizeRank()-v.getGrowth());
			for (int dX = (int) (-1*v.getRelativeChunkCenter().getX()); dX <= maxDX; ++dX)
			{
				for (int dY = (int) (-1*v.getRelativeChunkCenter().getY()); dY <= maxDY; ++dY)
				{
					if (dX < oldVillageChunkLength*-1 || dX > oldVillageChunkLength || dY < oldVillageChunkLength*-1 || dY > oldVillageChunkLength)
					{
						Chunk cur;
						try {
							cur = getChunk(v.getX()+dX, v.getY()+dY);
						} catch (ChunkNotLoadedException e) {
							complete = false;
							continue;
						}
						//TODO decide what to do if there is already a village there
						cur.addVillage(v);
						toDraw.add(cur);
					}
				}
			}
			if (complete)
			{
				v.resetGrowth();
			}
		}
	}