diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
index 25030ac9c1694a2e6e7286a729aed5e29c4ef3bf..6dc98535c0af7cc252368970e1eaa6a612af1e23 100644
--- a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
+++ b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
@@ -81,6 +81,7 @@ Usage
 #include "parLagrangianRedistributor.H"
 #include "unmappedPassiveParticleCloud.H"
 #include "hexRef8Data.H"
+#include "pointFields.H"
 
 using namespace Foam;
 
@@ -838,6 +839,8 @@ autoPtr<mapDistributePolyMesh> redistributeAndWrite
     PtrList<DimensionedField<symmTensor, volMesh>> dimSymmTensorFields;
     PtrList<DimensionedField<tensor, volMesh>> dimTensorFields;
 
+    DynamicList<word> pointFieldNames;
+
 
     if (doReadFields)
     {
@@ -1051,6 +1054,40 @@ autoPtr<mapDistributePolyMesh> redistributeAndWrite
         );
 
 
+        // pointFields currently not supported. Read their names so we
+        // can delete them.
+        {
+            // Get my objects of type
+            pointFieldNames.append
+            (
+                objects.lookupClass(pointScalarField::typeName).sortedNames()
+            );
+            pointFieldNames.append
+            (
+                objects.lookupClass(pointVectorField::typeName).sortedNames()
+            );
+            pointFieldNames.append
+            (
+                objects.lookupClass
+                (
+                    pointSphericalTensorField::typeName
+                ).sortedNames()
+            );
+            pointFieldNames.append
+            (
+                objects.lookupClass
+                (
+                    pointSymmTensorField::typeName
+                ).sortedNames()
+            );
+            pointFieldNames.append
+            (
+                objects.lookupClass(pointTensorField::typeName).sortedNames()
+            );
+
+            // Make sure all processors have the same set
+            Pstream::scatter(pointFieldNames);
+        }
 
         if (Pstream::master() && decompose)
         {
@@ -1138,6 +1175,19 @@ autoPtr<mapDistributePolyMesh> redistributeAndWrite
 
             mesh.write();
             topoSet::removeFiles(mesh);
+            forAll(pointFieldNames, i)
+            {
+                IOobject io
+                (
+                    pointFieldNames[i],
+                    runTime.timeName(),
+                    mesh
+                );
+
+                fileName fieldFile(io.objectPath());
+                if (topoSet::debug) DebugVar(fieldFile);
+                rm(fieldFile);
+            }
 
             // Now we've written all. Reset caseName on master
             Info<< "Restoring caseName to " << proc0CaseName << endl;
@@ -1148,6 +1198,19 @@ autoPtr<mapDistributePolyMesh> redistributeAndWrite
     {
         mesh.write();
         topoSet::removeFiles(mesh);
+        forAll(pointFieldNames, i)
+        {
+            IOobject io
+            (
+                pointFieldNames[i],
+                runTime.timeName(),
+                mesh
+            );
+
+            fileName fieldFile(io.objectPath());
+            if (topoSet::debug) DebugVar(fieldFile);
+            rm(fieldFile);
+        }
     }
     Info<< "Written redistributed mesh to " << mesh.facesInstance() << nl
         << endl;
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
index 9aceb0b45923c185fcf9895f624c98f867054d04..259f747bc868ad7f58c21b3475bcbc8cc22b3e28 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -5751,9 +5751,42 @@ bool Foam::hexRef8::write() const
     {
         writeOk = writeOk && history_.write();
     }
+    else
+    {
+        refinementHistory::removeFiles(mesh_);
+    }
 
     return writeOk;
 }
 
 
+void Foam::hexRef8::removeFiles(const polyMesh& mesh)
+{
+    IOobject io
+    (
+        "dummy",
+        mesh.facesInstance(),
+        mesh.meshSubDir,
+        mesh
+    );
+    fileName setsDir(io.path());
+
+    if (topoSet::debug) DebugVar(setsDir);
+
+    if (exists(setsDir/"cellLevel"))
+    {
+        rm(setsDir/"cellLevel");
+    }
+    if (exists(setsDir/"pointLevel"))
+    {
+        rm(setsDir/"pointLevel");
+    }
+    if (exists(setsDir/"level0Edge"))
+    {
+        rm(setsDir/"level0Edge");
+    }
+    refinementHistory::removeFiles(mesh);
+}
+
+
 // ************************************************************************* //
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H
index 09694f7a414f99e3929aa3dfdcddd6ae7464c09d..e14e9761c762bac03c912bc021a9e6dc415ca2c9 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -568,6 +568,9 @@ public:
             //- Force writing refinement+history to polyMesh directory.
             bool write() const;
 
+            //- Helper: remove all relevant files from mesh instance
+            static void removeFiles(const polyMesh&);
+
 };
 
 
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C
index 1a76ea75b48df72176c25d422cc330050745cd27..fb4254a4e279682a0aea729877dfd9d7f3890a59 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2015 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2015-2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -28,6 +28,7 @@ License
 #include "mapDistributePolyMesh.H"
 #include "polyMesh.H"
 #include "syncTools.H"
+#include "topoSet.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -1736,6 +1737,26 @@ bool Foam::refinementHistory::writeData(Ostream& os) const
 }
 
 
+void Foam::refinementHistory::removeFiles(const polyMesh& mesh)
+{
+    IOobject io
+    (
+        "dummy",
+        mesh.facesInstance(),
+        mesh.meshSubDir,
+        mesh
+    );
+    fileName setsDir(io.path());
+
+    if (topoSet::debug) DebugVar(setsDir);
+
+    if (exists(setsDir/typeName))
+    {
+        rm(setsDir/typeName);
+    }
+}
+
+
 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
 
 Foam::Istream& Foam::operator>>(Istream& is, refinementHistory& rh)
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H
index 88874be430a5ee32a55e7a2e168895976cf1f553..1a883bc5da85b0738590f6e38d640966848c4405 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/refinementHistory.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2015 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2015-2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -87,7 +87,7 @@ namespace Foam
 // Forward declaration of classes
 class mapPolyMesh;
 class mapDistributePolyMesh;
-
+class polyMesh;
 
 // Forward declaration of friend functions and operators
 
@@ -401,6 +401,10 @@ public:
             ) const;
 
 
+        //- Helper: remove all sets files from mesh instance
+        static void removeFiles(const polyMesh&);
+
+
     // IOstream Operators
 
         //- Istream operator. Note: does not do a reduction - does not set
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C
index 81f81dc50806d351320101f8d795a2f5be513a3e..acd25a6e595d0a2ef459adb2da7a1f783bf55343 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C
@@ -3038,6 +3038,30 @@ void Foam::meshRefinement::write
 }
 
 
+void Foam::meshRefinement::removeFiles(const polyMesh& mesh)
+{
+    IOobject io
+    (
+        "dummy",
+        mesh.facesInstance(),
+        mesh.meshSubDir,
+        mesh
+    );
+    fileName setsDir(io.path());
+
+    if (topoSet::debug) DebugVar(setsDir);
+
+    // Remove local files
+    if (exists(setsDir/"surfaceIndex"))
+    {
+        rm(setsDir/"surfaceIndex");
+    }
+
+    // Remove other files
+    hexRef8::removeFiles(mesh);
+}
+
+
 Foam::meshRefinement::writeType Foam::meshRefinement::writeLevel()
 {
     return writeLevel_;
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
index 8666d5bf8060ff7697ec8aedae4eab90556c102f..e01bb3f781f9b2c80413397db9d41bddf182e8e0 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
@@ -1447,6 +1447,9 @@ public:
                 const fileName&
             ) const;
 
+            //- Helper: remove all relevant files from mesh instance
+            static void removeFiles(const polyMesh&);
+
             //- Helper: calculate average
             template<class T>
             static T gAverage
@@ -1468,7 +1471,6 @@ public:
             //  NamedEnum
             template<class Enum>
             static int readFlags(const Enum& namedEnum, const wordList&);
-
 };
 
 
diff --git a/src/parallel/reconstruct/reconstruct/processorMeshes.C b/src/parallel/reconstruct/reconstruct/processorMeshes.C
index b678c4f6548e84e3f8a02ac51536cec2c90360b2..2ecfee034b1a652a4861b2c52f2408d9766cf2b4 100644
--- a/src/parallel/reconstruct/reconstruct/processorMeshes.C
+++ b/src/parallel/reconstruct/reconstruct/processorMeshes.C
@@ -26,6 +26,7 @@ License
 #include "processorMeshes.H"
 #include "Time.H"
 #include "primitiveMesh.H"
+#include "topoSet.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -279,7 +280,7 @@ void Foam::processorMeshes::removeFiles(const polyMesh& mesh)
             mesh
         ).objectPath()
     );
-    if (debug) DebugVar(pointPath);
+    if (topoSet::debug) DebugVar(pointPath);
     rm(pointPath);
 
     rm