synchronized Object evalStringWaitStatus(String returnType, String strScript, String statusList,
			boolean isScriptFile, boolean isQuiet, Vector tokenInfo) {
		// System.out.println(Thread.currentThread()+" --- "+strScript);
		// from the scriptManager only!
		if (checkResume(strScript))
			return "script processing resumed"; // be very odd if this fired
		if (checkHalt(strScript))
			return "script execution halted";
		if (strScript == null)
			return null;

		// typically request: "+scriptStarted,+scriptStatus,+scriptEcho,+scriptTerminated"
		// set up first with applet.jmolGetProperty("jmolStatus",statusList)

		// flush list
		String oldStatusList = statusManager.statusList;
		getProperty("String", "jmolStatus", statusList);
		boolean isOK = (tokenInfo != null ? eval.loadTokenInfo(strScript, tokenInfo) : isScriptFile ? eval
				.loadScriptFile(strScript, isQuiet) : eval.loadScriptString(strScript, isQuiet));
		if (isOK) {
			eval.runEval();
			String strErrorMessage = eval.getErrorMessage();
			int msWalltime = eval.getExecutionWalltime();
			statusManager.setStatusScriptTermination(strErrorMessage, msWalltime);
			if (isScriptFile && writeInfo != null)
				createImage(writeInfo);
		}
		if (isScriptFile && autoExit) {
			System.out.flush();
			System.exit(0);
		}
		if (returnType.equalsIgnoreCase("String"))
			return eval.getErrorMessage();
		// get Vector of Vectors of Vectors info
		Object info = getProperty(returnType, "jmolStatus", statusList);
		// reset to previous status list
		getProperty("object", "jmolStatus", oldStatusList);
		return info;
	}