1. A method implemented in a computer program application performing operations on documents having states, the method comprising: maintaining in a memory a state history of a document for storing document states; and whenever an interesting operation has occurred, automatically capturing the state of the document as it exists after the operation and adding the captured state to the state history.