Extracted backup and undo to separate component