diff --git a/src/dynamicMesh/meshCut/cellCuts/cellCuts.C b/src/dynamicMesh/meshCut/cellCuts/cellCuts.C
index 98347f981bb468141c5d76de532becd5ecf999ff..32e36d279c7cb7e386bdafbc4794d15d7ee2695a 100644
--- a/src/dynamicMesh/meshCut/cellCuts/cellCuts.C
+++ b/src/dynamicMesh/meshCut/cellCuts/cellCuts.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -596,9 +596,12 @@ void Foam::cellCuts::calcFaceCuts() const
 
         if (allVerticesCut)
         {
-            WarningInFunction
-                << "Face " << facei << " vertices " << f
-                << " has all its vertices cut. Not cutting face." << endl;
+            if (verbose_ || debug)
+            {
+                WarningInFunction
+                    << "Face " << facei << " vertices " << f
+                    << " has all its vertices cut. Not cutting face." << endl;
+            }
 
             cutI = 0;
         }
@@ -808,13 +811,17 @@ bool Foam::cellCuts::addCut
         labelList truncVisited(visited);
         truncVisited.setSize(nVisited);
 
-        Pout<< "For cell " << celli << " : trying to add duplicate cut " << cut;
-        labelList cuts(1, cut);
-        writeCuts(Pout, cuts, loopWeights(cuts));
+        if (verbose_ || debug)
+        {
+            Pout<< "For cell " << celli << " : trying to add duplicate cut "
+                << cut;
+            labelList cuts(1, cut);
+            writeCuts(Pout, cuts, loopWeights(cuts));
 
-        Pout<< " to path:";
-        writeCuts(Pout, truncVisited, loopWeights(truncVisited));
-        Pout<< endl;
+            Pout<< " to path:";
+            writeCuts(Pout, truncVisited, loopWeights(truncVisited));
+            Pout<< endl;
+        }
 
         return false;
     }
@@ -905,9 +912,12 @@ bool Foam::cellCuts::walkFace
     }
     else
     {
-        WarningInFunction
-            << "In middle of cut. cell:" << celli << " face:" << facei
-            << " cuts:" << fCuts << " current cut:" << cut << endl;
+        if (verbose_ || debug)
+        {
+            WarningInFunction
+                << "In middle of cut. cell:" << celli << " face:" << facei
+                << " cuts:" << fCuts << " current cut:" << cut << endl;
+        }
 
         return false;
     }
@@ -1163,7 +1173,7 @@ void Foam::cellCuts::calcCellLoops(const labelList& cutCells)
         bool validLoop = false;
 
         // Quick rejection: has enough faces that are cut?
-        if (nCutFaces[celli] >= 3)
+        if (nCutFaces[celli] >= 1)
         {
             const labelList& cFaces = mesh().cells()[celli];
 
@@ -1249,11 +1259,14 @@ void Foam::cellCuts::calcCellLoops(const labelList& cutCells)
             {
                 // Invalid loop. Leave cellLoops_[celli] zero size which
                 // flags this.
-                Pout<< "calcCellLoops(const labelList&) : did not find valid"
-                    << " loop for cell " << celli << endl;
-                // Dump cell and cuts on cell.
-                writeUncutOBJ(".", celli);
-
+                if (verbose_ || debug)
+                {
+                    Pout<< "calcCellLoops(const labelList&) :"
+                        << " did not find valid"
+                        << " loop for cell " << celli << endl;
+                    // Dump cell and cuts on cell.
+                    writeUncutOBJ(".", celli);
+                }
                 cellLoops_[celli].setSize(0);
             }
         }
@@ -1427,12 +1440,15 @@ bool Foam::cellCuts::calcAnchors
 
     if (uncutIndex == -1)
     {
-        WarningInFunction
-            << "Invalid loop " << loop << " for cell " << celli << endl
-            << "Can not find point on cell which is not cut by loop."
-            << endl;
+        if (verbose_ || debug)
+        {
+            WarningInFunction
+                << "Invalid loop " << loop << " for cell " << celli << endl
+                << "Can not find point on cell which is not cut by loop."
+                << endl;
 
-        writeOBJ(".", celli, loopPts, labelList(0));
+            writeOBJ(".", celli, loopPts, labelList(0));
+        }
 
         return false;
     }
@@ -1447,12 +1463,15 @@ bool Foam::cellCuts::calcAnchors
     {
         // All vertices either in loop or in anchor. So split is along single
         // face.
-        WarningInFunction
-            << "Invalid loop " << loop << " for cell " << celli << endl
-            << "All vertices of cell are either in loop or in anchor set"
-            << endl;
+        if (verbose_ || debug)
+        {
+            WarningInFunction
+                << "Invalid loop " << loop << " for cell " << celli << endl
+                << "All vertices of cell are either in loop or in anchor set"
+                << endl;
 
-        writeOBJ(".", celli, loopPts, labelList(0));
+            writeOBJ(".", celli, loopPts, labelList(0));
+        }
 
         return false;
     }
@@ -1484,11 +1503,14 @@ bool Foam::cellCuts::calcAnchors
 
     if (uncutIndex != -1)
     {
-        WarningInFunction
-            << "Invalid loop " << loop << " for cell " << celli
-            << " since it splits the cell into more than two cells" << endl;
+        if (verbose_ || debug)
+        {
+            WarningInFunction
+                << "Invalid loop " << loop << " for cell " << celli
+                << " since it splits the cell into more than two cells" << endl;
 
-        writeOBJ(".", celli, loopPts, connectedPoints);
+            writeOBJ(".", celli, loopPts, connectedPoints);
+        }
 
         return false;
     }
@@ -1528,24 +1550,30 @@ bool Foam::cellCuts::calcAnchors
 
     if (connectedFaces.size() < 3)
     {
-        WarningInFunction
-            << "Invalid loop " << loop << " for cell " << celli
-            << " since would have too few faces on one side." << nl
-            << "All faces:" << cFaces << endl;
+        if (verbose_ || debug)
+        {
+            WarningInFunction
+                << "Invalid loop " << loop << " for cell " << celli
+                << " since would have too few faces on one side." << nl
+                << "All faces:" << cFaces << endl;
 
-        writeOBJ(".", celli, loopPts, connectedPoints);
+            writeOBJ(".", celli, loopPts, connectedPoints);
+        }
 
         return false;
     }
 
     if (otherFaces.size() < 3)
     {
-        WarningInFunction
-            << "Invalid loop " << loop << " for cell " << celli
-            << " since would have too few faces on one side." << nl
-            << "All faces:" << cFaces << endl;
+        if (verbose_ || debug)
+        {
+            WarningInFunction
+                << "Invalid loop " << loop << " for cell " << celli
+                << " since would have too few faces on one side." << nl
+                << "All faces:" << cFaces << endl;
 
-        writeOBJ(".", celli, loopPts, otherPoints);
+            writeOBJ(".", celli, loopPts, otherPoints);
+        }
 
         return false;
     }
@@ -1584,13 +1612,16 @@ bool Foam::cellCuts::calcAnchors
                     if (hasSet1)
                     {
                         // Second occurence of set1.
-                        WarningInFunction
-                            << "Invalid loop " << loop << " for cell " << celli
-                            << " since face " << f << " would be split into"
-                            << " more than two faces" << endl;
-
-                        writeOBJ(".", celli, loopPts, otherPoints);
+                        if (verbose_ || debug)
+                        {
+                            WarningInFunction
+                                << "Invalid loop " << loop << " for cell "
+                                << celli
+                                << " since face " << f << " would be split into"
+                                << " more than two faces" << endl;
 
+                            writeOBJ(".", celli, loopPts, otherPoints);
+                        }
                         return false;
                     }
 
@@ -1601,13 +1632,16 @@ bool Foam::cellCuts::calcAnchors
                     if (hasSet2)
                     {
                         // Second occurence of set1.
-                        WarningInFunction
-                            << "Invalid loop " << loop << " for cell " << celli
-                            << " since face " << f << " would be split into"
-                            << " more than two faces" << endl;
-
-                        writeOBJ(".", celli, loopPts, otherPoints);
+                        if (verbose_ || debug)
+                        {
+                            WarningInFunction
+                                << "Invalid loop " << loop << " for cell "
+                                << celli
+                                << " since face " << f << " would be split into"
+                                << " more than two faces" << endl;
 
+                            writeOBJ(".", celli, loopPts, otherPoints);
+                        }
                         return false;
                     }
 
@@ -1639,12 +1673,16 @@ bool Foam::cellCuts::calcAnchors
                     if (hasSet1)
                     {
                         // Second occurence of set1.
-                        WarningInFunction
-                            << "Invalid loop " << loop << " for cell " << celli
-                            << " since face " << f << " would be split into"
-                            << " more than two faces" << endl;
+                        if (verbose_ || debug)
+                        {
+                            WarningInFunction
+                                << "Invalid loop " << loop << " for cell "
+                                << celli
+                                << " since face " << f << " would be split into"
+                                << " more than two faces" << endl;
 
-                        writeOBJ(".", celli, loopPts, otherPoints);
+                            writeOBJ(".", celli, loopPts, otherPoints);
+                        }
 
                         return false;
                     }
@@ -1656,13 +1694,16 @@ bool Foam::cellCuts::calcAnchors
                     if (hasSet2)
                     {
                         // Second occurence of set1.
-                        WarningInFunction
-                            << "Invalid loop " << loop << " for cell " << celli
-                            << " since face " << f << " would be split into"
-                            << " more than two faces" << endl;
-
-                        writeOBJ(".", celli, loopPts, otherPoints);
+                        if (verbose_ || debug)
+                        {
+                            WarningInFunction
+                                << "Invalid loop " << loop << " for cell "
+                                << celli
+                                << " since face " << f << " would be split into"
+                                << " more than two faces" << endl;
 
+                            writeOBJ(".", celli, loopPts, otherPoints);
+                        }
                         return false;
                     }
 
@@ -2083,9 +2124,12 @@ bool Foam::cellCuts::validLoop
 
     if (faceContainingLoop != -1)
     {
-        WarningInFunction
-            << "Found loop on cell " << celli << " with all points"
-            << " on face " << faceContainingLoop << endl;
+        if (verbose_ || debug)
+        {
+            WarningInFunction
+                << "Found loop on cell " << celli << " with all points"
+                << " on face " << faceContainingLoop << endl;
+        }
 
         //writeOBJ(".", celli, loopPoints(loop, loopWeights), labelList(0));
 
@@ -2137,12 +2181,14 @@ void Foam::cellCuts::setFromCellLoops()
             )
             {
                 //writeOBJ(".", celli, loopPoints(celli), anchorPoints);
-
-                WarningInFunction
-                    << "Illegal loop " << loop
-                    << " when recreating cut-addressing"
-                    << " from existing cellLoops for cell " << celli
-                    << endl;
+                if (verbose_ || debug)
+                {
+                    WarningInFunction
+                        << "Illegal loop " << loop
+                        << " when recreating cut-addressing"
+                        << " from existing cellLoops for cell " << celli
+                        << endl;
+                }
 
                 cellLoops_[celli].setSize(0);
                 cellAnchorPoints_[celli].setSize(0);
@@ -2822,10 +2868,12 @@ Foam::cellCuts::cellCuts
     const labelList& cutCells,
     const labelList& meshVerts,
     const labelList& meshEdges,
-    const scalarField& meshEdgeWeights
+    const scalarField& meshEdgeWeights,
+    const bool verbose
 )
 :
     edgeVertex(mesh),
+    verbose_(verbose),
     pointIsCut_(expand(mesh.nPoints(), meshVerts)),
     edgeIsCut_(expand(mesh.nEdges(), meshEdges)),
     edgeWeight_(expand(mesh.nEdges(), meshEdges, meshEdgeWeights)),
@@ -2864,10 +2912,12 @@ Foam::cellCuts::cellCuts
     const polyMesh& mesh,
     const labelList& meshVerts,
     const labelList& meshEdges,
-    const scalarField& meshEdgeWeights
+    const scalarField& meshEdgeWeights,
+    const bool verbose
 )
 :
     edgeVertex(mesh),
+    verbose_(verbose),
     pointIsCut_(expand(mesh.nPoints(), meshVerts)),
     edgeIsCut_(expand(mesh.nEdges(), meshEdges)),
     edgeWeight_(expand(mesh.nEdges(), meshEdges, meshEdgeWeights)),
@@ -2911,10 +2961,12 @@ Foam::cellCuts::cellCuts
     const polyMesh& mesh,
     const labelList& cellLabels,
     const labelListList& cellLoops,
-    const List<scalarField>& cellEdgeWeights
+    const List<scalarField>& cellEdgeWeights,
+    const bool verbose
 )
 :
     edgeVertex(mesh),
+    verbose_(verbose),
     pointIsCut_(mesh.nPoints(), false),
     edgeIsCut_(mesh.nEdges(), false),
     edgeWeight_(mesh.nEdges(), -GREAT),
@@ -2956,10 +3008,12 @@ Foam::cellCuts::cellCuts
 (
     const polyMesh& mesh,
     const cellLooper& cellCutter,
-    const List<refineCell>& refCells
+    const List<refineCell>& refCells,
+    const bool verbose
 )
 :
     edgeVertex(mesh),
+    verbose_(verbose),
     pointIsCut_(mesh.nPoints(), false),
     edgeIsCut_(mesh.nEdges(), false),
     edgeWeight_(mesh.nEdges(), -GREAT),
@@ -3002,10 +3056,12 @@ Foam::cellCuts::cellCuts
     const polyMesh& mesh,
     const cellLooper& cellCutter,
     const labelList& cellLabels,
-    const List<plane>& cutPlanes
+    const List<plane>& cutPlanes,
+    const bool verbose
 )
 :
     edgeVertex(mesh),
+    verbose_(verbose),
     pointIsCut_(mesh.nPoints(), false),
     edgeIsCut_(mesh.nEdges(), false),
     edgeWeight_(mesh.nEdges(), -GREAT),
@@ -3054,10 +3110,12 @@ Foam::cellCuts::cellCuts
     const Map<edge>& faceSplitCut,
     const labelListList& cellLoops,
     const label nLoops,
-    const labelListList& cellAnchorPoints
+    const labelListList& cellAnchorPoints,
+    const bool verbose
 )
 :
     edgeVertex(mesh),
+    verbose_(verbose),
     pointIsCut_(pointIsCut),
     edgeIsCut_(edgeIsCut),
     edgeWeight_(edgeWeight),
diff --git a/src/dynamicMesh/meshCut/cellCuts/cellCuts.H b/src/dynamicMesh/meshCut/cellCuts/cellCuts.H
index 33760cdb9a3c9daa8a78ab4a1affd8a494cb9ef8..90dbd212ff816f6af6e3085f4bb7ecfb5c432407 100644
--- a/src/dynamicMesh/meshCut/cellCuts/cellCuts.H
+++ b/src/dynamicMesh/meshCut/cellCuts/cellCuts.H
@@ -112,6 +112,10 @@ class cellCuts
 {
     // Private data
 
+        //- Warn for illegal cuts
+        const bool verbose_;
+
+
         // Per point/edge status
 
             //- Is mesh point cut
@@ -472,7 +476,8 @@ public:
             const labelList& cutCells,
             const labelList& meshVerts,
             const labelList& meshEdges,
-            const scalarField& meshEdgeWeights
+            const scalarField& meshEdgeWeights,
+            const bool verbose = true
         );
 
         //- Construct from pattern of cuts. Detect cells to cut.
@@ -481,7 +486,8 @@ public:
             const polyMesh& mesh,
             const labelList& meshVerts,
             const labelList& meshEdges,
-            const scalarField& meshEdgeWeights
+            const scalarField& meshEdgeWeights,
+            const bool verbose = true
         );
 
         //- Construct from complete cellLoops through specified cells.
@@ -492,7 +498,8 @@ public:
             const polyMesh& mesh,
             const labelList& cellLabels,
             const labelListList& cellLoops,
-            const List<scalarField>& cellEdgeWeights
+            const List<scalarField>& cellEdgeWeights,
+            const bool verbose = true
         );
 
         //- Construct from list of cells to cut and direction to cut in
@@ -501,7 +508,8 @@ public:
         (
             const polyMesh& mesh,
             const cellLooper& cellCutter,
-            const List<refineCell>& refCells
+            const List<refineCell>& refCells,
+            const bool verbose = true
         );
 
         //- Construct from list of cells to cut and plane to cut with and
@@ -511,7 +519,8 @@ public:
             const polyMesh& mesh,
             const cellLooper& cellCutter,
             const labelList& cellLabels,
-            const List<plane>& cutPlanes
+            const List<plane>& cutPlanes,
+            const bool verbose = true
         );
 
         //- Construct from components
@@ -524,7 +533,8 @@ public:
             const Map<edge>& faceSplitCut,
             const labelListList& cellLoops,
             const label nLoops,
-            const labelListList& cellAnchorPoints
+            const labelListList& cellAnchorPoints,
+            const bool verbose = true
         );
 
 
@@ -630,7 +640,6 @@ public:
 
             //- debugging:Write edges of cell and loop
             void writeCellOBJ(const fileName& dir, const label celli) const;
-
 };