implemented linear redo and undo

very rudimentary