add persistent undo