fixing undo! and redo! methods

This is a copy of issue #111. I have had to delete my old fork and create a new one in order to squash my 11 commits. The change log has also been updated