What do you mean with "restricts my implementation to commands only"?
A command in the context of undo/redo is just an interface for a state change that can be applied and reverted.
What kind of operation that does not change the state of the application would you want to undo?
Cheers,
_
Bookmarks