Defer undo on the current block's state
Added more tests
Removed Reset
Added a few tests
Added dirty tracking on the cache
Added proper name :)
Added proper error message