diff --git a/applications/solvers/basic/potentialFoam/createControls.H b/applications/solvers/basic/potentialFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..7015cae02e8c7400d4c59a211637015c558d6b63
--- /dev/null
+++ b/applications/solvers/basic/potentialFoam/createControls.H
@@ -0,0 +1,9 @@
+const dictionary& potentialFlow
+(
+    mesh.solutionDict().subDict("potentialFlow")
+);
+
+const int nNonOrthCorr
+(
+    potentialFlow.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0)
+);
diff --git a/applications/solvers/basic/potentialFoam/readControls.H b/applications/solvers/basic/potentialFoam/readControls.H
deleted file mode 100644
index 915028c4e703ff273bc0a298ca149468c501441d..0000000000000000000000000000000000000000
--- a/applications/solvers/basic/potentialFoam/readControls.H
+++ /dev/null
@@ -1,5 +0,0 @@
-    const dictionary& potentialFlow =
-        mesh.solutionDict().subDict("potentialFlow");
-
-    const int nNonOrthCorr =
-        potentialFlow.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
diff --git a/applications/solvers/combustion/PDRFoam/PDRFoam.C b/applications/solvers/combustion/PDRFoam/PDRFoam.C
index 55bceadc8c927a1048ce4fb50e700badc97a5252..fa8518ba495f105c3159be9d482b22b892778a46 100644
--- a/applications/solvers/combustion/PDRFoam/PDRFoam.C
+++ b/applications/solvers/combustion/PDRFoam/PDRFoam.C
@@ -94,7 +94,7 @@ int main(int argc, char *argv[])
     #include "createFields.H"
     #include "createMRF.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -106,7 +106,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
index 2866fd55d4544168b1b551d67c6d4e3c187af371..057286f1e945dbc0f5edbbac8eabb202d211f3bb 100644
--- a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
+++ b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -97,7 +97,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C
index cf0c63df96ef63422d9e9a8812f635a3c0008aad..6090f923ca656495f3a70188b015ee6f331256a3 100644
--- a/applications/solvers/combustion/XiFoam/XiFoam.C
+++ b/applications/solvers/combustion/XiFoam/XiFoam.C
@@ -75,7 +75,7 @@ int main(int argc, char *argv[])
     #include "createMRF.H"
     #include "createFvOptions.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -85,7 +85,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/combustion/chemFoam/chemFoam.C b/applications/solvers/combustion/chemFoam/chemFoam.C
index 408ccc82bb39e4ee8b951eea26b81202a412f215..a34555193328ed10434313e593b3742edcb5e571 100644
--- a/applications/solvers/combustion/chemFoam/chemFoam.C
+++ b/applications/solvers/combustion/chemFoam/chemFoam.C
@@ -54,6 +54,7 @@ int main(int argc, char *argv[])
     #include "createSingleCellMesh.H"
     #include "createFields.H"
     #include "readInitialConditions.H"
+    #include "createControls.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/combustion/chemFoam/createControls.H b/applications/solvers/combustion/chemFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..14dcf56a16ee4c5b4de13796a4e5428a36469a2b
--- /dev/null
+++ b/applications/solvers/combustion/chemFoam/createControls.H
@@ -0,0 +1,8 @@
+if (runTime.controlDict().lookupOrDefault("suppressSolverInfo", false))
+{
+    lduMatrix::debug = 0;
+}
+
+Switch adjustTimeStep(runTime.controlDict().lookup("adjustTimeStep"));
+
+scalar maxDeltaT(readScalar(runTime.controlDict().lookup("maxDeltaT")));
diff --git a/applications/solvers/combustion/chemFoam/readControls.H b/applications/solvers/combustion/chemFoam/readControls.H
index 416271908ff1e400824e63438797e98b8398a862..c56206df1acce4568adf02b6dc7587f687d6d356 100644
--- a/applications/solvers/combustion/chemFoam/readControls.H
+++ b/applications/solvers/combustion/chemFoam/readControls.H
@@ -1,8 +1,3 @@
-    if (runTime.controlDict().lookupOrDefault("suppressSolverInfo", false))
-    {
-        lduMatrix::debug = 0;
-    }
+runTime.controlDict().lookup("adjustTimeStep") >> adjustTimeStep;
 
-    Switch adjustTimeStep(runTime.controlDict().lookup("adjustTimeStep"));
-
-    scalar maxDeltaT(readScalar(runTime.controlDict().lookup("maxDeltaT")));
+maxDeltaT = readScalar(runTime.controlDict().lookup("maxDeltaT"));
diff --git a/applications/solvers/combustion/engineFoam/readEngineTimeControls.H b/applications/solvers/combustion/engineFoam/readEngineTimeControls.H
index 8d6d5f28b3b50a9d5fd54f33fd5c0a565e187b84..cccee289dd1b5b64032990c0a96beab8a06589d4 100644
--- a/applications/solvers/combustion/engineFoam/readEngineTimeControls.H
+++ b/applications/solvers/combustion/engineFoam/readEngineTimeControls.H
@@ -1,3 +1,3 @@
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
 
     maxDeltaT = runTime.userTimeToTime(maxDeltaT);
diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C
index b24c6b2c0edf7ca65e320adf60e6e3295d79dd2d..31ace4dda8301be3e9dd1421dd38ecbe064c2464 100644
--- a/applications/solvers/combustion/fireFoam/fireFoam.C
+++ b/applications/solvers/combustion/fireFoam/fireFoam.C
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
     #include "createPyrolysisModel.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
     #include "readPyrolysisTimeControls.H"
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "compressibleCourantNo.H"
         #include "solidRegionDiffusionNo.H"
         #include "setMultiRegionDeltaT.H"
diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C
index f47b9c934663d99f012a0a5cf216f2874ecda1cf..2045c175fdc8b138b6abc373f4e239ffae2e50b0 100644
--- a/applications/solvers/combustion/reactingFoam/reactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C
@@ -48,6 +48,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "readGravitationalAcceleration.H"
@@ -57,7 +58,6 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
index a856fb17e5b92c6dd257a6c6ec419329edf2bbea..743db294542a6e87ede92d03f8e285bed1e6dbf5 100644
--- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
+++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
@@ -50,6 +50,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
@@ -58,7 +59,6 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
index 8a54ea69ab1fb37b8eeb6006ba2036a05df02c6c..cdb1c64d560ef0db360f3942b227c8707fcbc599 100644
--- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "readGravitationalAcceleration.H"
@@ -58,7 +59,6 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C
index 114d97fbf10b0cc6b9941b38dd384e138d20aba2..38ffddc7796944d22bc2c0ff7c3365e52c37b71b 100644
--- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C
+++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C
@@ -47,6 +47,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
     #include "createFields.H"
+    #include "createTimeControls.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
index 6c0ec3856fe375852c29b616ca3f89d0da6c9297..4faed39f75b37de026aabc6ea406e39b197b7722 100644
--- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
+++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
@@ -48,6 +48,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
     #include "createFields.H"
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/createControls.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..aed0e76956bb40c41b7cbf25aea54d7a77a03b67
--- /dev/null
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/createControls.H
@@ -0,0 +1,11 @@
+#include "createTimeControls.H"
+
+bool correctPhi
+(
+    pimple.dict().lookupOrDefault<Switch>("correctPhi", true)
+);
+
+bool checkMeshCourantNo
+(
+    pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false)
+);
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/readControls.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/readControls.H
index cf509804604443692b63e8a000493d6953ef7f55..ed2db49fb4dcc9ffd3084f3beda346b118d1eaa4 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/readControls.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/readControls.H
@@ -1,7 +1,6 @@
-    #include "readTimeControls.H"
+#include "readTimeControls.H"
 
-    bool correctPhi =
-        pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
+correctPhi = pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
 
-    bool checkMeshCourantNo =
-        pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
+checkMeshCourantNo =
+    pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C
index a91c678f9437afed5322cdc1d247a1ef91b96f1a..530d66ce5d53e2e03fb0d74de7c17f371473277a 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C
@@ -64,10 +64,10 @@ int main(int argc, char *argv[])
     #include "createFvOptions.H"
     #include "createRhoUf.H"
     #include "CourantNo.H"
+    #include "createControls.H"
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
index 09e3004b414a61d4d9202152eb0cdebd07e81087..5a54c9845f02433755bb1151201ef8633b810327 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
@@ -52,6 +52,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
@@ -60,7 +61,6 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
index 8ca9f03e3b251e46a6708c6eb41e93cb8bf5768d..1fc630ca62c35a1f3b75bebf40f93ff923179500 100644
--- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
+++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
@@ -52,7 +52,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
-    #include "readControls.H"
+    #include "createControls.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C
index e0d180088e082311a183d4a7f88dba244086ed18..c60a331b2d6e117c8873cf74765c6c4bdbb7cf9a 100644
--- a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C
+++ b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -56,7 +56,6 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-        #include "readTimeControls.H"
         #include "compressibleCourantNo.H"
 
         solve(fvm::ddt(rho) + fvc::div(phi));
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C
index db8c2da933621cce4c32c021c4d536ad11ab61f0..e71cd3febe2749ae45904b52d8af587d362c27b5 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C
@@ -68,7 +68,7 @@ int main(int argc, char *argv[])
     #include "createMRF.H"
     #include "createFvOptions.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -80,7 +80,7 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
index c0346acd4e0c7e1e37ff8988fff331b1b93fdab0..cd254643b08b07f2055462014ca67dbeffebf8c3 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
     #include "createFvOptions.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
index 7ee8492cbe2ad7fa227fa38a2c006754b3ad84ba..7fe33fab37f69e9e55ca3e59a3673aea84e5fbf3 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
@@ -63,7 +63,7 @@ int main(int argc, char *argv[])
     #include "createSolidFields.H"
 
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "readSolidTimeControls.H"
 
 
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "readSolidTimeControls.H"
         #include "readPIMPLEControls.H"
 
@@ -89,7 +89,6 @@ int main(int argc, char *argv[])
         {
             forAll(fluidRegions, i)
             {
-                #include "setRegionFluidFields.H"
                 #include "storeOldFluidFields.H"
             }
         }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/readSolidMultiRegionSIMPLEControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/readSolidMultiRegionSIMPLEControls.H
index e1d58d9f654ddb9d2cc8bd5c0abc57cfcc0a8da9..41b76293ef9a4e2508dd019a100638e817fee1f3 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/readSolidMultiRegionSIMPLEControls.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/readSolidMultiRegionSIMPLEControls.H
@@ -1,5 +1,4 @@
-    const dictionary& simple = solidRegions[i].solutionDict().subDict("SIMPLE");
-
-    const int nNonOrthCorr =
-        simple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
+const dictionary& simple = mesh.solutionDict().subDict("SIMPLE");
 
+const int nNonOrthCorr =
+    simple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
index d455bb0bd885b2ef3d21ff95a8e059b70f777205..49a945989d4875149861d30ae4cb9c8b3be7a41a 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
@@ -5,8 +5,8 @@
         (
             (
                 thermo.isotropic()
-                ? -fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)")
-                : -fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)")
+              ? -fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)")
+              : -fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)")
             )
           ==
             fvOptions(rho, h)
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H
index 94fd01a2baa30ffc9b16466ba1672f7e8a70dfd2..a5b1e0243d72c8679140a7fb2db4303950e634d8 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H
@@ -1,2 +1,2 @@
-    p_rgh.storePrevIter();
-    rho.storePrevIter();
+p_rghFluid[i].storePrevIter();
+rhoFluid[i].storePrevIter();
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H
index e23883c5fae11f298e0459feaacacc4c73af8dbe..fbed7f41e0da476d7112bc6f026b167c7bb70cfa 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H
@@ -1,4 +1,4 @@
-    const dictionary& pimple = mesh.solutionDict().subDict("PIMPLE");
+const dictionary& pimple = mesh.solutionDict().subDict("PIMPLE");
 
-    int nNonOrthCorr =
-        pimple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
+int nNonOrthCorr =
+    pimple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
index a6313e732fd81cd56395831010ff19bf67e218e5..ab168a20165598ed682f466664c7a3e1be0bc707 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
@@ -1,33 +1,32 @@
-    fvMesh& mesh = solidRegions[i];
-    solidThermo& thermo = thermos[i];
-    const radiation::radiationModel& radiation = radiations[i];
+fvMesh& mesh = solidRegions[i];
+solidThermo& thermo = thermos[i];
 
-    tmp<volScalarField> trho = thermo.rho();
-    const volScalarField& rho = trho();
+tmp<volScalarField> trho = thermo.rho();
+const volScalarField& rho = trho();
 
-    tmp<volScalarField> tcp = thermo.Cp();
-    const volScalarField& cp = tcp();
+tmp<volScalarField> tcp = thermo.Cp();
+const volScalarField& cp = tcp();
 
-    tmp<volSymmTensorField> taniAlpha;
-    if (!thermo.isotropic())
-    {
-        volSymmTensorField& aniAlpha = aniAlphas[i];
-        tmp<volVectorField> tkappaByCp = thermo.Kappa()/cp;
-        const coordinateSystem& coodSys = coordinates[i];
+tmp<volSymmTensorField> taniAlpha;
+if (!thermo.isotropic())
+{
+    volSymmTensorField& aniAlpha = aniAlphas[i];
+    tmp<volVectorField> tkappaByCp = thermo.Kappa()/cp;
+    const coordinateSystem& coodSys = coordinates[i];
 
-        aniAlpha.internalField() =
-            coodSys.R().transformVector(tkappaByCp());
-        aniAlpha.correctBoundaryConditions();
+    aniAlpha.internalField() =
+        coodSys.R().transformVector(tkappaByCp());
+    aniAlpha.correctBoundaryConditions();
 
-        taniAlpha = tmp<volSymmTensorField>
-        (
-            new volSymmTensorField(aniAlpha)
-        );
-    }
+    taniAlpha = tmp<volSymmTensorField>
+    (
+        new volSymmTensorField(aniAlpha)
+    );
+}
 
 
-    volScalarField& h = thermo.he();
+volScalarField& h = thermo.he();
 
-    const volScalarField& betav = betavSolid[i];
+const volScalarField& betav = betavSolid[i];
 
-    fv::IOoptionList& fvOptions = solidHeatSources[i];
+fv::IOoptionList& fvOptions = solidHeatSources[i];
diff --git a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
index 7af6625c23071f3d9000a43b05722afd41cfbfd8..bfa86ea1d9b12dc3e0f65d1a29e3167c08a30c8d 100644
--- a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createFields.H"
     #include "createFvOptions.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/createControls.H b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..ca5e25906b35020fef163083592443d2fd04358f
--- /dev/null
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/createControls.H
@@ -0,0 +1,11 @@
+#include "createTimeControls.H"
+
+bool correctPhi
+(
+    pimple.dict().lookupOrDefault("correctPhi", false)
+);
+
+bool checkMeshCourantNo
+(
+    pimple.dict().lookupOrDefault("checkMeshCourantNo", false)
+);
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C
index ebdb4dfef1d99a03f2929b168bc4a36c5676c71c..cb01c03d63c4833b4ff83add869fe3095dd6580b 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
     #include "createUf.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
-    #include "readTimeControls.H"
+    #include "createControls.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/readControls.H b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/readControls.H
index 1c53b5e147dfb21cdac3f77dce8655b8b7abce56..9f982e260b0c9e61062f7aff3e21048f3bcfd9e9 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/readControls.H
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/readControls.H
@@ -1,7 +1,5 @@
-    #include "readTimeControls.H"
+#include "readTimeControls.H"
 
-    const bool correctPhi =
-        pimple.dict().lookupOrDefault("correctPhi", false);
+correctPhi = pimple.dict().lookupOrDefault("correctPhi", false);
 
-    const bool checkMeshCourantNo =
-        pimple.dict().lookupOrDefault("checkMeshCourantNo", false);
+checkMeshCourantNo = pimple.dict().lookupOrDefault("checkMeshCourantNo", false);
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
index c37a8d76d9c57830e90dd5c9c8399a39b3da51f8..72c6178d723b6f290f89caf797255c7166df9e9a 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
@@ -51,6 +51,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/lagrangian/DPMFoam/DPMFoam.C b/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
index 0ab7654cf0a4ff4eafc38daa730866f3aca292ff..8999e03663d6e72a5995b25c07802faac561194e 100644
--- a/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
+++ b/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
@@ -60,6 +60,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
index c9a081f43d25395b91ad0bbb41638b5aa0aec62f..99fc9feed17a10588fc1d62a1e4da29abecf3486 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
+++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
@@ -58,6 +58,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "readGravitationalAcceleration.H"
@@ -69,7 +70,6 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C
index a2f82459bc9c4625619c6e45abbad18564e88993..98b33ff2854210022f10a2bf1ba55a230393350f 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C
@@ -59,7 +59,7 @@ int main(int argc, char *argv[])
     #include "createRadiationModel.H"
     #include "createSurfaceFilmModel.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -69,7 +69,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "compressibleCourantNo.H"
         #include "setMultiRegionDeltaT.H"
         #include "setDeltaT.H"
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index 2d49b7170588bb4de15d74c75440c172dc0af814..e314d8b31882a8fb04090201d7b50798abbc5d1c 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -54,6 +54,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
@@ -64,7 +65,6 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C
index 40f7ea1b395a8294c9d031c77d73171a2c05e7c1..38ac4e515b620bc90b86ee286b6bfb0646e1579b 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C
+++ b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C
@@ -52,7 +52,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
-    #include "readTimeControls.H"
+    #include "createControls.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
     #include "createRhoUf.H"
@@ -104,6 +104,11 @@ int main(int argc, char *argv[])
             }
         }
 
+        if (mesh.changing() && checkMeshCourantNo)
+        {
+            #include "meshCourantNo.H"
+        }
+
         parcels.evolve();
 
         #include "rhoEqn.H"
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/readEngineTimeControls.H b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/readEngineTimeControls.H
index 8d6d5f28b3b50a9d5fd54f33fd5c0a565e187b84..cccee289dd1b5b64032990c0a96beab8a06589d4 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/readEngineTimeControls.H
+++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/readEngineTimeControls.H
@@ -1,3 +1,3 @@
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
 
     maxDeltaT = runTime.userTimeToTime(maxDeltaT);
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
index da39008562b53ab41ee999d7efdae9e0d59d8f04..066ce82f68bbce7a0b0250c437d79a533127f8c3 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
+++ b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
     #include "createClouds.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
index be86aa80957b3687ab0fed035fcd2ff3912a8c72..189208de950a75c69ee914b77cd794ed78654b16 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
@@ -48,12 +48,11 @@ int main(int argc, char *argv[])
 
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
-    #include "initContinuityErrs.H"
 
     pimpleControl pimple(mesh);
 
     #include "readThermodynamicProperties.H"
-    #include "readControls.H"
+    #include "createControls.H"
     #include "createFields.H"
     #include "createUf.H"
     #include "createPcorrTypes.H"
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/createControls.H b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..fbda6ae1a10782bcc22d4c7a14672e093868ec2c
--- /dev/null
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/createControls.H
@@ -0,0 +1,11 @@
+#include "createTimeControls.H"
+
+scalar maxAcousticCo
+(
+    readScalar(runTime.controlDict().lookup("maxAcousticCo"))
+);
+
+bool correctPhi
+(
+    pimple.dict().lookupOrDefault<Switch>("correctPhi", true)
+);
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/readControls.H b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/readControls.H
index 216e9b4247aa70fc76afda34f80f7310118d6035..ad79c78c61375d7bed58c2eb1fd9be19099e4f25 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/readControls.H
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/readControls.H
@@ -1,9 +1,4 @@
 #include "readTimeControls.H"
 
-scalar maxAcousticCo
-(
-    readScalar(runTime.controlDict().lookup("maxAcousticCo"))
-);
-
-bool correctPhi =
-    pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
+maxAcousticCo = readScalar(runTime.controlDict().lookup("maxAcousticCo"));
+correctPhi = pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
index c676bb63b107d26be9150075027f8140d1015729..b521f5b9c6284ac07b9d5a59416d0153f85a6465 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
@@ -50,9 +50,8 @@ int main(int argc, char *argv[])
     pimpleControl pimple(mesh);
 
     #include "readThermodynamicProperties.H"
-    #include "readControls.H"
+    #include "createControls.H"
     #include "createFields.H"
-    #include "initContinuityErrs.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
diff --git a/applications/solvers/multiphase/cavitatingFoam/createControls.H b/applications/solvers/multiphase/cavitatingFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..e5c7eea9f7075fec7f28ff1dff50639b81ed3191
--- /dev/null
+++ b/applications/solvers/multiphase/cavitatingFoam/createControls.H
@@ -0,0 +1,6 @@
+#include "createTimeControls.H"
+
+scalar maxAcousticCo
+(
+    readScalar(runTime.controlDict().lookup("maxAcousticCo"))
+);
diff --git a/applications/solvers/multiphase/cavitatingFoam/readControls.H b/applications/solvers/multiphase/cavitatingFoam/readControls.H
index 234478955bf970e8f88f33a59dcf8dccac4dfccd..a2d4dc80a7cd819a48c591b4cd7616683a54551a 100644
--- a/applications/solvers/multiphase/cavitatingFoam/readControls.H
+++ b/applications/solvers/multiphase/cavitatingFoam/readControls.H
@@ -1,6 +1,3 @@
 #include "readTimeControls.H"
 
-scalar maxAcousticCo
-(
-    readScalar(runTime.controlDict().lookup("maxAcousticCo"))
-);
+maxAcousticCo = readScalar(runTime.controlDict().lookup("maxAcousticCo"));
diff --git a/applications/solvers/multiphase/compressibleInterFoam/alphaControls.H b/applications/solvers/multiphase/compressibleInterFoam/alphaControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..a99a0b39e289f60589a61d3c43b1fb94fcff81dc
--- /dev/null
+++ b/applications/solvers/multiphase/compressibleInterFoam/alphaControls.H
@@ -0,0 +1,5 @@
+const dictionary& alphaControls = mesh.solverDict(alpha1.name());
+
+label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr")));
+
+label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
index 9d56a2334f9c6dc8522c0b34690e1e89b55ac99e..4e40addf2075540e121d582c39027dcfdc708c26 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
 
     #include "createFields.H"
     #include "createUf.H"
-    #include "readControls.H"
+    #include "createControls.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/createControls.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..aed0e76956bb40c41b7cbf25aea54d7a77a03b67
--- /dev/null
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/createControls.H
@@ -0,0 +1,11 @@
+#include "createTimeControls.H"
+
+bool correctPhi
+(
+    pimple.dict().lookupOrDefault<Switch>("correctPhi", true)
+);
+
+bool checkMeshCourantNo
+(
+    pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false)
+);
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H
index cf509804604443692b63e8a000493d6953ef7f55..ed2db49fb4dcc9ffd3084f3beda346b118d1eaa4 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/readControls.H
@@ -1,7 +1,6 @@
-    #include "readTimeControls.H"
+#include "readTimeControls.H"
 
-    bool correctPhi =
-        pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
+correctPhi = pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
 
-    bool checkMeshCourantNo =
-        pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
+checkMeshCourantNo =
+    pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
index de2c07e1488d9ad314d5d1add80f12823e712ea7..7736099eaa8cb9a01485dab0f1302a9b6b55822f 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
@@ -56,8 +56,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
-    #include "readTimeControls.H"
-    #include "initContinuityErrs.H"
+    #include "createTimeControls.H"
     #include "createFields.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
@@ -68,7 +67,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
index 21ef8128899fb6c42ccda833cec442bdf34d6dc4..4fd75efebff7b37a453a1e8d5dc7a8a98fc34183 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
@@ -51,8 +51,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
-    #include "readTimeControls.H"
-    #include "initContinuityErrs.H"
+    #include "createTimeControls.H"
     #include "createFields.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
@@ -63,7 +62,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNo.H"
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
diff --git a/applications/solvers/multiphase/driftFluxFoam/alphaControls.H b/applications/solvers/multiphase/driftFluxFoam/alphaControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..759e0c22b67a9cf89ec58126be7a8ce8d529f162
--- /dev/null
+++ b/applications/solvers/multiphase/driftFluxFoam/alphaControls.H
@@ -0,0 +1,15 @@
+const dictionary& alphaControls = mesh.solverDict(alpha1.name());
+
+label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr")));
+
+label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
+
+bool MULESCorr(alphaControls.lookupOrDefault<Switch>("MULESCorr", false));
+
+// Apply the compression correction from the previous iteration
+// Improves efficiency for steady-simulations but can only be applied
+// once the alpha field is reasonably steady, i.e. fully developed
+bool alphaApplyPrevCorr
+(
+    alphaControls.lookupOrDefault<Switch>("alphaApplyPrevCorr", false)
+);
diff --git a/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C b/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
index 3fc0f0ff0b79358cfcc076cd52b27a9dc066c5a4..3b88b1b9567d0ce9b251a33245c71a081a2f6293 100644
--- a/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
+++ b/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
@@ -57,6 +57,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/createControls.H b/applications/solvers/multiphase/interFoam/interDyMFoam/createControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..f1930cdfc08077e975d9c6e790fa098b3e5ddde7
--- /dev/null
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/createControls.H
@@ -0,0 +1,16 @@
+#include "createTimeControls.H"
+
+bool correctPhi
+(
+    pimple.dict().lookupOrDefault<Switch>("correctPhi", true)
+);
+
+bool checkMeshCourantNo
+(
+    pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false)
+);
+
+bool moveMeshOuterCorrectors
+(
+    pimple.dict().lookupOrDefault<Switch>("moveMeshOuterCorrectors", false)
+);
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
index 9340e3a2ed58005830c29519d1473103e6128a33..f30a1958069b45592391cd909cfc0556dbf10376 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
@@ -59,6 +59,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createControls.H"
     #include "createRDeltaT.H"
     #include "createFields.H"
     #include "createMRF.H"
@@ -83,7 +84,6 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/readControls.H b/applications/solvers/multiphase/interFoam/interDyMFoam/readControls.H
index bf8b38f42616a82904a1aa8ff4dd5eba9cffb629..d82dcecb8a582f508f201265bcc7af2405446d41 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/readControls.H
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/readControls.H
@@ -1,16 +1,9 @@
 #include "readTimeControls.H"
 
-bool correctPhi
-(
-    pimple.dict().lookupOrDefault<Switch>("correctPhi", true)
-);
+correctPhi = pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
 
-bool checkMeshCourantNo
-(
-    pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false)
-);
+checkMeshCourantNo =
+    pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
 
-bool moveMeshOuterCorrectors
-(
-    pimple.dict().lookupOrDefault<Switch>("moveMeshOuterCorrectors", false)
-);
+moveMeshOuterCorrectors =
+    pimple.dict().lookupOrDefault<Switch>("moveMeshOuterCorrectors", false);
diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C
index 50a4e1aca867e3688c462cc5e293b33b681edda9..26f22af205ac20c423167f7768b639efec40408e 100644
--- a/applications/solvers/multiphase/interFoam/interFoam.C
+++ b/applications/solvers/multiphase/interFoam/interFoam.C
@@ -62,6 +62,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaControls.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..a99a0b39e289f60589a61d3c43b1fb94fcff81dc
--- /dev/null
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaControls.H
@@ -0,0 +1,5 @@
+const dictionary& alphaControls = mesh.solverDict(alpha1.name());
+
+label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr")));
+
+label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
index 78865f023be98aa8fccd45e27257792aaddcea17..86a05e71f1aa4ab54c68d778cb09522bcf3712e7 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
@@ -52,6 +52,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/alphaControls.H b/applications/solvers/multiphase/interPhaseChangeFoam/alphaControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..2b42206226dd917da4ef6cf3a16eb5eab3fb45c9
--- /dev/null
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/alphaControls.H
@@ -0,0 +1,21 @@
+const dictionary& alphaControls = mesh.solverDict(alpha1.name());
+
+label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr")));
+
+label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
+
+bool MULESCorr(alphaControls.lookupOrDefault<Switch>("MULESCorr", false));
+
+// Apply the compression correction from the previous iteration
+// Improves efficiency for steady-simulations but can only be applied
+// once the alpha field is reasonably steady, i.e. fully developed
+//bool alphaApplyPrevCorr
+//(
+//    alphaControls.lookupOrDefault<Switch>("alphaApplyPrevCorr", false)
+//);
+
+// Isotropic compression coefficient
+scalar icAlpha
+(
+    alphaControls.lookupOrDefault<scalar>("icAlpha", 0)
+);
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
index 077738ccb2945dc7b3609742c86a0974434bb2e1..a04fc469475bcfd27ab889d8478fed6078d28abe 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
@@ -1,6 +1,13 @@
 {
-    surfaceScalarField phic(mag(phi/mesh.magSf()));
-    phic = min(interface.cAlpha()*phic, max(phic));
+    // Standard face-flux compression coefficient
+    surfaceScalarField phic(interface.cAlpha()*mag(phi/mesh.magSf()));
+
+    // Add the optional isotropic compression contribution
+    if (icAlpha > 0)
+    {
+        phic *= (1.0 - icAlpha);
+        phic += (interface.cAlpha()*icAlpha)*fvc::interpolate(mag(U));
+    }
 
     volScalarField divU(fvc::div(phi));
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
index a1a416f08630c7162868f57798a1dd3a96819d1f..93e4ebc0d11edd56cf131a6653d0ed70368b210d 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
@@ -63,10 +63,10 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "../interFoam/interDyMFoam/createControls.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
     #include "createFvOptions.H"
-    #include "readTimeControls.H"
 
     volScalarField rAU
     (
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
index 8f5c97522fbc7d4553190c089fd844a241a91001..8552126034e47501b610dc1415a18f47c08ff64c 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
@@ -60,10 +60,9 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
-    #include "initContinuityErrs.H"
     #include "createFields.H"
     #include "createFvOptions.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -73,7 +72,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
index 2cb3156cc60ecd0dabcc4327c29b0f8b437d54d6..8244f739d75777f2e07a71b566cf47b92de4600a 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
     #include "createFields.H"
     #include "createMRFZones.H"
     #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "correctPhi.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
index 8c2c2a9cb8625c3843bb85c1777f5086d2162d46..a04341c7ba9afcd1d891f6d6c3237c3e4ff62d84 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
@@ -52,10 +52,10 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createControls.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
-    #include "readTimeControls.H"
 
     volScalarField rAU
     (
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
index d3d713d3c83bdccba1e3795bfed2196588d42342..0fb8ff1208f3ec7ab1ea1b089f12063c9d85cb69 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
@@ -54,7 +54,7 @@ int main(int argc, char *argv[])
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "correctPhi.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
@@ -65,7 +65,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNo.H"
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
index 9fb6cae5a60b83b23fe42f1287837eaa64740cf3..b740ab2b9b174afedaa758e8f24d88e32189f52d 100644
--- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
+++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
@@ -57,6 +57,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createControls.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
index 0d27e722eef138514fc5d01ee2f75cfacf670be1..b98bdb694d5c5a9481a806095e5b777268e2b4ec 100644
--- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
+++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
@@ -52,6 +52,7 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
index b0434b45d67734e5617dc73f6c566ecb3d6f158b..d723a7ce5e44e82ff3346ba8079d624d938bbb3e 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
@@ -52,13 +52,12 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
+    #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "createFields.H"
-    #include "initContinuityErrs.H"
 
     if (!LTS)
     {
-        #include "readTimeControls.H"
         #include "CourantNo.H"
         #include "setInitialDeltaT.H"
     }
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/alphaControls.H b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..db77d94af4dee9b8099d9d77b15fcced6e4b72cd
--- /dev/null
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaControls.H
@@ -0,0 +1,3 @@
+const dictionary& alphaControls = mesh.solverDict(alpha1.name());
+
+label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
index dab88b930aff6dccc07dd32d83d8002e20abcc58..d8519d6182ba154314733c4648cadbb272b05830 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
 
     #include "initContinuityErrs.H"
     #include "createFields.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -61,7 +61,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNo.H"
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
index f2bd6d9a9c7e1951e1c309d000c69dc18aec8f21..646b340c826cf06b280f8aae3d2c7b77a33a6126 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
@@ -52,8 +52,7 @@ int main(int argc, char *argv[])
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
-    #include "initContinuityErrs.H"
-    #include "readTimeControls.H"
+    #include "createTimeControls.H"
     #include "CourantNos.H"
     #include "setInitialDeltaT.H"
 
@@ -79,7 +78,7 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "createTimeControls.H"
         #include "CourantNos.H"
         #include "setDeltaT.H"
 
diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/createSolidDisplacementFoamControls.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/createSolidDisplacementFoamControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..a01c72dfa962859ce339f0fab938682843c3994a
--- /dev/null
+++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/createSolidDisplacementFoamControls.H
@@ -0,0 +1,6 @@
+const dictionary& stressControl = mesh.solutionDict().subDict("stressAnalysis");
+
+int nCorr = stressControl.lookupOrDefault<int>("nCorrectors", 1);
+
+scalar convergenceTolerance(readScalar(stressControl.lookup("D")));
+Switch compactNormalStress(stressControl.lookup("compactNormalStress"));
diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/readSolidDisplacementFoamControls.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/readSolidDisplacementFoamControls.H
index 8b59cc497e5a310375408631d6c28bc0e90b8030..5ffe09b9e84931fde3ff9e8079100959b8fe8bdf 100644
--- a/applications/solvers/stressAnalysis/solidDisplacementFoam/readSolidDisplacementFoamControls.H
+++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/readSolidDisplacementFoamControls.H
@@ -1,6 +1,3 @@
-const dictionary& stressControl = mesh.solutionDict().subDict("stressAnalysis");
-
-const int nCorr = stressControl.lookupOrDefault<int>("nCorrectors", 1);
-
-scalar convergenceTolerance(readScalar(stressControl.lookup("D")));
-Switch compactNormalStress(stressControl.lookup("compactNormalStress"));
+nCorr = stressControl.lookupOrDefault<int>("nCorrectors", 1);
+convergenceTolerance = readScalar(stressControl.lookup("D"));
+stressControl.lookup("compactNormalStress") >> compactNormalStress;
diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C
index 3d901fcdf132a61545236e84aa021a4c514d2129..e2c6c9433794ad6f0fd43bdac182ee6ead415492 100644
--- a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C
+++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,7 +48,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readMechanicalProperties.H"
     #include "readThermalProperties.H"
-    #include "readSolidDisplacementFoamControls.H"
+    #include "createSolidDisplacementFoamControls.H"
     #include "createFields.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options
index d3cc19f05efa6cdf59eaeeec807bfc17770c42d2..44c1d87758d5258e02108d66f7a3ce1d089c6826 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options
@@ -12,7 +12,7 @@ EXE_INC = \
     ${CGAL_EXACT} \
     ${CGAL_INEXACT} \
     ${CGAL_INC} \
-    ${c++CGALWARN} \
+    ${c++LESSWARN} \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options
index df6a850c11f2c49a276c9ec82e41bcde08aa15a7..b3f2e7dd7ceed3f5a69ecb53a20f978ea2a58abf 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options
@@ -12,7 +12,7 @@ EXE_INC = \
     ${CGAL_EXACT} \
     ${CGAL_INEXACT} \
     ${CGAL_INC} \
-    ${c++CGALWARN} \
+    ${c++LESSWARN} \
     -I../conformalVoronoiMesh/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options
index feca897aa65452cc30242254aa50dd40412b72aa..0c04fa99bee1ca5e70ae9d7e1114216a7971095d 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options
@@ -7,7 +7,7 @@ EXE_INC = \
     ${ROUNDING_MATH} \
     ${EXE_NDEBUG} \
     ${CGAL_INC} \
-    ${c++CGALWARN} \
+    ${c++LESSWARN} \
     -I$(FOAM_APP)/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/lnInclude \
     -I../conformalVoronoi2DMesh/lnInclude \
     -I../conformalVoronoiMesh/lnInclude \
diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
index c29c40c3086de9b7fdb98615be411c76cdbdc3ec..6b3b632467cc425280080bc13c0505cdf52cb39a 100644
--- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
+++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
@@ -51,7 +51,6 @@ Description
     #include "zoltanRenumber.H"
 #endif
 
-
 using namespace Foam;
 
 
@@ -635,14 +634,12 @@ int main(int argc, char *argv[])
         "calculate the rms of the frontwidth"
     );
 
-
-// Force linker to include zoltan symbols. This section is only needed since
-// Zoltan is a static library
-#ifdef FOAM_USE_ZOLTAN
+    // Force linker to include zoltan symbols. This section is only needed since
+    // Zoltan is a static library
+    #ifdef FOAM_USE_ZOLTAN
     Info<< "renumberMesh built with zoltan support." << nl << endl;
     (void)zoltanRenumber::typeName;
-#endif
-
+    #endif
 
     #include "setRootCase.H"
     #include "createTime.H"
@@ -651,7 +648,7 @@ int main(int argc, char *argv[])
     // Get times list
     instantList Times = runTime.times();
 
-    // set startTime and endTime depending on -time and -latestTime options
+    // Set startTime and endTime depending on -time and -latestTime options
     #include "checkTimeOptions.H"
 
     runTime.setTime(Times[startTime], startTime);
@@ -686,7 +683,7 @@ int main(int argc, char *argv[])
             sumSqrIntersect,
             sumOp<scalar>()
         )
-      / mesh.globalData().nTotalCells()
+       /mesh.globalData().nTotalCells()
     );
 
     Info<< "Mesh size: " << mesh.globalData().nTotalCells() << nl
diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_part_coords.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_part_coords.H
index 6b6476086ce65972f32c8db0e9d76557bbeb0cf1..9cc17a1ec6f00d9061101f72d6dd199f02a8b57f 100644
--- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_part_coords.H
+++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_get_part_coords.H
@@ -18,9 +18,9 @@ int USERD_get_part_coords
 
         for (label indx=0; indx<nPoints; indx++)
         {
-            coord_array[0][indx+1] = (float)points[indx].x();
-            coord_array[1][indx+1] = (float)points[indx].y();
-            coord_array[2][indx+1] = (float)points[indx].z();
+            coord_array[0][indx+1] = float(points[indx].x());
+            coord_array[1][indx+1] = float(points[indx].y());
+            coord_array[2][indx+1] = float(points[indx].z());
         }
     }
     else if (part_number < nPatches+2)
@@ -32,9 +32,9 @@ int USERD_get_part_coords
 
         for (label indx=0; indx<nPoints; indx++)
         {
-            coord_array[0][indx+1] = (float)points[indx].x();
-            coord_array[1][indx+1] = (float)points[indx].y();
-            coord_array[2][indx+1] = (float)points[indx].z();
+            coord_array[0][indx+1] = float(points[indx].x());
+            coord_array[1][indx+1] = float(points[indx].y());
+            coord_array[2][indx+1] = float(points[indx].z());
         }
 
     }
@@ -44,9 +44,9 @@ int USERD_get_part_coords
 
         forAllConstIter(Cloud<passiveParticle>, *sprayPtr, iter)
         {
-            coord_array[0][indx] = (float)iter().position().x();
-            coord_array[1][indx] = (float)iter().position().y();
-            coord_array[2][indx] = (float)iter().position().z();
+            coord_array[0][indx] = float(iter().position().x());
+            coord_array[1][indx] = float(iter().position().y());
+            coord_array[2][indx] = float(iter().position().z());
             indx++;
         }
 
diff --git a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_set_filenames.H b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_set_filenames.H
index 11c8c15b9f05f78b1e806f34ae13784f060e9811..fdb7c38c9f7f2a9927c7fbfb381a91326df669d0 100644
--- a/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_set_filenames.H
+++ b/applications/utilities/postProcessing/graphics/ensightFoamReader/USERD_set_filenames.H
@@ -28,7 +28,7 @@ int USERD_set_filenames
         // remove the last '/' from rootDir
         if (the_path[lRoot-1] == '/')
         {
-            the_path[lRoot-1] = (char)NULL;
+            the_path[lRoot-1] = char(NULL);
         }
         else
         {
@@ -182,9 +182,9 @@ int USERD_set_filenames
         IOobjectList objects(*meshPtr, runTime.timeName(), cloud::prefix);
 
         lagrangianScalarNames =
-            (const wordList&)objects.names(sprayScalarFieldName);
+            objects.names(sprayScalarFieldName);
         lagrangianVectorNames =
-            (const wordList&)objects.names(sprayVectorFieldName);
+            objects.names(sprayVectorFieldName);
 
         isSpray[fieldNames.size()] = true;
 
diff --git a/etc/config/settings.csh b/etc/config/settings.csh
index 882fa326d7eb9fc21aa819b8a6e565176fc87d77..864088d6ecfd36810a5d47833b03addcd93348da 100644
--- a/etc/config/settings.csh
+++ b/etc/config/settings.csh
@@ -426,7 +426,7 @@ case SYSTEMMPI:
             echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
             echo "    MPI_ARCH_INC is not set. Example:"
             echo
-            echo '        setenv MPI_ARCH_INC "-I$MPI_ROOT/include"'
+            echo '        setenv MPI_ARCH_INC "-isystem $MPI_ROOT/include"'
             echo
         endif
 
diff --git a/etc/config/settings.sh b/etc/config/settings.sh
index 95c41e1bc803b91d1160c5cdacea7e4983d90425..6a7bce43e05d0b0a47b6650fb6ba9531e9c38583 100644
--- a/etc/config/settings.sh
+++ b/etc/config/settings.sh
@@ -453,7 +453,7 @@ SYSTEMMPI)
             echo "Warning in $WM_PROJECT_DIR/etc/config/settings.sh:" 1>&2
             echo "    MPI_ARCH_INC is not set. Example:" 1>&2
             echo 1>&2
-            echo "        export MPI_ARCH_INC=\"-I\$MPI_ROOT/include\"" 1>&2
+            echo "        export MPI_ARCH_INC=\"-isystem \$MPI_ROOT/include\"" 1>&2
             echo 1>&2
         fi
 
diff --git a/src/OpenFOAM/include/checkTimeOption.H b/src/OpenFOAM/include/checkTimeOption.H
index 64ef62440f0b18dda6d70dd9395ef6d0f054031a..412d44ef0e702944f2a15b38711e36ffb056eceb 100644
--- a/src/OpenFOAM/include/checkTimeOption.H
+++ b/src/OpenFOAM/include/checkTimeOption.H
@@ -1,17 +1,16 @@
 //
 // checkTimeOption.H
 // ~~~~~~~~~~~~~~~~~
-// check -time and -latestTime options
+// Check -time and -latestTime options
 
-    if (args.optionFound("time"))
-    {
-        Foam::scalar timeValue = args.optionRead<scalar>("time");
+if (args.optionFound("time"))
+{
+    Foam::scalar timeValue = args.optionRead<scalar>("time");
 
-        startTime = Foam::Time::findClosestTimeIndex(Times, timeValue);
-        endTime = startTime + 1;
-    }
+    startTime = Foam::Time::findClosestTimeIndex(Times, timeValue);
+}
 
-    if (args.optionFound("latestTime"))
-    {
-        startTime = Times.size() - 1;
-    }
+if (args.optionFound("latestTime"))
+{
+    startTime = Times.size() - 1;
+}
diff --git a/src/OpenFOAM/include/checkTimeOptions.H b/src/OpenFOAM/include/checkTimeOptions.H
index a52fc1d05ba938b5b9ebe58086db7caf9628e446..d0d2051ae43e1cab6a1d5ab0bcbdf40a4e7fc5cb 100644
--- a/src/OpenFOAM/include/checkTimeOptions.H
+++ b/src/OpenFOAM/include/checkTimeOptions.H
@@ -3,10 +3,9 @@
 // ~~~~~~~~~~~~~~~~~~
 
 Foam::label startTime = 0;
-Foam::label endTime = Times.size();
 
-// unless -constant is present, skip startTime if it is "constant"
+// Unless -constant is present, skip startTime if it is "constant"
 #include "checkConstantOption.H"
 
-// check -time and -latestTime options
+// Check -time and -latestTime options
 #include "checkTimeOption.H"
diff --git a/src/OpenFOAM/include/checkTimeOptionsNoConstant.H b/src/OpenFOAM/include/checkTimeOptionsNoConstant.H
index 407903ddc17ba8e5f0d2021f8bfe6dbb8b8f2f68..6b4e836f5af68cae5ef8de43d1b9eccfaf71ff58 100644
--- a/src/OpenFOAM/include/checkTimeOptionsNoConstant.H
+++ b/src/OpenFOAM/include/checkTimeOptionsNoConstant.H
@@ -2,8 +2,7 @@
 // checkTimeOptionsNoConstant.H
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    Foam::label startTime = 0;
-    Foam::label endTime = Times.size();
+Foam::label startTime = 0;
 
-// check -time and -latestTime options
-#   include "checkTimeOption.H"
+// Check -time and -latestTime options
+#include "checkTimeOption.H"
diff --git a/src/Pstream/Allwmake b/src/Pstream/Allwmake
index 0c490c57502c73e7a63e5bf80e7e820738b4a81a..15961b2028d5c6552fde771d9108b43b730dfc98 100755
--- a/src/Pstream/Allwmake
+++ b/src/Pstream/Allwmake
@@ -34,9 +34,6 @@ wmake $targetType dummy
 case "$WM_MPLIB" in
 *MPI*)
     set +x
-    echo
-    echo "Note: ignore spurious warnings about missing mpicxx.h headers"
-    echo
     wmakeMpiLib mpi
     ;;
 esac
diff --git a/src/finiteVolume/cfdTools/general/include/createTimeControls.H b/src/finiteVolume/cfdTools/general/include/createTimeControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..22089cbd6531d3046386196ee3eaf180860ace62
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/include/createTimeControls.H
@@ -0,0 +1,41 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Global
+    readTimeControls
+
+Description
+    Read the control parameters used by setDeltaT
+
+\*---------------------------------------------------------------------------*/
+
+bool adjustTimeStep =
+    runTime.controlDict().lookupOrDefault("adjustTimeStep", false);
+
+scalar maxCo =
+    runTime.controlDict().lookupOrDefault<scalar>("maxCo", 1.0);
+
+scalar maxDeltaT =
+    runTime.controlDict().lookupOrDefault<scalar>("maxDeltaT", GREAT);
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/include/readTimeControls.H b/src/finiteVolume/cfdTools/general/include/readTimeControls.H
index 60f0ed70a1b162ef1c28df1e8fa3339b80e3b924..ba1c3c5080b6f4ec6b5b7cc3d92b7a7cbd29b71b 100644
--- a/src/finiteVolume/cfdTools/general/include/readTimeControls.H
+++ b/src/finiteVolume/cfdTools/general/include/readTimeControls.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,13 +29,13 @@ Description
 
 \*---------------------------------------------------------------------------*/
 
-const bool adjustTimeStep =
+adjustTimeStep =
     runTime.controlDict().lookupOrDefault("adjustTimeStep", false);
 
-scalar maxCo =
+maxCo =
     runTime.controlDict().lookupOrDefault<scalar>("maxCo", 1.0);
 
-scalar maxDeltaT =
+maxDeltaT =
     runTime.controlDict().lookupOrDefault<scalar>("maxDeltaT", GREAT);
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/include/setInitialDeltaT.H b/src/finiteVolume/cfdTools/general/include/setInitialDeltaT.H
index 2dace957e6fae46fee7af18d03fc7805c029d75f..047d8934716bc97919d7a1438cc4fadd0db55625 100644
--- a/src/finiteVolume/cfdTools/general/include/setInitialDeltaT.H
+++ b/src/finiteVolume/cfdTools/general/include/setInitialDeltaT.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ if (adjustTimeStep)
             min
             (
                 maxCo*runTime.deltaTValue()/CoNum,
-                runTime.deltaTValue()
+                min(runTime.deltaTValue(), maxDeltaT)
             )
         );
     }
diff --git a/wmake/rules/General/flex++ b/wmake/rules/General/flex++
index 9f06801520de63bbbed318e902a43b307f5133fb..894181b404cb47d9e4dfacb690eb9c916233f584 100644
--- a/wmake/rules/General/flex++
+++ b/wmake/rules/General/flex++
@@ -1,3 +1,3 @@
 SUFFIXES += .L
 
-Ltoo = flex -+ -o$(@D)/$(<F).C -f $< ; $(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
+Ltoo = flex -+ -o$(@D)/$(<F).C -f $< ; $(CC) $(c++FLAGS) $(c++LESSWARN) -c $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/General/mplibMPICH b/wmake/rules/General/mplibMPICH
index 0abee120ca427431d06752cf91ac85a33a8d4923..611641afbc35ce125c82140feb6aef563cde592b 100644
--- a/wmake/rules/General/mplibMPICH
+++ b/wmake/rules/General/mplibMPICH
@@ -1,3 +1,3 @@
 PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -I$(MPI_ARCH_PATH)/include
+PINC       = -isystem $(MPI_ARCH_PATH)/include
 PLIBS      = -L$(MPI_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) -L$(MPI_ARCH_PATH)/lib -lmpich -lrt
diff --git a/wmake/rules/General/mplibMPICH-GM b/wmake/rules/General/mplibMPICH-GM
index 4c97ec851f3015265ecb7373eece343e896ca44f..1921318a0a57d27fef8b024619d4cd371a3309ec 100644
--- a/wmake/rules/General/mplibMPICH-GM
+++ b/wmake/rules/General/mplibMPICH-GM
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include
+PINC       = -isystem $(MPI_ARCH_PATH)/include
 PLIBS      = -L$(MPI_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) -L$(MPI_ARCH_PATH)/lib -lmpich -L$(GM_LIB_PATH) -lgm
diff --git a/wmake/rules/General/mplibOPENMPI b/wmake/rules/General/mplibOPENMPI
index c888c3855659436e9994dabd32ad64a728bcda7c..f1f8899922bc33b5ea0a9fefb96e32653109528f 100644
--- a/wmake/rules/General/mplibOPENMPI
+++ b/wmake/rules/General/mplibOPENMPI
@@ -1,3 +1,3 @@
 PFLAGS     = -DOMPI_SKIP_MPICXX
-PINC       = -I$(MPI_ARCH_PATH)/include
+PINC       = -isystem $(MPI_ARCH_PATH)/include
 PLIBS      = -L$(MPI_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) -L$(MPI_ARCH_PATH)/lib -lmpi
diff --git a/wmake/rules/General/mplibQSMPI b/wmake/rules/General/mplibQSMPI
index 95ea327379f54d7bab8d03218d9bcf114f63a75b..aa15c1b511b6e4798e41871fd7bcc17e5a34df53 100644
--- a/wmake/rules/General/mplibQSMPI
+++ b/wmake/rules/General/mplibQSMPI
@@ -1,4 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include
+PINC       = -isystem $(MPI_ARCH_PATH)/include
 PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpi
-
diff --git a/wmake/rules/General/mplibSGIMPI b/wmake/rules/General/mplibSGIMPI
index 8595264660f3ae07d4fadb3b9ed8689d89571427..205b9406c0e04c5f6b313bc1e86cf8c47fe3dde7 100644
--- a/wmake/rules/General/mplibSGIMPI
+++ b/wmake/rules/General/mplibSGIMPI
@@ -1,3 +1,3 @@
 PFLAGS     = -DSGIMPI -DMPI_NO_CPPBIND
-PINC       = -I$(MPI_ARCH_PATH)/include
+PINC       = -isystem $(MPI_ARCH_PATH)/include
 PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpi
diff --git a/wmake/rules/linux64Clang/c++ b/wmake/rules/linux64Clang/c++
index 0b05c917ba768b4fc4acba8e64c3b614df67aab0..ddb05970b198a570421dcd79f041901e786f795a 100644
--- a/wmake/rules/linux64Clang/c++
+++ b/wmake/rules/linux64Clang/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-c++11-extensions
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedefs
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-tautological-undefined-compare
 
 CC          = clang++ -m64
 
diff --git a/wmake/rules/linux64Clang/mplibHPMPI b/wmake/rules/linux64Clang/mplibHPMPI
index 574492a236a32f7d87d00bf0e3507a5ac8e54f55..d7c4b0cf30ffd8aab3110a73777bca51c70030a4 100644
--- a/wmake/rules/linux64Clang/mplibHPMPI
+++ b/wmake/rules/linux64Clang/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linux64Clang/mplibINTELMPI b/wmake/rules/linux64Clang/mplibINTELMPI
index cf80ec2eaf68d1c2f6adf208964b6490c4c8fd36..278e0b0f22c7c7d6fafc3334cddccb237afe232e 100644
--- a/wmake/rules/linux64Clang/mplibINTELMPI
+++ b/wmake/rules/linux64Clang/mplibINTELMPI
@@ -1,3 +1,3 @@
 PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -I$(MPI_ARCH_PATH)/include64
+PINC       = -isystem $(MPI_ARCH_PATH)/include64
 PLIBS      = -L$(MPI_ARCH_PATH)/lib64 -lmpi
diff --git a/wmake/rules/linux64Gcc/c++ b/wmake/rules/linux64Gcc/c++
index 2bd74448b7a9dd8ade3d7ef40b2039c06a7e23af..a3246efdd42c7095dc9e76f1aa00242850906e43 100644
--- a/wmake/rules/linux64Gcc/c++
+++ b/wmake/rules/linux64Gcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/linux64Gcc/mplibHPMPI b/wmake/rules/linux64Gcc/mplibHPMPI
index 574492a236a32f7d87d00bf0e3507a5ac8e54f55..d7c4b0cf30ffd8aab3110a73777bca51c70030a4 100644
--- a/wmake/rules/linux64Gcc/mplibHPMPI
+++ b/wmake/rules/linux64Gcc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linux64Gcc/mplibINTELMPI b/wmake/rules/linux64Gcc/mplibINTELMPI
index cf80ec2eaf68d1c2f6adf208964b6490c4c8fd36..278e0b0f22c7c7d6fafc3334cddccb237afe232e 100644
--- a/wmake/rules/linux64Gcc/mplibINTELMPI
+++ b/wmake/rules/linux64Gcc/mplibINTELMPI
@@ -1,3 +1,3 @@
 PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -I$(MPI_ARCH_PATH)/include64
+PINC       = -isystem $(MPI_ARCH_PATH)/include64
 PLIBS      = -L$(MPI_ARCH_PATH)/lib64 -lmpi
diff --git a/wmake/rules/linux64Icc/c++ b/wmake/rules/linux64Icc/c++
index 5e11d21fa495b09b8a9aec6feb927aee9df5c888..85b976ae4f464d109609aa01971f0877474d0101 100644
--- a/wmake/rules/linux64Icc/c++
+++ b/wmake/rules/linux64Icc/c++
@@ -3,8 +3,8 @@ SUFFIXES += .C
 c++WARN     = -Wall -Wextra -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \
               -diag-disable 2304
 
-# Suppress CGAL warnings
-c++CGALWARN = -diag-disable 1224,2026,2305
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -diag-disable 1224,2026,2305
 
 CC          = icpc -std=c++0x -fp-trap=common -fp-model precise
 
diff --git a/wmake/rules/linux64Icc/mplibHPMPI b/wmake/rules/linux64Icc/mplibHPMPI
index 574492a236a32f7d87d00bf0e3507a5ac8e54f55..d7c4b0cf30ffd8aab3110a73777bca51c70030a4 100644
--- a/wmake/rules/linux64Icc/mplibHPMPI
+++ b/wmake/rules/linux64Icc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linux64Icc/mplibINTELMPI b/wmake/rules/linux64Icc/mplibINTELMPI
index cf80ec2eaf68d1c2f6adf208964b6490c4c8fd36..278e0b0f22c7c7d6fafc3334cddccb237afe232e 100644
--- a/wmake/rules/linux64Icc/mplibINTELMPI
+++ b/wmake/rules/linux64Icc/mplibINTELMPI
@@ -1,3 +1,3 @@
 PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -I$(MPI_ARCH_PATH)/include64
+PINC       = -isystem $(MPI_ARCH_PATH)/include64
 PLIBS      = -L$(MPI_ARCH_PATH)/lib64 -lmpi
diff --git a/wmake/rules/linuxARM7Gcc/c++ b/wmake/rules/linuxARM7Gcc/c++
index 3d3db5e48625cbc057427a9c99adabc251e3ce39..076934eae829466781779f1924ebfdba6d7d677a 100644
--- a/wmake/rules/linuxARM7Gcc/c++
+++ b/wmake/rules/linuxARM7Gcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
 
 CC          = g++
 
diff --git a/wmake/rules/linuxARM7Gcc/mplibHPMPI b/wmake/rules/linuxARM7Gcc/mplibHPMPI
index 8aff40632bd23af9607d63c4eb675a8de0cd287c..c44b3dd3f908a105d868170ef34048dc4e3a019e 100644
--- a/wmake/rules/linuxARM7Gcc/mplibHPMPI
+++ b/wmake/rules/linuxARM7Gcc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi
diff --git a/wmake/rules/linuxClang/c++ b/wmake/rules/linuxClang/c++
index 3fc4034ac250a3c96f0218623b2b1db74aa8136d..db31f57760374a4dbe54b254f3aa63b0654c8d1f 100644
--- a/wmake/rules/linuxClang/c++
+++ b/wmake/rules/linuxClang/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-c++11-extensions
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedef
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedef -Wno-tautological-undefined-compare
 
 CC          = clang++ -m32
 
diff --git a/wmake/rules/linuxClang/mplibHPMPI b/wmake/rules/linuxClang/mplibHPMPI
index 8aff40632bd23af9607d63c4eb675a8de0cd287c..c44b3dd3f908a105d868170ef34048dc4e3a019e 100644
--- a/wmake/rules/linuxClang/mplibHPMPI
+++ b/wmake/rules/linuxClang/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi
diff --git a/wmake/rules/linuxGcc/c++ b/wmake/rules/linuxGcc/c++
index a46e3dd93234fe9bb73569d7c38fc17fb43c07b7..9e2be6d7391a2f2a3c0e8ba0c08ed715767727c3 100644
--- a/wmake/rules/linuxGcc/c++
+++ b/wmake/rules/linuxGcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
 
 CC          = g++ -m32
 
diff --git a/wmake/rules/linuxGcc/mplibHPMPI b/wmake/rules/linuxGcc/mplibHPMPI
index 8aff40632bd23af9607d63c4eb675a8de0cd287c..c44b3dd3f908a105d868170ef34048dc4e3a019e 100644
--- a/wmake/rules/linuxGcc/mplibHPMPI
+++ b/wmake/rules/linuxGcc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi
diff --git a/wmake/rules/linuxIA64Gcc/c++ b/wmake/rules/linuxIA64Gcc/c++
index 348f92f75de825675608f3687f1913fa83ba09fa..ada728b3fb3ead26feaebdc6f43f1d790d900750 100644
--- a/wmake/rules/linuxIA64Gcc/c++
+++ b/wmake/rules/linuxIA64Gcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
 
 CC          = g++
 
diff --git a/wmake/rules/linuxIA64Gcc/mplibHPMPI b/wmake/rules/linuxIA64Gcc/mplibHPMPI
index 4e4e54c8131499bec3eeb562f580a491307e1ad9..cd11010d24b6437fd0b3d2dbd39973ff264cb98a 100644
--- a/wmake/rules/linuxIA64Gcc/mplibHPMPI
+++ b/wmake/rules/linuxIA64Gcc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia64 -lmpi
diff --git a/wmake/rules/linuxIA64Icc/c++ b/wmake/rules/linuxIA64Icc/c++
index 504e5f56d5a2e39048a02333f2a7f6ba14e88860..831d3cc1edc350657e6ea5db52a2a57e8e811daf 100644
--- a/wmake/rules/linuxIA64Icc/c++
+++ b/wmake/rules/linuxIA64Icc/c++
@@ -3,8 +3,8 @@ SUFFIXES += .C
 c++WARN     = -Wall -Wextra -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \
               -diag-disable 2304
 
-# Suppress CGAL warnings
-c++CGALWARN = -diag-disable 1224,2026,2305
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -diag-disable 1224,2026,2305
 
 CC          = icpc
 
diff --git a/wmake/rules/linuxIA64Icc/mplibHPMPI b/wmake/rules/linuxIA64Icc/mplibHPMPI
index 4e4e54c8131499bec3eeb562f580a491307e1ad9..cd11010d24b6437fd0b3d2dbd39973ff264cb98a 100644
--- a/wmake/rules/linuxIA64Icc/mplibHPMPI
+++ b/wmake/rules/linuxIA64Icc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia64 -lmpi
diff --git a/wmake/rules/linuxIA64Icc/mplibINTELMPI b/wmake/rules/linuxIA64Icc/mplibINTELMPI
index cf80ec2eaf68d1c2f6adf208964b6490c4c8fd36..278e0b0f22c7c7d6fafc3334cddccb237afe232e 100644
--- a/wmake/rules/linuxIA64Icc/mplibINTELMPI
+++ b/wmake/rules/linuxIA64Icc/mplibINTELMPI
@@ -1,3 +1,3 @@
 PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -I$(MPI_ARCH_PATH)/include64
+PINC       = -isystem $(MPI_ARCH_PATH)/include64
 PLIBS      = -L$(MPI_ARCH_PATH)/lib64 -lmpi
diff --git a/wmake/rules/linuxIcc/c++ b/wmake/rules/linuxIcc/c++
index 9f10231c2b9250f52f5b8d14e986ec6282261acc..48fdb9f6b1b8ed58a6b96a9fe03d47b187782b54 100644
--- a/wmake/rules/linuxIcc/c++
+++ b/wmake/rules/linuxIcc/c++
@@ -3,8 +3,8 @@ SUFFIXES += .C
 c++WARN     = -Wall -Wextra -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \
               -diag-disable 2304
 
-# Suppress CGAL warnings
-c++CGALWARN = -diag-disable 1224,2026,2305
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -diag-disable 1224,2026,2305
 
 CC          = icpc -std=c++0x -fp-trap=common -fp-model precise
 
diff --git a/wmake/rules/linuxIcc/mplibHPMPI b/wmake/rules/linuxIcc/mplibHPMPI
index 8aff40632bd23af9607d63c4eb675a8de0cd287c..c44b3dd3f908a105d868170ef34048dc4e3a019e 100644
--- a/wmake/rules/linuxIcc/mplibHPMPI
+++ b/wmake/rules/linuxIcc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi
diff --git a/wmake/rules/linuxPPC64Gcc/c++ b/wmake/rules/linuxPPC64Gcc/c++
index 8e8c69ab7e4028cbabb1a197fea51bab67651bf4..e8e862bd26c35ef3651872e5fad750f3c4cf2e2f 100644
--- a/wmake/rules/linuxPPC64Gcc/c++
+++ b/wmake/rules/linuxPPC64Gcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
 
 CC          = g++ -m64 -mcpu=power5+
 
diff --git a/wmake/rules/linuxPPC64Gcc/mplibHPMPI b/wmake/rules/linuxPPC64Gcc/mplibHPMPI
index 574492a236a32f7d87d00bf0e3507a5ac8e54f55..d7c4b0cf30ffd8aab3110a73777bca51c70030a4 100644
--- a/wmake/rules/linuxPPC64Gcc/mplibHPMPI
+++ b/wmake/rules/linuxPPC64Gcc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linuxPPC64leGcc/c++ b/wmake/rules/linuxPPC64leGcc/c++
index a46c7567c3410fa7b890e82565b5d0baf9f7a90b..0eec42b85e1f91c74b9801777989f855a22d5a50 100644
--- a/wmake/rules/linuxPPC64leGcc/c++
+++ b/wmake/rules/linuxPPC64leGcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
 
 CC          = g++ -m64 -mcpu=power8
 
diff --git a/wmake/rules/linuxPPC64leGcc/mplibHPMPI b/wmake/rules/linuxPPC64leGcc/mplibHPMPI
index 574492a236a32f7d87d00bf0e3507a5ac8e54f55..d7c4b0cf30ffd8aab3110a73777bca51c70030a4 100644
--- a/wmake/rules/linuxPPC64leGcc/mplibHPMPI
+++ b/wmake/rules/linuxPPC64leGcc/mplibHPMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/solaris64Gcc/c++ b/wmake/rules/solaris64Gcc/c++
index c156dd9e874b85425a54a339bee601beca9f9846..33c22305fe97ee6dadc7813f1b38ba21433b463c 100644
--- a/wmake/rules/solaris64Gcc/c++
+++ b/wmake/rules/solaris64Gcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN =
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN =
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/solaris64Gcc/mplibFJMPI b/wmake/rules/solaris64Gcc/mplibFJMPI
index 2d6c16797a8df9aa3aa92ca12cfbaedb873e1af3..1755f22b4bca9137eb973a06b80a89b54459f09e 100644
--- a/wmake/rules/solaris64Gcc/mplibFJMPI
+++ b/wmake/rules/solaris64Gcc/mplibFJMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ARCH_PATH)/include/sparcv9/mpi -DMPIPP_H
+PINC       = -isystem $(MPI_ARCH_PATH)/include/sparcv9/mpi -DMPIPP_H
 PLIBS      = -L$(MPI_ARCH_PATH)/lib/sparcv9 -lmpi_f -L/opt/FSUNf90/lib/sparcv9 -lfjgmp64 -L/opt/FJSVpnidt/lib -lfjidt -ljrm -lfj90i -lfj90f -lfj90fmt  -lelf
diff --git a/wmake/rules/solarisGcc/c++ b/wmake/rules/solarisGcc/c++
index df6b4d8d17a789f8a2ed1f37dbdf91646957d082..ec5a6ef39e6bfb8e91f4e09add2e3ebfdf079606 100644
--- a/wmake/rules/solarisGcc/c++
+++ b/wmake/rules/solarisGcc/c++
@@ -2,8 +2,8 @@ SUFFIXES += .C
 
 c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
 
-# Suppress CGAL warnings
-c++CGALWARN =
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN =
 
 CC          = g++
 
diff --git a/wmake/rules/solarisGcc/mplibMPI b/wmake/rules/solarisGcc/mplibMPI
index 0d79c1d72c738f74af4dfc47dd069c63b060fe4d..1d65b13f2116e0b849f247f9ad1bce6939b4d534 100644
--- a/wmake/rules/solarisGcc/mplibMPI
+++ b/wmake/rules/solarisGcc/mplibMPI
@@ -1,3 +1,3 @@
 PFLAGS     =
-PINC       = -I$(MPI_ROOT)/include
+PINC       = -isystem $(MPI_ROOT)/include
 PLIBS      = -L$(MPI_ROOT)/lib/$(MPI_ARCH) -lmpi
diff --git a/wmake/rules/solarisGcc/mplibMPICH b/wmake/rules/solarisGcc/mplibMPICH
index c4ef548d9a45c96287f24610844456c243193e79..767acf1ecc2e5132f1d2a4264c38a3a347bc3cf1 100644
--- a/wmake/rules/solarisGcc/mplibMPICH
+++ b/wmake/rules/solarisGcc/mplibMPICH
@@ -1,3 +1,3 @@
 PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -I$(MPI_ARCH_PATH)/include
+PINC       = -isystem $(MPI_ARCH_PATH)/include
 PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpich -lrt -laio