Add Undo support

Pending better API from @JaredPar to avoid exceptions