implementations for redo (undo vs redo still to do)