Journal Dictionary and Mixin for Transactions, a dictionary type class where the changes to values in it are journaled allowing them to be rolled back until being committed. Also has some discussion of the undo problem. [1]