public void step() {
		if (done) {
		    return;
		}
		yield = false;
		while (!(yield || done)) {
			if (index >= script.length) {
				if (stack.size() == 0) {
					done = true;
				} else {
					popState();
	        	}
			} else {
				evalCommand((Object[]) script[index]);
				index++;
			}
		}
	}