diff --git a/src/dynamicFvMesh/simplifiedDynamicFvMesh/simplifiedDynamicFvMeshTemplates.C b/src/dynamicFvMesh/simplifiedDynamicFvMesh/simplifiedDynamicFvMeshTemplates.C
index 4cbf5fd4f8fca72ae51e9243725566a08f21f0db..37209b20bd798b0190619d855322919338199887 100644
--- a/src/dynamicFvMesh/simplifiedDynamicFvMesh/simplifiedDynamicFvMeshTemplates.C
+++ b/src/dynamicFvMesh/simplifiedDynamicFvMesh/simplifiedDynamicFvMeshTemplates.C
@@ -61,6 +61,9 @@ SimplifiedDynamicFvMesh
 
     // Add the patches
     addLocalPatches(*this);
+
+    // Add the zones if constructed from mesh
+    initialiseZones(*this);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.C b/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.C
index 9f92cf178872203aef607c6dc754c670034fc3ac..1d5cb0663d6628116aa02823c1b6e291d9862d06 100644
--- a/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.C
+++ b/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.C
@@ -75,7 +75,8 @@ bool Foam::simplifiedMeshes::columnFvMeshInfo::setPatchEntries
     {
         polyBoundaryMeshEntries allPatchEntries(boundaryIO);
 
-        Info<< "Creating simplified mesh using " << allPatchEntries.path() << endl;
+        Info<< "Creating simplified mesh using " << allPatchEntries.path()
+            << endl;
 
         for (const entry& e : allPatchEntries)
         {
@@ -134,7 +135,7 @@ bool Foam::simplifiedMeshes::columnFvMeshInfo::setPatchEntries
                     dictionary simplifiedEntries;
                     simplifiedEntries.add("startFace", 0);
                     simplifiedEntries.add("nFaces", 1);
-                    simplifiedEntries.add("type", "wall"); // default to wall type
+                    simplifiedEntries.add("type", "wall"); // default to wall
 
                     patchEntries_.add(e.keyword(), simplifiedEntries);
                 }
@@ -304,7 +305,12 @@ void Foam::simplifiedMeshes::columnFvMeshInfo::initialise(const Time& runTime)
 }
 
 
-void Foam::simplifiedMeshes::columnFvMeshInfo::addLocalPatches(fvMesh& mesh) const
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+void Foam::simplifiedMeshes::columnFvMeshInfo::addLocalPatches
+(
+    fvMesh& mesh
+) const
 {
     const label nPatch = patchEntries_.size();
 
@@ -367,6 +373,24 @@ void Foam::simplifiedMeshes::columnFvMeshInfo::addLocalPatches(fvMesh& mesh) con
     }
 }
 
+
+void Foam::simplifiedMeshes::columnFvMeshInfo::initialiseZones(fvMesh& mesh)
+{
+    if (createFromMesh_)
+    {
+        // Initialise the zones
+        initialiseZone<pointZoneMesh>
+        (
+            "point",
+            localInstance_,
+            mesh.pointZones()
+        );
+        initialiseZone<faceZoneMesh>("face", localInstance_, mesh.faceZones());
+        initialiseZone<cellZoneMesh>("cell", localInstance_, mesh.cellZones());
+    }
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::simplifiedMeshes::columnFvMeshInfo::columnFvMeshInfo(const Time& runTime)
@@ -389,6 +413,11 @@ Foam::simplifiedMeshes::columnFvMeshInfo::columnFvMeshInfo(const Time& runTime)
     nPatchWithFace_(0)
 {
     initialise(runTime);
+
+    // Dummy zones and sets created on demand
+    // Note: zones can be updated post-construction
+    cellZoneMesh::disallowGenericZones = 1;
+    topoSet::disallowGenericSets = 1;
 }
 
 
@@ -423,24 +452,8 @@ Foam::simplifiedMeshes::columnFvMesh::columnFvMesh(const Time& runTime)
     // Add the patches
     addLocalPatches(*this);
 
-    // Add the zones
-
-    if (createFromMesh_)
-    {
-        // Initialise the zones
-        initialiseZone<pointZoneMesh>("point", localInstance_, pointZones());
-        initialiseZone<faceZoneMesh>("face", localInstance_, faceZones());
-        initialiseZone<cellZoneMesh>("cell", localInstance_, cellZones());
-
-        // Dummy sets created on demand
-        topoSet::disallowGenericSets = 1;
-    }
-    else
-    {
-        // Dummy zones and sets created on demand
-        cellZoneMesh::disallowGenericZones = 1;
-        topoSet::disallowGenericSets = 1;
-    }
+    // Add the zones if constructed from mesh
+    initialiseZones(*this);
 
     if (debug)
     {
diff --git a/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.H b/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.H
index d02d4ebeb38ee66581daa174f2df5866537bd41a..01b65bdd9fb09449d4efad67cfe317dee9d89b36 100644
--- a/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.H
+++ b/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMesh.H
@@ -59,6 +59,15 @@ class columnFvMeshInfo
         //- Initialise
         void initialise(const Time& runTime);
 
+        //- Helper function to initialise empty zones
+        template<class ZoneMeshType>
+        void initialiseZone
+        (
+            const word& zoneTypeName,
+            const fileName& instance,
+            ZoneMeshType& zoneType
+        );
+
 
 protected:
 
@@ -99,6 +108,9 @@ protected:
         //- Add the patches to the mesh
         void addLocalPatches(fvMesh& mesh) const;
 
+        //- Initialise zones if constructed from mesh
+        void initialiseZones(fvMesh& mesh);
+
 
 public:
 
@@ -133,6 +145,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "columnFvMeshTemplates.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMeshTemplates.C b/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMeshTemplates.C
similarity index 95%
rename from src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMeshTemplates.C
rename to src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMeshTemplates.C
index 14097c1e716c8d8c22b76bcbf7301e18573aa014..fdf0e91ab052777ad28cdcb362c683ff2b5e3efd 100644
--- a/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMeshTemplates.C
+++ b/src/finiteVolume/fvMesh/simplifiedFvMesh/columnFvMesh/columnFvMeshTemplates.C
@@ -22,14 +22,13 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 \*---------------------------------------------------------------------------*/
-
 #include "polyMesh.H"
 
 template<class ZoneMeshType>
-void Foam::simplifiedFvMesh::initialiseZone
+void Foam::simplifiedMeshes::columnFvMeshInfo::initialiseZone
 (
     const word& zoneTypeName,
-    const fileName& instance, 
+    const fileName& instance,
     ZoneMeshType& zoneType
 )
 {
diff --git a/src/finiteVolume/fvMesh/simplifiedFvMesh/hexCellFvMesh/hexCellFvMesh.C b/src/finiteVolume/fvMesh/simplifiedFvMesh/hexCellFvMesh/hexCellFvMesh.C
index 8ef8ef2dc3729ddb047d677a222629fcecb6e363..ecaf7935ba35bffc8d7363b0786270b434034852 100644
--- a/src/finiteVolume/fvMesh/simplifiedFvMesh/hexCellFvMesh/hexCellFvMesh.C
+++ b/src/finiteVolume/fvMesh/simplifiedFvMesh/hexCellFvMesh/hexCellFvMesh.C
@@ -94,6 +94,8 @@ Foam::simplifiedMeshes::hexCellFvMesh::hexCellFvMesh
     );
 
     addFvPatches(patches);
+
+    // Note: no sets or zones created
 }
 
 
diff --git a/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.C b/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.C
index f4a3daa906ff9f5121da68d90e1ac65428fbca5b..e14c4bdeb71ca2b47ef5ec8918b4016336ed0f38 100644
--- a/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.C
+++ b/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.C
@@ -25,6 +25,7 @@ License
 
 #include "simplifiedFvMesh.H"
 #include "fvPatchField.H"
+#include "topoSet.H"
 
 // * * * * * * * * * * * * * * * Static Members  * * * * * * * * * * * * * * //
 
@@ -57,6 +58,8 @@ bool Foam::simplifiedFvMesh::fvPatchFieldExists(const word& patchType)
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
 Foam::simplifiedFvMesh::simplifiedFvMesh
 (
     const IOobject& io,
diff --git a/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.H b/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.H
index 978dcbcbef2ccecafe65bd0739d7dfbe9f84ea03..9d149733c15038ce8594e98f726f523d1f6eed4a 100644
--- a/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.H
+++ b/src/finiteVolume/fvMesh/simplifiedFvMesh/simplifiedFvMesh/simplifiedFvMesh.H
@@ -52,18 +52,6 @@ class simplifiedFvMesh
 :
     public fvMesh
 {
-protected:
-
-    //- Helper function to initialise empty zones
-    template<class ZoneMeshType>
-    void initialiseZone
-    (
-        const word& zoneTypeName,
-        const fileName& instance,
-        ZoneMeshType& zoneType
-    );
-
-
 public:
 
     //- Runtime type information
@@ -118,12 +106,6 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#ifdef NoRepository
-    #include "simplifiedFvMeshTemplates.C"
-#endif
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 #endif
 
 // ************************************************************************* //