diff --git a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
index 95b38069020b1e43436226408036956340fc0339..c7edbb9e877a550265257e4d0c2139e3a1b70e46 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
@@ -1,6 +1,4 @@
 {
-    //const volScalarField& psi = thermo.psi();
-
     volScalarField rAU(1.0/UEqn.A());
     surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
     volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
@@ -104,9 +102,6 @@
 
     rho = thermo.rho();
 
-    thermo.rho() = max(thermo.rho(), rhoMin);
-    thermo.rho() = min(thermo.rho(), rhoMax);
-
     if (!simple.transonic())
     {
         rho.relax();
diff --git a/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H b/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H
index 8084b305aac609c58ed24c84f7ea3acb971920ad..c7dc0f864d2997439cbba04ae2ef5a60053e0a98 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/pcEqn.H
@@ -112,8 +112,6 @@ p.correctBoundaryConditions();
 
 // Recalculate density from the relaxed pressure
 rho = thermo.rho();
-thermo.rho() = max(thermo.rho(), rhoMin);
-thermo.rho() = min(thermo.rho(), rhoMax);
 
 if (!simple.transonic())
 {
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H
index f0ccccb18a4eb08342ae760b3af1c4daad4c33d9..4167f80e599f1b35efc9f7fdef280b2a84bec427 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H
@@ -90,9 +90,5 @@
     }
 
     rho = thermo.rho();
-
-    thermo.rho() = max(thermo.rho(), rhoMin);
-    thermo.rho() = min(thermo.rho(), rhoMax);
-
     rho.relax();
 }
diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H b/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H
index 8239d4462161372d7e9dd581b3e8a8568c400e39..b9765ce586f6093a912790bcacf7ecf06ca23f26 100644
--- a/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H
+++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H
@@ -12,9 +12,9 @@
       - fvm::laplacian(turbulence->alphaEff(), he)
      ==
         rho*(U&g)
+      + Qdot
       + parcels.Sh(he)
       + radiation->Sh(thermo)
-      + combustion->Sh()
       + fvOptions(rho, he)
     );
 
@@ -25,6 +25,7 @@
     EEqn.solve();
 
     fvOptions.correct(he);
+
     thermo.correct();
     radiation->correct();
 
diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options b/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options
index d88ca09eae12108f47440717bbc676844645a4f1..433d27ec0712279f9697df75306eaf726c80d593 100644
--- a/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/Make/options
@@ -10,10 +10,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
@@ -37,11 +34,6 @@ EXE_LIBS = \
     -llagrangianTurbulence \
     -lspecie \
     -lfluidThermophysicalModels \
-    -lliquidProperties \
-    -lliquidMixtureProperties \
-    -lsolidProperties \
-    -lsolidMixtureProperties \
-    -lthermophysicalFunctions \
     -lreactionThermophysicalModels \
     -lSLGThermo \
     -lchemistryModel \
diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H b/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H
index 7c7cf9a4c0b4faab42b449f2e43306a44f668ce1..1510f8e391e96e150ceed2d95980e8fb49b00226 100644
--- a/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H
+++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H
@@ -11,7 +11,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
 
 {
     combustion->correct();
-    dQ = combustion->dQ();
+    Qdot = combustion->Qdot();
     volScalarField Yt(0.0*Y[0]);
 
     forAll(Y, i)
diff --git a/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H b/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H
index 16f297c995627b3b81e490e861430e94b4117972..ae5129fbc2db99b62a358b2f02c4a835967e02d4 100644
--- a/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H
+++ b/applications/solvers/lagrangian/simpleCoalParcelFoam/createFields.H
@@ -103,18 +103,18 @@ forAll(Y, i)
 }
 fields.add(thermo.he());
 
-volScalarField dQ
+volScalarField Qdot
 (
     IOobject
     (
-        "dQ",
+        "Qdot",
         runTime.timeName(),
         mesh,
         IOobject::NO_READ,
         IOobject::AUTO_WRITE
     ),
     mesh,
-    dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
+    dimensionedScalar("Qdot", dimEnergy/dimTime, 0.0)
 );
 
 #include "createMRF.H"
diff --git a/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C b/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C
index d2cab50beeae294139263980c425cd47c1d32d95..62b6b0e18652d15263248e3ddb0e75941e9e56b4 100644
--- a/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C
+++ b/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C
@@ -38,6 +38,9 @@ Description
 
 #include "fvCFD.H"
 #include "CMULES.H"
+#include "EulerDdtScheme.H"
+#include "localEulerDdtScheme.H"
+#include "CrankNicolsonDdtScheme.H"
 #include "subCycle.H"
 
 #include "immiscibleIncompressibleTwoPhaseMixture.H"
@@ -45,7 +48,7 @@ Description
 #include "pimpleControl.H"
 #include "fvOptions.H"
 #include "CorrectPhi.H"
-#include "fixedFluxPressureFvPatchScalarField.H"
+#include "fvcSmooth.H"
 
 #include "basicKinematicMPPICCloud.H"
 
@@ -59,16 +62,22 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
     #include "createControl.H"
+    #include "createTimeControls.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
+    #include "createAlphaFluxes.H"
     #include "createFvOptions.H"
-    #include "createTimeControls.H"
     #include "correctPhi.H"
-    #include "CourantNo.H"
-    #include "setInitialDeltaT.H"
 
     turbulence->validate();
 
+    if (!LTS)
+    {
+        #include "readTimeControls.H"
+        #include "CourantNo.H"
+        #include "setInitialDeltaT.H"
+    }
+
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
@@ -76,9 +85,17 @@ int main(int argc, char *argv[])
     while (runTime.run())
     {
         #include "readTimeControls.H"
-        #include "CourantNo.H"
-        #include "alphaCourantNo.H"
-        #include "setDeltaT.H"
+
+        if (LTS)
+        {
+            #include "setRDeltaT.H"
+        }
+        else
+        {
+            #include "CourantNo.H"
+            #include "alphaCourantNo.H"
+            #include "setDeltaT.H"
+        }
 
         runTime++;
 
@@ -133,6 +150,8 @@ int main(int argc, char *argv[])
             #include "alphaControls.H"
             #include "alphaEqnSubCycle.H"
 
+            mixture.correct();
+
             #include "UEqn.H"
 
             // --- Pressure corrector loop
diff --git a/applications/solvers/multiphase/MPPICInterFoam/Make/options b/applications/solvers/multiphase/MPPICInterFoam/Make/options
index e298ad1f59935d90d442bcf8a97ed089495f159c..abc0537451c6337c71984756ddd167241eb2a886 100644
--- a/applications/solvers/multiphase/MPPICInterFoam/Make/options
+++ b/applications/solvers/multiphase/MPPICInterFoam/Make/options
@@ -4,6 +4,7 @@ EXE_INC =  \
     -I. \
     -I./IncompressibleTwoPhaseMixtureTurbulenceModels/lnInclude \
     -I$(interFoamPath) \
+    -I../VoF \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/fvOptions/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
@@ -31,7 +32,7 @@ EXE_LIBS = \
     -lmeshTools \
     -llagrangian \
     -llagrangianIntermediate \
-    -lthermophysicalFunctions \
+    -lthermophysicalProperties \
     -lspecie \
     -lincompressibleTransportModels \
     -limmiscibleIncompressibleTwoPhaseMixture \
diff --git a/applications/solvers/multiphase/MPPICInterFoam/alphaEqn.H b/applications/solvers/multiphase/MPPICInterFoam/alphaEqn.H
deleted file mode 100644
index 97d1428638b7ec86b632ca767157d2fde4ce9e75..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/MPPICInterFoam/alphaEqn.H
+++ /dev/null
@@ -1,164 +0,0 @@
-{
-    word alphaScheme("div(phi,alpha)");
-    word alpharScheme("div(phirb,alpha)");
-
-    // Standard face-flux compression coefficient
-    surfaceScalarField phic
-    (
-        mixture.cAlpha()*mag(alphaPhic/mesh.magSf())
-    );
-
-    // Add the optional isotropic compression contribution
-    if (icAlpha > 0)
-    {
-        phic *= (1.0 - icAlpha);
-        phic += (mixture.cAlpha()*icAlpha)*fvc::interpolate(mag(U));
-    }
-
-    // Do not compress interface at non-coupled boundary faces
-    // (inlets, outlets etc.)
-    surfaceScalarField::Boundary& phicBf = phic.boundaryFieldRef();
-    forAll(phic.boundaryField(), patchi)
-    {
-        fvsPatchScalarField& phicp = phicBf[patchi];
-
-        if (!phicp.coupled())
-        {
-            phicp == 0;
-        }
-    }
-
-    tmp<surfaceScalarField> tphiAlpha;
-
-    if (MULESCorr)
-    {
-        fvScalarMatrix alpha1Eqn
-        (
-            fv::EulerDdtScheme<scalar>(mesh).fvmDdt(alphac, alpha1)
-          + fv::gaussConvectionScheme<scalar>
-            (
-                mesh,
-                alphaPhic,
-                upwind<scalar>(mesh, alphaPhic)
-            ).fvmDiv(alphaPhic, alpha1)
-          - fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), alpha1)
-        );
-
-        alpha1Eqn.solve();
-
-        Info<< "Phase-1 volume fraction = "
-            << alpha1.weightedAverage(mesh.Vsc()).value()
-            << "  Min(alpha1) = " << min(alpha1).value()
-            << "  Max(alpha1) = " << max(alpha1).value()
-            << endl;
-
-        tmp<surfaceScalarField> tphiAlphaUD(alpha1Eqn.flux());
-        alphaPhi = tphiAlphaUD();
-
-        if (alphaApplyPrevCorr && tphiAlphaCorr0.valid())
-        {
-            Info<< "Applying the previous iteration compression flux" << endl;
-
-            MULES::correct
-            (
-                alphac,
-                alpha1,
-                alphaPhi,
-                tphiAlphaCorr0.ref(),
-                zeroField(), zeroField(),
-                1, 0
-            );
-
-            alphaPhi += tphiAlphaCorr0();
-        }
-
-        // Cache the upwind-flux
-        tphiAlphaCorr0 = tphiAlphaUD;
-
-        alpha2 = 1.0 - alpha1;
-
-        mixture.correct();
-    }
-
-    for (int aCorr=0; aCorr<nAlphaCorr; aCorr++)
-    {
-        surfaceScalarField phir(phic*mixture.nHatf());
-
-        tmp<surfaceScalarField> tphiAlphaUn
-        (
-            fvc::flux
-            (
-                alphaPhic,
-                alpha1,
-                alphaScheme
-            )
-          + fvc::flux
-            (
-               -fvc::flux(-phir, alpha2, alpharScheme),
-                alpha1,
-                alpharScheme
-            )
-        );
-
-        if (MULESCorr)
-        {
-            tmp<surfaceScalarField> tphiAlphaCorr(tphiAlphaUn() - alphaPhi);
-            volScalarField alpha10("alpha10", alpha1);
-
-            //MULES::correct(alpha1, tphiAlphaUn(), tphiAlphaCorr(), 1, 0);
-
-            MULES::correct
-            (
-                alphac,
-                alpha1,
-                tphiAlphaUn(),
-                tphiAlphaCorr.ref(),
-                zeroField(), zeroField(),
-                1, 0
-            );
-
-            // Under-relax the correction for all but the 1st corrector
-            if (aCorr == 0)
-            {
-                alphaPhi += tphiAlphaCorr();
-            }
-            else
-            {
-                alpha1 = 0.5*alpha1 + 0.5*alpha10;
-                alphaPhi += 0.5*tphiAlphaCorr();
-            }
-        }
-        else
-        {
-            alphaPhi = tphiAlphaUn;
-
-            MULES::explicitSolve
-            (
-                alphac,
-                alpha1,
-                alphaPhic,
-                alphaPhi,
-                zeroField(), zeroField(),
-                1, 0
-            );
-
-        }
-
-        alpha2 = 1.0 - alpha1;
-
-        mixture.correct();
-    }
-
-    rhoPhi = alphaPhi*(rho1 - rho2) + alphaPhic*rho2;
-
-    if (alphaApplyPrevCorr && MULESCorr)
-    {
-        tphiAlphaCorr0 = alphaPhi - tphiAlphaCorr0;
-    }
-
-    Info<< "Phase-1 volume fraction = "
-        << alpha1.weightedAverage(mesh.Vsc()).value()
-        << "  Min(alpha1) = " << min(alpha1).value()
-        << "  Max(alpha1) = " << max(alpha1).value()
-        << endl;
-}
diff --git a/applications/solvers/multiphase/MPPICInterFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/MPPICInterFoam/alphaEqnSubCycle.H
deleted file mode 100644
index c0d3c8e43a968cf5fa334e6b84a9c106a66835ff..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/MPPICInterFoam/alphaEqnSubCycle.H
+++ /dev/null
@@ -1,34 +0,0 @@
-if (nAlphaSubCycles > 1)
-{
-    dimensionedScalar totalDeltaT = runTime.deltaT();
-    surfaceScalarField rhoPhiSum
-    (
-        IOobject
-        (
-            "rhoPhiSum",
-            runTime.timeName(),
-            mesh
-        ),
-        mesh,
-        dimensionedScalar("0", rhoPhi.dimensions(), 0)
-    );
-
-    for
-    (
-        subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles);
-        !(++alphaSubCycle).end();
-    )
-    {
-        #include "alphaEqn.H"
-        rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi;
-    }
-
-    rhoPhi = rhoPhiSum;
-}
-else
-{
-    #include "alphaEqn.H"
-}
-
-rho == alpha1*rho1 + alpha2*rho2;
-mu = mixture.mu();
diff --git a/applications/solvers/multiphase/MPPICInterFoam/createFields.H b/applications/solvers/multiphase/MPPICInterFoam/createFields.H
index de8ae559cc90dc8bf7740c3cb0c3c15bc54e5dc9..bcf4252b5b0c165467b5ab93d100a6b236be0d9f 100644
--- a/applications/solvers/multiphase/MPPICInterFoam/createFields.H
+++ b/applications/solvers/multiphase/MPPICInterFoam/createFields.H
@@ -1,221 +1,204 @@
-    Info<< "Reading field p_rgh\n" << endl;
-    volScalarField p_rgh
-    (
-        IOobject
-        (
-            "p_rgh",
-            runTime.timeName(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        mesh
-    );
+#include "createRDeltaT.H"
 
-    Info<< "Reading field U\n" << endl;
-    volVectorField U
+Info<< "Reading field p_rgh\n" << endl;
+volScalarField p_rgh
+(
+    IOobject
     (
-        IOobject
-        (
-            "U",
-            runTime.timeName(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        mesh
-    );
-
-    #include "createPhi.H"
+        "p_rgh",
+        runTime.timeName(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::AUTO_WRITE
+    ),
+    mesh
+);
+
+Info<< "Reading field U\n" << endl;
+volVectorField U
+(
+    IOobject
+    (
+        "U",
+        runTime.timeName(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::AUTO_WRITE
+    ),
+    mesh
+);
 
-    Info<< "Reading transportProperties\n" << endl;
-    immiscibleIncompressibleTwoPhaseMixture mixture(U, phi);
+#include "createPhi.H"
 
-    volScalarField& alpha1(mixture.alpha1());
-    volScalarField& alpha2(mixture.alpha2());
+Info<< "Reading transportProperties\n" << endl;
+immiscibleIncompressibleTwoPhaseMixture mixture(U, phi);
 
-    const dimensionedScalar& rho1 = mixture.rho1();
-    const dimensionedScalar& rho2 = mixture.rho2();
+volScalarField& alpha1(mixture.alpha1());
+volScalarField& alpha2(mixture.alpha2());
 
-    // Need to store rho for ddt(rho, U)
-    volScalarField rho
-    (
-        IOobject
-        (
-            "rho",
-            runTime.timeName(),
-            mesh,
-            IOobject::READ_IF_PRESENT,
-            IOobject::AUTO_WRITE
-        ),
-        alpha1*rho1 + alpha2*rho2
-    );
-    rho.oldTime();
+const dimensionedScalar& rho1 = mixture.rho1();
+const dimensionedScalar& rho2 = mixture.rho2();
 
-    // Need to store mu as incompressibleTwoPhaseMixture does not store it
-    volScalarField mu
+// Need to store rho for ddt(rho, U)
+volScalarField rho
+(
+    IOobject
     (
-        IOobject
-        (
-            "mu",
-            runTime.timeName(),
-            mesh,
-            IOobject::READ_IF_PRESENT
-        ),
-        mixture.mu(),
-        calculatedFvPatchScalarField::typeName
-    );
-
-
-    // Mass flux
-    surfaceScalarField rhoPhi
+        "rho",
+        runTime.timeName(),
+        mesh,
+        IOobject::READ_IF_PRESENT,
+        IOobject::AUTO_WRITE
+    ),
+    alpha1*rho1 + alpha2*rho2
+);
+rho.oldTime();
+
+// Need to store mu as incompressibleTwoPhaseMixture does not store it
+volScalarField mu
+(
+    IOobject
     (
-        IOobject
-        (
-            "rhoPhi",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        fvc::interpolate(rho)*phi
-    );
-
-
-    #include "readGravitationalAcceleration.H"
+        "mu",
+        runTime.timeName(),
+        mesh,
+        IOobject::READ_IF_PRESENT
+    ),
+    mixture.mu(),
+    calculatedFvPatchScalarField::typeName
+);
 
-    #include "readhRef.H"
-    #include "gh.H"
 
-    volScalarField p
+// Mass flux
+surfaceScalarField rhoPhi
+(
+    IOobject
     (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        p_rgh + rho*gh
-    );
-
-    label pRefCell = 0;
-    scalar pRefValue = 0.0;
-    setRefCell
+        "rhoPhi",
+        runTime.timeName(),
+        mesh,
+        IOobject::NO_READ,
+        IOobject::NO_WRITE
+    ),
+    fvc::interpolate(rho)*phi
+);
+
+#include "readGravitationalAcceleration.H"
+#include "readhRef.H"
+#include "gh.H"
+
+volScalarField p
+(
+    IOobject
     (
-        p,
-        p_rgh,
-        mesh.solutionDict().subDict("PIMPLE"),
-        pRefCell,
-        pRefValue
-    );
-
-    if (p_rgh.needReference())
-    {
-        p += dimensionedScalar
-        (
-            "p",
-            p.dimensions(),
-            pRefValue - getRefCellValue(p, pRefCell)
-        );
-        p_rgh = p - rho*gh;
-    }
-
-    mesh.setFluxRequired(p_rgh.name());
-    mesh.setFluxRequired(alpha1.name());
-
-    // MULES flux from previous time-step
-    surfaceScalarField alphaPhi
+        "p",
+        runTime.timeName(),
+        mesh,
+        IOobject::NO_READ,
+        IOobject::AUTO_WRITE
+    ),
+    p_rgh + rho*gh
+);
+
+label pRefCell = 0;
+scalar pRefValue = 0.0;
+setRefCell
+(
+    p,
+    p_rgh,
+    mesh.solutionDict().subDict("PIMPLE"),
+    pRefCell,
+    pRefValue
+);
+
+if (p_rgh.needReference())
+{
+    p += dimensionedScalar
     (
-        IOobject
-        (
-            "alphaPhi",
-            runTime.timeName(),
-            mesh,
-            IOobject::READ_IF_PRESENT,
-            IOobject::AUTO_WRITE
-        ),
-        phi*fvc::interpolate(alpha1)
+        "p",
+        p.dimensions(),
+        pRefValue - getRefCellValue(p, pRefCell)
     );
+    p_rgh = p - rho*gh;
+}
 
+mesh.setFluxRequired(p_rgh.name());
+mesh.setFluxRequired(alpha1.name());
 
-    tmp<surfaceScalarField> tphiAlphaCorr0;
-
-    // alphac must be constructed before the cloud
-    // so that the drag-models can find it
-    volScalarField alphac
+// alphac must be constructed before the cloud
+// so that the drag-models can find it
+volScalarField alphac
+(
+    IOobject
     (
-        IOobject
-        (
-            "alphac",
-            runTime.timeName(),
-            mesh,
-            IOobject::READ_IF_PRESENT,
-            IOobject::AUTO_WRITE
-        ),
+        "alphac",
+        runTime.timeName(),
         mesh,
-        dimensionedScalar("0", dimless, 0),
-        zeroGradientFvPatchScalarField::typeName
-    );
-    alphac.oldTime();
-
-    volScalarField alphacRho(alphac*rho);
-    alphacRho.oldTime();
-
-    Info<< "Constructing kinematicCloud " << endl;
-    basicKinematicMPPICCloud kinematicCloud
-    (
-        "kinematicCloud",
-        rho,
-        U,
-        mu,
-        g
-    );
-
-    // Particle fraction upper limit
-    scalar alphacMin
+        IOobject::READ_IF_PRESENT,
+        IOobject::AUTO_WRITE
+    ),
+    mesh,
+    dimensionedScalar("0", dimless, 0),
+    zeroGradientFvPatchScalarField::typeName
+);
+alphac.oldTime();
+
+volScalarField alphacRho(alphac*rho);
+alphacRho.oldTime();
+
+Info<< "Constructing kinematicCloud " << endl;
+basicKinematicMPPICCloud kinematicCloud
+(
+    "kinematicCloud",
+    rho,
+    U,
+    mu,
+    g
+);
+
+// Particle fraction upper limit
+scalar alphacMin
+(
+    1.0
+  - readScalar
     (
-        1.0
-      - readScalar
-        (
-            kinematicCloud.particleProperties().subDict("constantProperties")
-           .lookup("alphaMax")
-        )
-    );
+        kinematicCloud.particleProperties().subDict("constantProperties")
+       .lookup("alphaMax")
+    )
+);
 
-    // Update alphac from the particle locations
-    alphac = max(1.0 - kinematicCloud.theta(), alphacMin);
-    alphac.correctBoundaryConditions();
+// Update alphac from the particle locations
+alphac = max(1.0 - kinematicCloud.theta(), alphacMin);
+alphac.correctBoundaryConditions();
 
-    surfaceScalarField alphacf("alphacf", fvc::interpolate(alphac));
+surfaceScalarField alphacf("alphacf", fvc::interpolate(alphac));
 
-    // Phase mass flux
-    surfaceScalarField alphaRhoPhic("alphaRhoPhic", alphacf*rhoPhi);
+// Phase mass flux
+surfaceScalarField alphaRhoPhic("alphaRhoPhic", alphacf*rhoPhi);
 
-    // Volumetric phase flux
-    surfaceScalarField alphaPhic("alphaPhic", alphacf*phi);
+// Volumetric phase flux
+surfaceScalarField alphaPhic("alphaPhic", alphacf*phi);
 
-    autoPtr
+autoPtr
+<
+    PhaseCompressibleTurbulenceModel
     <
-        PhaseCompressibleTurbulenceModel
-        <
-            immiscibleIncompressibleTwoPhaseMixture
-        >
-    >turbulence
+        immiscibleIncompressibleTwoPhaseMixture
+    >
+>turbulence
+(
+    PhaseCompressibleTurbulenceModel
+    <
+        immiscibleIncompressibleTwoPhaseMixture
+    >::New
     (
-        PhaseCompressibleTurbulenceModel
-        <
-            immiscibleIncompressibleTwoPhaseMixture
-        >::New
-        (
-            alphac,
-            rho,
-            U,
-            alphaRhoPhic,
-            rhoPhi,
-            mixture
-        )
-    );
+        alphac,
+        rho,
+        U,
+        alphaRhoPhic,
+        rhoPhi,
+        mixture
+    )
+);
 
-    #include "createMRF.H"
+#include "createMRF.H"
diff --git a/applications/solvers/multiphase/VoF/createAlphaFluxes.H b/applications/solvers/multiphase/VoF/createAlphaFluxes.H
index e75c2fe0b0d3fdef29e851caf9c8f96371ec26e0..3a697e38d4240b570169aa39c7de972e678d4c73 100644
--- a/applications/solvers/multiphase/VoF/createAlphaFluxes.H
+++ b/applications/solvers/multiphase/VoF/createAlphaFluxes.H
@@ -7,7 +7,7 @@ IOobject alphaPhiHeader
     IOobject::AUTO_WRITE
 );
 
-const bool alphaRestart = alphaPhiHeader.headerOk();
+const bool alphaRestart = alphaPhiHeader.typeHeaderOk<surfaceScalarField>(true);
 
 // MULES flux from previous time-step
 surfaceScalarField alphaPhi
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
index 300b7579bbc88fbf92e7dbbc775f65c827d5aa06..34e8762709abfd0644471c5dcd4cb16cef4238f4 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
@@ -124,7 +124,7 @@ int main(int argc, char *argv[])
                     ghf = (g & mesh.Cf()) - ghRef;
                 }
 
-                if ((mesh.changing() && correctPhi)) || mesh.topoChanging())
+                if ((mesh.changing() && correctPhi) || mesh.topoChanging())
                 {
                     // Calculate absolute flux from the mapped surface velocity
                     // Note: temporary fix until mapped Uf is assessed
diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
index 5a8a64d0374d5893d0636da6384f1cecb00c8a7c..e245698752642fcbdeec87d550de60893698a08d 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
@@ -580,17 +580,17 @@ int main(int argc, char *argv[])
                 // Construct the dimensioned fields
                 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 PtrList<DimensionedField<scalar, volMesh>> dimScalarFields;
-                readFields(mesh, objects, dimScalarFields, false);
+                readFields(mesh, objects, dimScalarFields);
                 PtrList<DimensionedField<vector, volMesh>> dimVectorFields;
-                readFields(mesh, objects, dimVectorFields, false);
+                readFields(mesh, objects, dimVectorFields);
                 PtrList<DimensionedField<sphericalTensor, volMesh>>
                     dimSphericalTensorFields;
-                readFields(mesh, objects, dimSphericalTensorFields, false);
+                readFields(mesh, objects, dimSphericalTensorFields);
                 PtrList<DimensionedField<symmTensor, volMesh>>
                     dimSymmTensorFields;
-                readFields(mesh, objects, dimSymmTensorFields, false);
+                readFields(mesh, objects, dimSymmTensorFields);
                 PtrList<DimensionedField<tensor, volMesh>> dimTensorFields;
-                readFields(mesh, objects, dimTensorFields, false);
+                readFields(mesh, objects, dimTensorFields);
 
 
                 // Construct the surface fields
diff --git a/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C b/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C
index 0443a8e72dc25816c13492d132346af62107b919..73b7f412369b06f0170a26afd888d2e1ddbfa07b 100644
--- a/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C
+++ b/applications/utilities/parallelProcessing/redistributePar/parLagrangianRedistributor.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2015 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2015-2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -137,7 +137,7 @@ Foam::parLagrangianRedistributor::redistributeLagrangianPositions
 
 
     // Allocate transfer buffers
-    PstreamBuffers pBufs(Pstream::nonBlocking);
+    PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
 
     {
         // List of lists of particles to be transfered for all of the
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C
index a3ca62ee2221d2dfab204623f6a88a48aa056de4..bb190f9eef28edae293d4de5b3a6e8a29fc033d4 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloud.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -84,7 +84,7 @@ void Foam::ensightCloud::writePositions
             // Slaves
             for (int slave=1; slave<Pstream::nProcs(); ++slave)
             {
-                IPstream fromSlave(Pstream::scheduled, slave);
+                IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                 pointList points(fromSlave);
 
                 forAll(points, pti)
@@ -116,7 +116,7 @@ void Foam::ensightCloud::writePositions
             // Slaves
             for (int slave=1; slave<Pstream::nProcs(); ++slave)
             {
-                IPstream fromSlave(Pstream::scheduled, slave);
+                IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                 pointList points(fromSlave);
 
                 forAll(points, pti)
@@ -145,7 +145,12 @@ void Foam::ensightCloud::writePositions
         }
 
         {
-            OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+            OPstream toMaster
+            (
+                Pstream::commsTypes::scheduled,
+                Pstream::masterNo()
+            );
+
             toMaster
                 << points;
         }
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C
index 1b2c006c62381a42dcf61811135e1e219481f750..fcf68edc190f56772fbbc548b8118338f83f2632 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightOutputCloudTemplates.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -74,7 +74,7 @@ bool Foam::ensightCloud::writeCloudField
             // Slaves
             for (int slave=1; slave<Pstream::nProcs(); ++slave)
             {
-                IPstream fromSlave(Pstream::scheduled, slave);
+                IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                 Field<Type> slaveData(fromSlave);
 
                 forAll(slaveData, i)
@@ -107,7 +107,12 @@ bool Foam::ensightCloud::writeCloudField
         }
         else
         {
-            OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+            OPstream toMaster
+            (
+                Pstream::commsTypes::scheduled,
+                Pstream::masterNo()
+            );
+
             toMaster
                 << field;
         }
diff --git a/src/conversion/ensight/mesh/ensightMeshIO.C b/src/conversion/ensight/mesh/ensightMeshIO.C
index 4337a95c159e41b883d06d8a67ebe5f3d6c4e23b..213fd57eb5a95924651b8a124f38009895f341d4 100644
--- a/src/conversion/ensight/mesh/ensightMeshIO.C
+++ b/src/conversion/ensight/mesh/ensightMeshIO.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -274,7 +274,7 @@ void Foam::ensightMesh::writePolysConnectivity
         // Slaves
         for (int slave=1; slave<Pstream::nProcs(); ++slave)
         {
-            IPstream fromSlave(Pstream::scheduled, slave);
+            IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
             labelList addr(fromSlave);
             cellList  cellFaces(fromSlave);
 
@@ -283,7 +283,7 @@ void Foam::ensightMesh::writePolysConnectivity
     }
     else
     {
-        OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+        OPstream toMaster(Pstream::commsTypes::scheduled, Pstream::masterNo());
         toMaster
             << addr
             << cellFaces;
@@ -303,7 +303,7 @@ void Foam::ensightMesh::writePolysConnectivity
         // Slaves
         for (int slave=1; slave<Pstream::nProcs(); ++slave)
         {
-            IPstream fromSlave(Pstream::scheduled, slave);
+            IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
             labelList addr(fromSlave);
             cellList  cellFaces(fromSlave);
             faceList  meshFaces(fromSlave);
@@ -319,7 +319,7 @@ void Foam::ensightMesh::writePolysConnectivity
     }
     else
     {
-        OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+        OPstream toMaster(Pstream::commsTypes::scheduled, Pstream::masterNo());
         toMaster
             << addr
             << cellFaces
@@ -349,7 +349,7 @@ void Foam::ensightMesh::writePolysConnectivity
         // Slaves
         for (int slave=1; slave<Pstream::nProcs(); ++slave)
         {
-            IPstream fromSlave(Pstream::scheduled, slave);
+            IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
             labelList addr(fromSlave);
             cellList  cellFaces(fromSlave);
             faceList  faces(fromSlave);
@@ -367,7 +367,7 @@ void Foam::ensightMesh::writePolysConnectivity
     }
     else
     {
-        OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+        OPstream toMaster(Pstream::commsTypes::scheduled, Pstream::masterNo());
         toMaster
             << addr
             << cellFaces
@@ -423,7 +423,7 @@ void Foam::ensightMesh::writeCellConnectivity
 
                 for (int slave=1; slave<Pstream::nProcs(); ++slave)
                 {
-                    IPstream fromSlave(Pstream::scheduled, slave);
+                    IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                     cellShapeList received(fromSlave);
 
                     writeCellShapes(received, os);
@@ -431,7 +431,12 @@ void Foam::ensightMesh::writeCellConnectivity
             }
             else
             {
-                OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+                OPstream toMaster
+                (
+                    Pstream::commsTypes::scheduled,
+                    Pstream::masterNo()
+                );
+
                 toMaster
                     << shapes;
             }
@@ -505,7 +510,7 @@ void Foam::ensightMesh::writeFaceConnectivity
 
                 for (int slave=1; slave<Pstream::nProcs(); ++slave)
                 {
-                    IPstream fromSlave(Pstream::scheduled, slave);
+                    IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                     faceList received(fromSlave);
 
                     writeFaceSizes(received, os);
@@ -513,7 +518,12 @@ void Foam::ensightMesh::writeFaceConnectivity
             }
             else
             {
-                OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+                OPstream toMaster
+                (
+                    Pstream::commsTypes::scheduled,
+                    Pstream::masterNo()
+                );
+
                 toMaster
                     << faces;
             }
@@ -527,7 +537,7 @@ void Foam::ensightMesh::writeFaceConnectivity
 
             for (int slave=1; slave<Pstream::nProcs(); ++slave)
             {
-                IPstream fromSlave(Pstream::scheduled, slave);
+                IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                 faceList received(fromSlave);
 
                 writeFaceList(received, os);
@@ -535,7 +545,12 @@ void Foam::ensightMesh::writeFaceConnectivity
         }
         else
         {
-            OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+            OPstream toMaster
+            (
+                Pstream::commsTypes::scheduled,
+                Pstream::masterNo()
+            );
+
             toMaster
                 << faces;
         }
@@ -573,7 +588,7 @@ void Foam::ensightMesh::writeFaceConnectivity
 
                 for (int slave=1; slave<Pstream::nProcs(); ++slave)
                 {
-                    IPstream fromSlave(Pstream::scheduled, slave);
+                    IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                     faceList received(fromSlave);
 
                     writeFaceSizes(received, os);
@@ -581,7 +596,12 @@ void Foam::ensightMesh::writeFaceConnectivity
             }
             else
             {
-                OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+                OPstream toMaster
+                (
+                    Pstream::commsTypes::scheduled,
+                    Pstream::masterNo()
+                );
+
                 toMaster
                     << faces;
             }
@@ -594,7 +614,7 @@ void Foam::ensightMesh::writeFaceConnectivity
 
             for (int slave=1; slave<Pstream::nProcs(); ++slave)
             {
-                IPstream fromSlave(Pstream::scheduled, slave);
+                IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                 faceList received(fromSlave);
 
                 writeFaceList(received, os);
@@ -602,7 +622,12 @@ void Foam::ensightMesh::writeFaceConnectivity
         }
         else
         {
-            OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+            OPstream toMaster
+            (
+                Pstream::commsTypes::scheduled,
+                Pstream::masterNo()
+            );
+
             toMaster
                 << faces;
         }
@@ -679,7 +704,7 @@ void Foam::ensightMesh::writeAllPoints
 
             for (int slave=1; slave<Pstream::nProcs(); ++slave)
             {
-                IPstream fromSlave(Pstream::scheduled, slave);
+                IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                 scalarField received(fromSlave);
                 os.writeList(received);
             }
@@ -689,7 +714,12 @@ void Foam::ensightMesh::writeAllPoints
     {
         for (direction cmpt=0; cmpt < point::nComponents; ++cmpt)
         {
-            OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+            OPstream toMaster
+            (
+                Pstream::commsTypes::scheduled,
+                Pstream::masterNo()
+            );
+
             toMaster
                 << uniquePoints.component(cmpt);
         }
diff --git a/src/conversion/ensight/output/ensightOutputTemplates.C b/src/conversion/ensight/output/ensightOutputTemplates.C
index 2689c1266403f39034ec51ed20bfa1f8f2e41db2..2ce1af6cd7943ab49fc4d5882d2c383f3c21d3f6 100644
--- a/src/conversion/ensight/output/ensightOutputTemplates.C
+++ b/src/conversion/ensight/output/ensightOutputTemplates.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -63,7 +63,7 @@ void Foam::ensightOutput::writeFieldContent
 
                 for (int slave=1; slave<Pstream::nProcs(); ++slave)
                 {
-                    IPstream fromSlave(Pstream::scheduled, slave);
+                    IPstream fromSlave(Pstream::commsTypes::scheduled, slave);
                     scalarField received(fromSlave);
                     os.writeList(received);
                 }
@@ -75,7 +75,12 @@ void Foam::ensightOutput::writeFieldContent
             {
                 const label cmpt = ensightPTraits<Type>::componentOrder[d];
 
-                OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+                OPstream toMaster
+                (
+                    Pstream::commsTypes::scheduled,
+                    Pstream::masterNo()
+                );
+
                 toMaster
                     << fld.component(cmpt);
             }
diff --git a/src/dynamicMesh/fvMeshTools/fvMeshTools.C b/src/dynamicMesh/fvMeshTools/fvMeshTools.C
index fd51c2af8886812250a8ef563578152e495729ea..ad06dcafca271349e9c4fadf3f2846afb11be261 100644
--- a/src/dynamicMesh/fvMeshTools/fvMeshTools.C
+++ b/src/dynamicMesh/fvMeshTools/fvMeshTools.C
@@ -477,14 +477,14 @@ Foam::autoPtr<Foam::fvMesh> Foam::fvMeshTools::newMesh
             slave++
         )
         {
-            OPstream toSlave(Pstream::scheduled, slave);
+            OPstream toSlave(Pstream::commsTypes::scheduled, slave);
             toSlave << patchEntries;
         }
     }
     else
     {
         // Receive patches
-        IPstream fromMaster(Pstream::scheduled, Pstream::masterNo());
+        IPstream fromMaster(Pstream::commsTypes::scheduled, Pstream::masterNo());
         fromMaster >> patchEntries;
     }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
index c68231649ab12689237a298fc349a8388b88167b..280817df45633ffd119c31b18f83be5ca39688b3 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
@@ -673,7 +673,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::calcOverlappingProcEddies
 
     mapDistribute map(segmentI, sendMap.xfer(), constructMap.xfer());
 
-    PstreamBuffers pBufs(Pstream::nonBlocking);
+    PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
 
     for (label domain = 0; domain < Pstream::nProcs(); domain++)
     {
diff --git a/src/functionObjects/field/externalCoupled/externalCoupled.C b/src/functionObjects/field/externalCoupled/externalCoupled.C
index d56174a81e4d4a3f4e0a13ef7ad5689f7117bef6..ae04ca981fce4414136837b522ac557a69d7e1f9 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupled.C
+++ b/src/functionObjects/field/externalCoupled/externalCoupled.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015-2016 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2015-2017 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -322,7 +322,7 @@ void Foam::functionObjects::externalCoupled::readColumns
     // Get sizes for all processors
     const globalIndex globalFaces(nRows);
 
-    PstreamBuffers pBufs(Pstream::nonBlocking);
+    PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
     if (Pstream::master())
     {
         string line;
@@ -391,7 +391,7 @@ void Foam::functionObjects::externalCoupled::readLines
     // Get sizes for all processors
     const globalIndex globalFaces(nRows);
 
-    PstreamBuffers pBufs(Pstream::nonBlocking);
+    PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
 
     if (Pstream::master())
     {
diff --git a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
index 90d6fc3b06b2bddf5c72b22fcad276c6a0b66c50..84f092836d3ff486d809eb63516f46ef637e9f1e 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
+++ b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015-2016 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2015-2017 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -438,14 +438,24 @@ bool Foam::functionObjects::externalCoupled::writeData
 
                     for (label proci = 1; proci < Pstream::nProcs(); proci++)
                     {
-                        IPstream fromSlave(Pstream::scheduled, proci);
+                        IPstream fromSlave
+                        (
+                            Pstream::commsTypes::scheduled,
+                            proci
+                        );
+
                         string str(fromSlave);
                         masterFilePtr() << str.c_str();
                     }
                 }
                 else
                 {
-                    OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
+                    OPstream toMaster
+                    (
+                        Pstream::commsTypes::scheduled,
+                        Pstream::masterNo()
+                    );
+
                     toMaster << os.str();
                 }
             }
diff --git a/src/functionObjects/field/mapFields/mapFieldsTemplates.C b/src/functionObjects/field/mapFields/mapFieldsTemplates.C
index 2b473ac3289d5de43bfad59bae0253a833e29686..792dff4e59c1c646d7183332acd8afcf2662238d 100644
--- a/src/functionObjects/field/mapFields/mapFieldsTemplates.C
+++ b/src/functionObjects/field/mapFields/mapFieldsTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2016-2017 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -40,8 +40,8 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes
 
     if
     (
-        Pstream::defaultCommsType == Pstream::blocking
-     || Pstream::defaultCommsType == Pstream::nonBlocking
+        Pstream::defaultCommsType == Pstream::commsTypes::blocking
+     || Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking
     )
     {
         label nReq = Pstream::nRequests();
@@ -64,7 +64,7 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes
         if
         (
             Pstream::parRun()
-         && Pstream::defaultCommsType == Pstream::nonBlocking
+         && Pstream::defaultCommsType == Pstream::commsTypes::nonBlocking
         )
         {
             Pstream::waitRequests(nReq);
@@ -84,7 +84,7 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes
             }
         }
     }
-    else if (Pstream::defaultCommsType == Pstream::scheduled)
+    else if (Pstream::defaultCommsType == Pstream::commsTypes::scheduled)
     {
         const lduSchedule& patchSchedule =
             fld.mesh().globalData().patchSchedule();
@@ -102,11 +102,11 @@ void Foam::functionObjects::mapFields::evaluateConstraintTypes
             {
                 if (patchSchedule[patchEvali].init)
                 {
-                    tgtField.initEvaluate(Pstream::scheduled);
+                    tgtField.initEvaluate(Pstream::commsTypes::scheduled);
                 }
                 else
                 {
-                    tgtField.evaluate(Pstream::scheduled);
+                    tgtField.evaluate(Pstream::commsTypes::scheduled);
                 }
             }
         }
diff --git a/src/functionObjects/field/streamLine/streamLineBase.C b/src/functionObjects/field/streamLine/streamLineBase.C
index d5741a6c2bf613de9c96eff6070981a1beafd489..89605eeb55b7907838a0a385b6c648db656d232b 100644
--- a/src/functionObjects/field/streamLine/streamLineBase.C
+++ b/src/functionObjects/field/streamLine/streamLineBase.C
@@ -644,7 +644,7 @@ bool Foam::functionObjects::streamLineBase::write()
         allTracks_.shrink();
         mapDistributeBase::distribute
         (
-            Pstream::scheduled,
+            Pstream::commsTypes::scheduled,
             distMap.schedule(),
             distMap.constructSize(),
             distMap.subMap(),
@@ -662,7 +662,7 @@ bool Foam::functionObjects::streamLineBase::write()
             allScalars_[scalari].shrink();
             mapDistributeBase::distribute
             (
-                Pstream::scheduled,
+                Pstream::commsTypes::scheduled,
                 distMap.schedule(),
                 distMap.constructSize(),
                 distMap.subMap(),
@@ -680,7 +680,7 @@ bool Foam::functionObjects::streamLineBase::write()
             allVectors_[vectori].shrink();
             mapDistributeBase::distribute
             (
-                Pstream::scheduled,
+                Pstream::commsTypes::scheduled,
                 distMap.schedule(),
                 distMap.constructSize(),
                 distMap.subMap(),
diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
index 7b9e6180b95fd27d1b2f069a75e3c9f330b8fab7..b18c7989854883714bf5c875916e5722c2d472b6 100644
--- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
+++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
@@ -126,7 +126,7 @@ void surfaceNoise::readSurfaceData
 
     if (Pstream::parRun())
     {
-        PstreamBuffers pBufs(Pstream::nonBlocking);
+        PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
 
         // Procedure:
         // 1. Master processor reads pressure data for all faces for all times
@@ -243,7 +243,7 @@ Foam::scalar surfaceNoise::writeSurfaceData
     {
         // Collect the surface data so that we can output the surfaces
 
-        PstreamBuffers pBufs(Pstream::nonBlocking);
+        PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
 
         if (!Pstream::master())
         {
@@ -342,7 +342,7 @@ Foam::scalar surfaceNoise::surfaceAverage
     {
         // Collect the surface data so that we can output the surfaces
 
-        PstreamBuffers pBufs(Pstream::nonBlocking);
+        PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
 
         if (!Pstream::master())
         {
diff --git a/src/thermophysicalModels/specie/Make/options b/src/thermophysicalModels/specie/Make/options
index 34572985089de6d7f81e51e56523184aaf94bec3..79be6f3a7dd8fa81ba203d5ab8572c446c43a6c7 100644
--- a/src/thermophysicalModels/specie/Make/options
+++ b/src/thermophysicalModels/specie/Make/options
@@ -1 +1,3 @@
-LIB_LIBS = -lOpenFOAM
+EXE_INC =
+
+LIB_LIBS =
diff --git a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H
index 712ae33115329fe6a370507760439db846650cde..2eb3b4bc413d5a955112f6e313b78747b6a29ff3 100644
--- a/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H
+++ b/src/thermophysicalModels/specie/transport/logPolynomial/logPolynomialTransport.H
@@ -24,6 +24,9 @@ License
 Class
     Foam::logPolynomialTransport
 
+Group
+    grpSpecieTransport
+
 Description
     Transport package using polynomial functions of \c ln(T) for \c mu and
     \c kappa:
diff --git a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution
index a0e75dab131796fdaa9ba30a40794f18369241a5..4935d97bf9fedb3cdbf770652cbcc21574c1f8dd 100644
--- a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution
+++ b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/fvSolution
@@ -34,7 +34,7 @@ solvers
         minIter         1;
     }
 
-    pcorr
+    "pcorr.*"
     {
         $p;
         tolerance       1e-02;
diff --git a/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution b/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution
index 61f0eaa59c5de478d9330dfd9f7a77cbd5636643..c84f5e1dc02d7d50347acc9aa023c379c4d0ddf8 100644
--- a/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution
+++ b/tutorials/combustion/XiDyMFoam/oscillatingCylinder/system/fvSolution
@@ -34,7 +34,7 @@ solvers
         minIter         1;
     }
 
-    pcorr
+    "pcorr.*"
     {
         $p;
         tolerance       1e-2;
diff --git a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution
index a0d2307156076962856cb48ac4d591c6cd942273..965308f8aa792b64afcccd68fdc88cda952c9774 100644
--- a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution
+++ b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/fvSolution
@@ -33,7 +33,7 @@ solvers
         maxIter         100;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          PCG;
         preconditioner  DIC;
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution
index 8a34cb8f480f2cf64f2630a6f52c3855bc98af55..6af6e27afd91cfced2700d7b83fed37bc50ced2e 100644
--- a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution
@@ -90,7 +90,7 @@ solvers
         maxIter         300;
     };
 
-    pcorr
+    "pcorr.*"
     {
         $p_rgh;
         relTol          0;
diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution
index 24676d65528c969ec70c2f74d3d79b3f74dd820b..ffe2a08bf1aada5c457b7ed1fa16ed4e06664b0f 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/fvSolution
@@ -24,7 +24,7 @@ solvers
         cAlpha          1.5;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          PCG;
         preconditioner
diff --git a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution
index d2eb88fed75d73d28f103b67abe1bb34c6a90a84..5afe33ef1e2a757dbbe8381a8408aeaa7f96050f 100644
--- a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/fvSolution
@@ -24,7 +24,7 @@ solvers
         cAlpha          2;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          GAMG;
         smoother        GaussSeidel;
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution
index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         cAlpha          1;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          PCG;
         preconditioner  DIC;
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution
index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         cAlpha          1;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          PCG;
         preconditioner  DIC;
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution
index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         cAlpha          1;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          PCG;
         preconditioner  DIC;
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution
index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         cAlpha          1;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          PCG;
         preconditioner  DIC;
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution
index 859308b6fabab21be628e4f49871e8e0104adbe6..dee334f852def87e5a1e475dff7ae74349491321 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         cAlpha          1;
     }
 
-    pcorr
+    "pcorr.*"
     {
         solver          PCG;
         preconditioner  DIC;