Tim Klinger and I have some discussion of this issue and C++ code for implementing "revertable" classes at http://cns.nyu.edu/~mechner/compgo/ (click through "GoLib"). -David