added undo requirements