void setMoData(int shape, int moNumber, String title) throws ScriptException {
		int modelIndex = viewer.getDisplayModelIndex();
		if (modelIndex < 0)
			evalError(GT._("MO isosurfaces require that only one model be displayed"));
		Hashtable moData = (Hashtable) viewer.getModelAuxiliaryInfo(modelIndex, "moData");
		Hashtable surfaceInfo = (Hashtable) viewer.getModelAuxiliaryInfo(modelIndex, "jmolSurfaceInfo");
		if (surfaceInfo != null && ((String) surfaceInfo.get("surfaceDataType")).equals("mo")) {
			viewer.loadShape(JmolConstants.SHAPE_ISOSURFACE);
			viewer.setShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "init", null);
			viewer.setShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "sign", Boolean.TRUE);
			viewer.setShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "getSurface", surfaceInfo);

			return;
		}
		if (moData == null)
			evalError(GT._("no MO basis/coefficient data available for this frame"));
		Vector mos = moData != null ? (Vector) (moData.get("mos")) : null;
		int nOrb = (mos == null ? 0 : mos.size());
		if (nOrb == 0)
			evalError(GT._("no MO coefficient data available"));
		if (nOrb == 1 && moNumber > 1)
			evalError(GT._("Only one molecular orbital is available in this file"));
		if (moNumber < 1 || moNumber > nOrb)
			evalError(GT._("An MO index from 1 to {0} is required", nOrb));
		lastMoNumber = moNumber;
		viewer.setShapeProperty(shape, "moData", moData);
		if (title != null)
			viewer.setShapeProperty(shape, "title", title);
		viewer.setShapeProperty(shape, "molecularOrbital", new Integer(moNumber));
	}