diff --git a/applications/utilities/mesh/manipulation/cellSet/cellSet.C b/applications/utilities/mesh/manipulation/cellSet/cellSet.C
index ca8225d3f2d3d0094db068b45a6a405dd2e42d4e..e8036274261ada966abc16b8210fdf36fcf84623 100644
--- a/applications/utilities/mesh/manipulation/cellSet/cellSet.C
+++ b/applications/utilities/mesh/manipulation/cellSet/cellSet.C
@@ -37,37 +37,6 @@ using namespace Foam;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// Copy set
-void backup
-(
-    const polyMesh& mesh,
-    const word& fromName,
-    const topoSet& fromSet,
-    const word& toName
-)
-{
-    Info<< "Backing up " << fromName << " into " << toName << endl;
-
-    topoSet backupSet(mesh, toName, fromSet);
-
-    backupSet.write();
-}
-
-
-// Read and copy set
-void backup
-(
-    const polyMesh& mesh,
-    const word& fromName,
-    const word& toName
-)
-{
-    topoSet fromSet(mesh, fromName, IOobject::READ_IF_PRESENT);
-
-    backup(mesh, fromName, fromSet, toName);
-}
-
-
 // Main program:
 
 int main(int argc, char *argv[])
@@ -114,8 +83,6 @@ int main(int argc, char *argv[])
     {
         r = IOobject::NO_READ;
 
-        backup(mesh, setName, setName + "_old");
-
         currentSetPtr.reset
         (
             new cellSet
@@ -151,7 +118,7 @@ int main(int argc, char *argv[])
     if ((r == IOobject::MUST_READ) && (action != topoSetSource::LIST))
     {
         // currentSet has been read so can make copy.
-        backup(mesh, setName, currentSet, setName + "_old");
+        //backup(mesh, setName, currentSet, setName + "_old");
     }
 
     if (action == topoSetSource::CLEAR)
@@ -173,7 +140,16 @@ int main(int argc, char *argv[])
         forAll(topoSetSources, topoSetSourceI)
         {
             // Backup current set.
-            topoSet oldSet(mesh, currentSet.name() + "_old2", currentSet);
+            autoPtr<topoSet> oldSet
+            (
+                topoSet::New
+                (
+                    currentSet.type(),
+                    mesh,
+                    currentSet.name() + "_old2",
+                    currentSet
+                )
+            );
 
             currentSet.clear();
 
diff --git a/applications/utilities/mesh/manipulation/faceSet/faceSet.C b/applications/utilities/mesh/manipulation/faceSet/faceSet.C
index d1700cc2f962259e9bb29e65f2ca81e18a60ade9..8441a1cdbe2ce773f4021ad2e572e7de02959b79 100644
--- a/applications/utilities/mesh/manipulation/faceSet/faceSet.C
+++ b/applications/utilities/mesh/manipulation/faceSet/faceSet.C
@@ -37,37 +37,6 @@ using namespace Foam;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// Copy set
-void backup
-(
-    const polyMesh& mesh,
-    const word& fromName,
-    const topoSet& fromSet,
-    const word& toName
-)
-{
-    Info<< "Backing up " << fromName << " into " << toName << endl;
-
-    topoSet backupSet(mesh, toName, fromSet);
-
-    backupSet.write();
-}
-
-
-// Read and copy set
-void backup
-(
-    const polyMesh& mesh,
-    const word& fromName,
-    const word& toName
-)
-{
-    topoSet fromSet(mesh, fromName, IOobject::READ_IF_PRESENT);
-
-    backup(mesh, fromName, fromSet, toName);
-}
-
-
 // Main program:
 
 int main(int argc, char *argv[])
@@ -114,8 +83,6 @@ int main(int argc, char *argv[])
     {
         r = IOobject::NO_READ;
 
-        backup(mesh, setName, setName + "_old");
-
         currentSetPtr.reset
         (
             new faceSet
@@ -151,7 +118,7 @@ int main(int argc, char *argv[])
     if ((r == IOobject::MUST_READ) && (action != topoSetSource::LIST))
     {
         // currentSet has been read so can make copy.
-        backup(mesh, setName, currentSet, setName + "_old");
+        //backup(mesh, setName, currentSet, setName + "_old");
     }
 
     if (action == topoSetSource::CLEAR)
@@ -173,7 +140,16 @@ int main(int argc, char *argv[])
         forAll(topoSetSources, topoSetSourceI)
         {
             // Backup current set.
-            topoSet oldSet(mesh, currentSet.name() + "_old2", currentSet);
+            autoPtr<topoSet> oldSet
+            (
+                topoSet::New
+                (
+                    currentSet.type(),
+                    mesh,
+                    currentSet.name() + "_old2",
+                    currentSet
+                )
+            );
 
             currentSet.clear();
 
diff --git a/applications/utilities/mesh/manipulation/pointSet/pointSet.C b/applications/utilities/mesh/manipulation/pointSet/pointSet.C
index ef57d08d0779ab1da32045e5bdd55e18d52093bf..1aa70191f84cc2e1b16875a2f206ab9fcfeea870 100644
--- a/applications/utilities/mesh/manipulation/pointSet/pointSet.C
+++ b/applications/utilities/mesh/manipulation/pointSet/pointSet.C
@@ -37,37 +37,6 @@ using namespace Foam;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// Copy set
-void backup
-(
-    const polyMesh& mesh,
-    const word& fromName,
-    const topoSet& fromSet,
-    const word& toName
-)
-{
-    Info<< "Backing up " << fromName << " into " << toName << endl;
-
-    topoSet backupSet(mesh, toName, fromSet);
-
-    backupSet.write();
-}
-
-
-// Read and copy set
-void backup
-(
-    const polyMesh& mesh,
-    const word& fromName,
-    const word& toName
-)
-{
-    topoSet fromSet(mesh, fromName, IOobject::READ_IF_PRESENT);
-
-    backup(mesh, fromName, fromSet, toName);
-}
-
-
 // Main program:
 
 int main(int argc, char *argv[])
@@ -114,8 +83,6 @@ int main(int argc, char *argv[])
     {
         r = IOobject::NO_READ;
 
-        backup(mesh, setName, setName + "_old");
-
         currentSetPtr.reset
         (
             new pointSet
@@ -151,7 +118,7 @@ int main(int argc, char *argv[])
     if ((r == IOobject::MUST_READ) && (action != topoSetSource::LIST))
     {
         // currentSet has been read so can make copy.
-        backup(mesh, setName, currentSet, setName + "_old");
+        //backup(mesh, setName, currentSet, setName + "_old");
     }
 
     if (action == topoSetSource::CLEAR)
@@ -173,7 +140,16 @@ int main(int argc, char *argv[])
         forAll(topoSetSources, topoSetSourceI)
         {
             // Backup current set.
-            topoSet oldSet(mesh, currentSet.name() + "_old2", currentSet);
+            autoPtr<topoSet> oldSet
+            (
+                topoSet::New
+                (
+                    currentSet.type(),
+                    mesh,
+                    currentSet.name() + "_old2",
+                    currentSet
+                )
+            );
 
             currentSet.clear();