A general multi-user undo/redo model must satisfy several requirements It must be compatible with an existing single-user undo/redo model, give individual users autonomy in executing undo/redo commands, support undo/redo of remote commands and the remote effects of local commands, be independent of the coupling, multicast, and concurrency control model, and allow undo/redo of arbitrary commands...