in reply to Undo Operations

If you need an 'undo' feature, the typical thought that comes to my mind is:
1. make a *before* copy of the data 2. let the user make changes to the data 3. if changes were made, ask the user if he/she wants to keep those changes 4. if user wants to keep changes, move or copy the new data to the *current* data if user does not want to keep changes, move or copy *before* data to *current* data
That's kind of a simplistic method, but I think it achieves the goal. Is that what you were looking for?

Hope this helps.