diff --git a/PERF_LOG b/PERF_LOG
index 213a7934f7e92bf4865e6f7d18ee0715d5ee9dc5..ee78e00e248d3f92f0f7c3e05ff56e43688400b5 100644
--- a/PERF_LOG
+++ b/PERF_LOG
@@ -15,4 +15,5 @@ v2.3.3a   o2   1.31  0.85  0.86  1.02  0.92
 v2.3.3a   h5   1.92  1.32  1.32  5.58  1.14
 b59c787   h5   1.84  1.15  1.33  5.48  1.12
 
-1170cda   o2   1.31  0.86  0.86  1.03  0.91
\ No newline at end of file
+1170cda   o2   1.31  0.86  0.86  1.03  0.91
+          o2   1.31  0.74  0.87  1.03  0.93
\ No newline at end of file
diff --git a/pub/lib/commands.cpp b/pub/lib/commands.cpp
index ba293f6601de17fb3c598ae0f655ba67a6b17b69..95e3107aeef7df465d67e9f34a494895cf78d2fe 100644
--- a/pub/lib/commands.cpp
+++ b/pub/lib/commands.cpp
@@ -67,7 +67,6 @@ bool frida_command( string cmd )
             "  !    execute shell command\n"
             "  quit terminate Frida session\n"
             "Command groups (type initial letter for help):\n"
-            "  b    backup of online files\n"
             "  c    curves and fits\n"
             "  d    directory (inspect internal files)\n"
             "  e    edit (change textual parameters)\n"
@@ -151,18 +150,6 @@ bool frida_command( string cmd )
             "  - hence are equivalent: x = x[k,j,i] = x[k,j,] = x[k,j] = x[k,] = x[k]\n"
             ;
 
-    } else if (cmd == "b") {
-        cout << "Backup commands:\n"
-            "  bc   copy to online backup (automatically before cf)\n"
-            "  br   retrieved from online backup\n"
-            ;
-
-    } else if (cmd == "bc") {
-        SMem::instance()->mem_backup_store();
-
-    } else if (cmd == "br") {
-        SMem::instance()->mem_backup_retrieve();
-
     } else if (cmd == "c") {
         cout << "Curve and fit commands:\n"
             "  cc   create\n"
diff --git a/pub/lib/fit.cpp b/pub/lib/fit.cpp
index 9bb964e5a8329d2ce792edc231f88f6a9d725944..217462c6b1afa5d5897da103c565244d90cc12aa 100644
--- a/pub/lib/fit.cpp
+++ b/pub/lib/fit.cpp
@@ -507,7 +507,6 @@ void NCurveFit::fit( bool _allow_slow_conv )
     lm_control_struct control = lm_control_double;;
     allow_slow_conv = _allow_slow_conv;
 
-    SMem::instance()->mem_backup_store();
     FileIterator fiter(SFSel::instance()->selC());
 
     while ( COlc *fc = fiter.nextC() ) {
diff --git a/pub/lib/mem.cpp b/pub/lib/mem.cpp
index 3845fbdf431b2d89ac3eb6049f78ff98f2754ef9..38f9d000612ac554b0395f225fe52107f158a667 100644
--- a/pub/lib/mem.cpp
+++ b/pub/lib/mem.cpp
@@ -108,37 +108,3 @@ void SMem::mem_xchange()
     mem_copy();
     SFSel::instance()->sel_delete();
 }
-
-//**************************************************************************************************
-//*  Backup and retrieve
-//**************************************************************************************************
-
-//! Copy SFSel::instance()->selected files to backup.
-
-void SMem::mem_backup_store()
-{
-    BAK.clear();
-    FileIterator fiter(SFSel::instance()->sel());
-    while ( const COlo *fin = fiter.next() ){
-        POlo fout( fin->new_POlo() );
-        fout->copy_mainvec( fin );
-        BAK.push_back( POlo() );
-        BAK.back().swap( fout ); // TODO: simplify!
-    }
-}
-
-//! Retrieve files from backup.
-
-void SMem::mem_backup_retrieve()
-{
-    if( !BAK.size() )
-        throw S("no files in backup");
-    SFSel::instance()->sel_collect_begin();
-    throw S("TODO: restore mem_backup_retrieve()");
-    /*
-      for( auto b: BAK )
-      mem_store( move(b), -1 );
-    */
-    SFSel::instance()->sel_collect_end();
-    BAK.clear();
-}
diff --git a/pub/lib/mem.hpp b/pub/lib/mem.hpp
index 76541a360464044419181b95fe5387df9dd8c81c..8ce73ee1dc9f075a7c48f4e1d5b92a41aa879c34 100644
--- a/pub/lib/mem.hpp
+++ b/pub/lib/mem.hpp
@@ -29,8 +29,4 @@ public:
     void mem_del( int k );
     void mem_xchange();
     void mem_copy();
-
-    // Backup:
-    void mem_backup_store();
-    void mem_backup_retrieve();
 };