Working undo?

Undo appears to be working, need to refactor methods though as they seem
a method. Also need comments