diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.H b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.H
index 6dfe8607e95708557eaa90521a2955135b774792..f015f01e0f26dd62ad62c16525597c652111c049 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.H
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyLayerDriver.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -159,6 +159,48 @@ private:
                     List<extrudeMode>& extrudeStatus
                 );
 
+                //- Truncate index in face
+                static label constrainFp(const label sz, const label fp);
+
+                //- Count common points between face and its neighbours
+                void countCommonPoints
+                (
+                    const indirectPrimitivePatch&,
+                    const label facei,
+                    Map<label>&
+                ) const;
+
+                //- Check if any common points form single string. Return
+                //  false if not.
+                bool checkCommonOrder
+                (
+                    const label nCommon,
+                    const face& curFace,
+                    const face& nbFace
+                ) const;
+
+                //- Check if any common points form single string; unmark
+                //  points on face if not
+                void checkCommonOrder
+                (
+                    const indirectPrimitivePatch& pp,
+                    const label facei,
+                    const Map<label>& nCommonPoints,
+                    pointField& patchDisp,
+                    labelList& patchNLayers,
+                    List<extrudeMode>& extrudeStatus
+                ) const;
+
+                //- Check if any common points form single string; unmark
+                //  points on face if not
+                void handleNonStringConnected
+                (
+                    const indirectPrimitivePatch& pp,
+                    pointField& patchDisp,
+                    labelList& patchNLayers,
+                    List<extrudeMode>& extrudeStatus
+                ) const;
+
                 //- No extrusion at non-manifold points.
                 void handleNonManifolds
                 (