[sent yesterday, but my email seems to work only occasionally] Josip Gracin wrote: Where can I learn about various opcodes for with-integrity? The only one not for internal-use-only (besides :change) is :client. More below. The source code for with-integrity is pretty concise, and the key function there is "finish-business", which */really/* shows you how Cells3 works in re data integrity. Indispensible reading is cells-manifesto.txt in the Cells directory. I'm using (with-integrity (:change) ...) with merely a hint on what it actually does. cells-manifesto.txt talks about state change processing not overlapping. generation A must be fully finished before B begins, and things B must not see any data from generation A. I allow observers to trigger state change though it feels like a GOTO, but you gots to wrap it in with-integrity :change which defers the actual SETF until The Right Time. See the Celtk code for how and why the :client option exists. In the declarative paradigm we specify what should happen and the engine takes care of that as it sees fit. But Tk is a brittle beast that is not so good at that, and we need to feed it information in The Right Order. The :client mechanism allows one to queue things up and then process them in an order specified by an optional client-queue handler. kt -- Ken Tilton Theory Y Learning ken@theoryyalgebra.com 2112 Baileys Corner Rd http://www.theoryyalgebra.com Wall, NJ 07719 732-359-6038 | 646-269-1077 (m)