diff --git a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C
index 4890830345e956318bd472618f2528fc998931f0..0ff841d0b860c75a3e54d8968a1b89015a20c752 100644
--- a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C
+++ b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C
@@ -278,10 +278,11 @@ int main(int argc, char *argv[])
     (
         newSet,
         runTime,
-        surfFileName.lessExt().name() + ".feMesh",
-        true
+        surfFileName.lessExt().name() + ".featureEdgeMesh"
     );
 
+    feMesh.writeObj(surfFileName.lessExt().name());
+
     feMesh.write();
 
     Info<< "End\n" << endl;
diff --git a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.C b/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.C
index 4b59a3a456095d11d489a53afdf2387a2cf7e3d1..e2dd8814a428a74008579f2d45d82d635ab7b663 100644
--- a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.C
+++ b/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.C
@@ -109,7 +109,22 @@ Foam::featureEdgeMesh::featureEdgeMesh(const IOobject& io)
 
         normals_ = vectorField(edgeMeshDict.lookup("normals"));
 
-        edgeDirections_ = vectorField(edgeMeshDict.lookup("edgeDirections"));
+        {
+            // Calculate edgeDirections
+
+            const edgeList& eds(edges());
+
+            const pointField& pts(points());
+
+            edgeDirections_.setSize(eds.size());
+
+            forAll(eds, eI)
+            {
+                edgeDirections_[eI] = eds[eI].vec(pts);
+            }
+
+            edgeDirections_ /= mag(edgeDirections_);
+        }
 
         edgeNormals_ = labelListList(edgeMeshDict.lookup("edgeNormals"));
 
@@ -137,23 +152,23 @@ Foam::featureEdgeMesh::featureEdgeMesh(const IOobject& io)
 Foam::featureEdgeMesh::featureEdgeMesh
 (
     const IOobject& io,
-    const featureEdgeMesh& em
+    const featureEdgeMesh& fem
 )
 :
     regIOobject(io),
-    edgeMesh(em),
-    concaveStart_(0),
-    mixedStart_(0),
-    nonFeatureStart_(0),
-    internalStart_(0),
-    flatStart_(0),
-    openStart_(0),
-    multipleStart_(0),
-    normals_(0),
-    edgeDirections_(0),
-    edgeNormals_(0),
-    featurePointNormals_(0),
-    regionEdges_(0),
+    edgeMesh(fem),
+    concaveStart_(fem.concaveStart()),
+    mixedStart_(fem.mixedStart()),
+    nonFeatureStart_(fem.nonFeatureStart()),
+    internalStart_(fem.internalStart()),
+    flatStart_(fem.flatStart()),
+    openStart_(fem.openStart()),
+    multipleStart_(fem.multipleStart()),
+    normals_(fem.normals()),
+    edgeDirections_(fem.edgeDirections()),
+    edgeNormals_(fem.edgeNormals()),
+    featurePointNormals_(fem.featurePointNormals()),
+    regionEdges_(fem.regionEdges()),
     edgeTree_(),
     edgeTreesByType_()
 {}
@@ -189,8 +204,7 @@ Foam::featureEdgeMesh::featureEdgeMesh
 (
     const surfaceFeatures& sFeat,
     const objectRegistry& obr,
-    const fileName& sFeatFileName,
-    bool write
+    const fileName& sFeatFileName
 )
 :
     regIOobject
@@ -368,8 +382,7 @@ Foam::featureEdgeMesh::featureEdgeMesh
                 "("
                 "    const surfaceFeatures& sFeat,"
                 "    const objectRegistry& obr,"
-                "    const fileName& sFeatFileName,"
-                "    bool write"
+                "    const fileName& sFeatFileName"
                 ")"
             )
                 << nl << "classifyEdge returned NONE on edge "
@@ -446,8 +459,7 @@ Foam::featureEdgeMesh::featureEdgeMesh
                 "("
                 "    const surfaceFeatures& sFeat,"
                 "    const objectRegistry& obr,"
-                "    const fileName& sFeatFileName,"
-                "    bool write"
+                "    const fileName& sFeatFileName"
                 ")"
             )
                 << nl << "classifyFeaturePoint returned NONFEATURE on point at "
@@ -540,12 +552,6 @@ Foam::featureEdgeMesh::featureEdgeMesh
     }
 
     featurePointNormals_ = featurePointNormals;
-
-    // Optionally write the edgeMesh to file
-    if (write)
-    {
-        writeObj(sFeatFileName.lessExt());
-    }
 }
 
 
@@ -1032,9 +1038,6 @@ bool Foam::featureEdgeMesh::writeData(Ostream& os) const
     os.writeKeyword("normals") << normals_ << token::END_STATEMENT
         << nl << nl;
 
-    os.writeKeyword("edgeDirections") << edgeDirections_ << token::END_STATEMENT
-        << nl << nl;
-
     os.writeKeyword("edgeNormals") << edgeNormals_ << token::END_STATEMENT
         << nl << nl;
 
diff --git a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H b/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H
index 2d7c67c50c94bac95f3fe2b2ef7df31bc36b3118..432b1ba56318ed1523a0013cb341792a31624670 100644
--- a/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H
+++ b/src/edgeMesh/featureEdgeMesh/featureEdgeMesh.H
@@ -210,8 +210,7 @@ public:
         (
             const surfaceFeatures& sFeat,
             const objectRegistry& obr,
-            const fileName& sFeatFileName,
-            bool write = false
+            const fileName& sFeatFileName
         );
 
         //- Construct from all components
@@ -353,9 +352,6 @@ public:
             //- Give precedence to the regIOobject write
             using regIOobject::write;
 
-            // //- ReadData function required for regIOobject read operation
-            // virtual bool readData(Istream&);
-
             //- WriteData function required for regIOobject write operation
             virtual bool writeData(Ostream&) const;
 };
diff --git a/src/edgeMesh/featureEdgeMesh/featureEdgeMeshI.H b/src/edgeMesh/featureEdgeMesh/featureEdgeMeshI.H
index e78974c6557c815f54b0b0e08b4cdd7d6010d4c4..45b1e0f2a1e95d3ea9daf31bde0d435e97bd3def 100644
--- a/src/edgeMesh/featureEdgeMesh/featureEdgeMeshI.H
+++ b/src/edgeMesh/featureEdgeMesh/featureEdgeMeshI.H
@@ -248,24 +248,3 @@ inline Foam::featureEdgeMesh::edgeStatus Foam::featureEdgeMesh::getEdgeStatus
 
 
 // ************************************************************************* //
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
index 351d0b9c492b98e987b0a8c95ff96581820434d7..d9104c25bdfc6f1e82ded95289bfb650421c5640 100644
--- a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
+++ b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
@@ -803,11 +803,13 @@ Foam::conformalVoronoiMesh::featurePointTree() const
 {
     if (featurePointTree_.empty())
     {
-        treeBoundBox overallBb(geometryToConformTo_.bounds());
-
         Random rndGen(92561);
 
-        overallBb.extend(rndGen, 1E-4);
+        treeBoundBox overallBb
+        (
+            treeBoundBox(geometryToConformTo_.bounds()).extend(rndGen, 1E-4)
+        );
+
         overallBb.min() -= point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
         overallBb.max() += point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
 
diff --git a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C
index 9fa9144a7741d92d5ba3ce1de366f6d3e65aba9a..6cb38339938af54e75d127804cf61a6f0270b990 100644
--- a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C
+++ b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C
@@ -624,11 +624,13 @@ void Foam::conformalVoronoiMesh::buildEdgeLocationTree
     const pointField& existingEdgeLocations
 ) const
 {
-    treeBoundBox overallBb(geometryToConformTo_.bounds());
-
     Random rndGen(72953);
 
-    overallBb.extend(rndGen, 1E-4);
+    treeBoundBox overallBb
+    (
+        treeBoundBox(geometryToConformTo_.bounds()).extend(rndGen, 1E-4)
+    );
+
     overallBb.min() -= point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
     overallBb.max() += point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
 
@@ -648,11 +650,13 @@ void Foam::conformalVoronoiMesh::buildEdgeLocationTree
 
 void Foam::conformalVoronoiMesh::buildSizeAndAlignmentTree() const
 {
-    treeBoundBox overallBb(geometryToConformTo_.bounds());
-
     Random rndGen(627391);
 
-    overallBb.extend(rndGen, 1E-4);
+    treeBoundBox overallBb
+    (
+        treeBoundBox(geometryToConformTo_.bounds()).extend(rndGen, 1E-4)
+    );
+
     overallBb.min() -= point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
     overallBb.max() += point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);