add redo function
update redo function