canvas undo functionality finished