#123 multiple redo fixed, #93 #96 refactored

note: can't replicate multiple undo bug