public boolean saveAsHumanReadable(String filename) throws Exception {
	if (null == filename) {
	    throw new Exception("Filename must not be null");
	}

	if (values == null) {
	    return false;
	}

	// open the streams and send the height data to the file.
	try {
	    FileWriter	o	= new FileWriter(filename);

	    for (int i = 0; i < size; i++) {
		for (int j = 0; j < size; j++) {
		    String	out	= "(" + i + ", " + j + ") = " + getValueAtPoint(i, j) + ";\n";

		    o.write(out);
		}
	    }

	    o.close();
	} catch (FileNotFoundException e) {
	    Logger.getLogger(GenericTerrainMap.class.getName()).log(Level.SEVERE, "Error opening file {0}", filename);

	    return false;
	} catch (IOException e) {
	    Logger.getLogger(GenericTerrainMap.class.getName()).log(Level.SEVERE, "Error writing to file {0}",
			     filename);

	    return false;
	}

	return true;
    }