diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
index f7c723a5ceb37a5d89f65c947cdfb814b9740943..e3940b7f0f9eff7c01fc95a054e293de2bead567 100644
--- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
@@ -46,7 +46,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createFields.H"
     #include "createFvOptions.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/incompressible/simpleFoam/createControls.H b/applications/solvers/incompressible/simpleFoam/createControl.H
similarity index 100%
rename from applications/solvers/incompressible/simpleFoam/createControls.H
rename to applications/solvers/incompressible/simpleFoam/createControl.H
diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
index 4bf481946c47fa50b95bc5aa57a4201376ba7766..9c30d039b287abed6f0360d8b175d927551f70ec 100644
--- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
@@ -48,7 +48,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createFields.H"
     #include "createPorousZones.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/incompressible/simpleFoam/simpleFoam.C b/applications/solvers/incompressible/simpleFoam/simpleFoam.C
index f97f8a79b51aca7eb5f2d6f9f25680abfbb80a2f..28af7112b4e9730633df5c0062d07eb46d78d3d6 100644
--- a/applications/solvers/incompressible/simpleFoam/simpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/simpleFoam.C
@@ -44,7 +44,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createFields.H"
     #include "createFvOptions.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
index 58c1483b2409fe3a5ca4c7e28afb1ec7669f4134..32205081172474d36f324ce60505d7499af05d21 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,14 +44,12 @@ Description
 
 int main(int argc, char *argv[])
 {
-    #include "setRootCase.H"
+    #include "postProcess.H"
 
+    #include "setRootCase.H"
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
-
-    pimpleControl pimple(mesh);
-
-    #include "readThermodynamicProperties.H"
+    #include "createControl.H"
     #include "createControls.H"
     #include "createFields.H"
     #include "createUf.H"
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
index e40105aab7015527807bd84958ec16d6935c17e1..4f20f533137bfb47b7b3234737afc898b9fdb9c2 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -42,14 +42,12 @@ Description
 
 int main(int argc, char *argv[])
 {
-    #include "setRootCase.H"
+    #include "postProcess.H"
 
+    #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
-    #include "readThermodynamicProperties.H"
+    #include "createControl.H"
     #include "createControls.H"
     #include "createFields.H"
     #include "CourantNo.H"
diff --git a/applications/solvers/multiphase/interFoam/createControls.H b/applications/solvers/multiphase/cavitatingFoam/createControl.H
similarity index 100%
rename from applications/solvers/multiphase/interFoam/createControls.H
rename to applications/solvers/multiphase/cavitatingFoam/createControl.H
diff --git a/applications/solvers/multiphase/cavitatingFoam/createFields.H b/applications/solvers/multiphase/cavitatingFoam/createFields.H
index f124d8972c3a1d4a94673e1995300873f412e479..0108b8c56a09800b8186768fd3c466c08069bc98 100644
--- a/applications/solvers/multiphase/cavitatingFoam/createFields.H
+++ b/applications/solvers/multiphase/cavitatingFoam/createFields.H
@@ -1,3 +1,5 @@
+#include "readThermodynamicProperties.H"
+
 Info<< "Reading field p\n" << endl;
 volScalarField p
 (
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
index 521628fa10bdbf1a7f11ead4c9a1fdc4181331f9..6f7ee7ffceaaaf1770391b205898aa6163dbcbad 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
@@ -52,19 +52,24 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "postProcess.H"
+
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
     #include "initContinuityErrs.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createFields.H"
     #include "createUf.H"
     #include "createControls.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
+    volScalarField& p = mixture.p();
+    volScalarField& T = mixture.T();
+    const volScalarField& psi1 = mixture.thermo1().psi();
+    const volScalarField& psi2 = mixture.thermo2().psi();
+
     turbulence->validate();
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
index 3a135b735ed7b5df4cf8b58fb36b6a1bf5344806..150cc8bdfdbb1f4d71047914203fb239a0afac77 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
@@ -49,17 +49,22 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "postProcess.H"
+
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createFields.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
+    volScalarField& p = mixture.p();
+    volScalarField& T = mixture.T();
+    const volScalarField& psi1 = mixture.thermo1().psi();
+    const volScalarField& psi2 = mixture.thermo2().psi();
+
     turbulence->validate();
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/createControls.H b/applications/solvers/multiphase/compressibleInterFoam/createControl.H
similarity index 100%
rename from applications/solvers/multiphase/interPhaseChangeFoam/createControls.H
rename to applications/solvers/multiphase/compressibleInterFoam/createControl.H
diff --git a/applications/solvers/multiphase/compressibleInterFoam/createFields.H b/applications/solvers/multiphase/compressibleInterFoam/createFields.H
index 48628768280591af1213082d55c8ccf1418ff82a..9a49e504c627507b8a87e87a0fec098b3ca2e08d 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/createFields.H
@@ -36,12 +36,8 @@ volScalarField& alpha2(mixture.alpha2());
 
 Info<< "Reading thermophysical properties\n" << endl;
 
-volScalarField& p = mixture.p();
-volScalarField& T = mixture.T();
 volScalarField& rho1 = mixture.thermo1().rho();
-const volScalarField& psi1 = mixture.thermo1().psi();
 volScalarField& rho2 = mixture.thermo2().rho();
-const volScalarField& psi2 = mixture.thermo2().psi();
 
 volScalarField rho
 (
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options
index b23735398536b0a2cb86b7f49be8cd329791d0b7..f3010e0e57fbc734a79ed4618c39b70a0dd28775 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options
@@ -1,4 +1,5 @@
 EXE_INC = \
+    -I. \
     -I../interFoam \
     -ImultiphaseMixtureThermo/lnInclude \
     -I$(LIB_SRC)/transportModels/compressible/lnInclude \
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
index f3d9bf8314ddc70b12e1fefd18d7ca003401d3df..3dc33d6a6421ff7313edbab483832dc1354668f6 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
@@ -44,17 +44,20 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "postProcess.H"
+
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createFields.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
+    volScalarField& p = mixture.p();
+    volScalarField& T = mixture.T();
+
     turbulence->validate();
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/createControls.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createControl.H
similarity index 100%
rename from applications/solvers/multiphase/potentialFreeSurfaceFoam/createControls.H
rename to applications/solvers/multiphase/compressibleMultiphaseInterFoam/createControl.H
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H
index 8ac81a519583e5f5581c2f396f11add4dee496d9..dcb89c35b903b9182165701e7c9adcb7891283b7 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H
@@ -31,9 +31,6 @@ volVectorField U
 Info<< "Constructing multiphaseMixtureThermo\n" << endl;
 multiphaseMixtureThermo mixture(U, phi);
 
-volScalarField& p = mixture.p();
-volScalarField& T = mixture.T();
-
 volScalarField rho
 (
     IOobject
diff --git a/applications/solvers/multiphase/driftFluxFoam/createControl.H b/applications/solvers/multiphase/driftFluxFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/driftFluxFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/driftFluxFoam/createFields.H b/applications/solvers/multiphase/driftFluxFoam/createFields.H
index 65d3d38eaec3c6e0f0375826e935709587931e1f..f1b4e78645a9be991debf7cdb8ada84ac95a0fee 100644
--- a/applications/solvers/multiphase/driftFluxFoam/createFields.H
+++ b/applications/solvers/multiphase/driftFluxFoam/createFields.H
@@ -33,10 +33,6 @@ Info<< "Reading incompressibleTwoPhaseInteractingMixture\n" << endl;
 incompressibleTwoPhaseInteractingMixture mixture(U, phi);
 
 volScalarField& alpha1(mixture.alpha1());
-volScalarField& alpha2(mixture.alpha2());
-
-const dimensionedScalar& rho1 = mixture.rhod();
-const dimensionedScalar& rho2 = mixture.rhoc();
 
 // Mixture density
 volScalarField rho
@@ -77,8 +73,6 @@ autoPtr<relativeVelocityModel> UdmModelPtr
     )
 );
 
-relativeVelocityModel& UdmModel(UdmModelPtr());
-
 
 // Construct compressible turbulence model
 autoPtr
diff --git a/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C b/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
index c0a2be76a7fedbc8026621f95576bcaf8866f2ef..990c11b8b0faa9353e793e506900bd3679628f6a 100644
--- a/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
+++ b/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
@@ -49,19 +49,23 @@ Description
 
 int main(int argc, char *argv[])
 {
-    #include "setRootCase.H"
+    #include "postProcess.H"
 
+    #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
     #include "initContinuityErrs.H"
 
+    volScalarField& alpha2(mixture.alpha2());
+    const dimensionedScalar& rho1 = mixture.rhod();
+    const dimensionedScalar& rho2 = mixture.rhoc();
+    relativeVelocityModel& UdmModel(UdmModelPtr());
+
     turbulence->validate();
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/multiphase/interFoam/createControl.H b/applications/solvers/multiphase/interFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/interFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
index 15707219a44a5105b6d4d0448d070dad7934380a..07206d3c5292f3a03a30853f031e10135c36c2ae 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
     #include "initContinuityErrs.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createDyMControls.H"
     #include "createRDeltaT.H"
diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C
index 8e8c78fff48410b601065c76aeb864de11086dc3..c5c4be315b251901d243b05c6a793bd77cc16023 100644
--- a/applications/solvers/multiphase/interFoam/interFoam.C
+++ b/applications/solvers/multiphase/interFoam/interFoam.C
@@ -60,7 +60,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
index 8b59f1ad4ff1cf5c0ebf976a6d7aaa289d95314c..28d8d6d4bf0099508444b3839880016b689f8919 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
@@ -50,7 +50,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/createControl.H b/applications/solvers/multiphase/interPhaseChangeFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
index d12aaad2639a539e035c05a64e6129858372834e..f0d9f099173a2409a19391a8f07432913522f944 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
@@ -61,7 +61,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "../interFoam/interDyMFoam/createDyMControls.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
index 2a2d5cbc38709dbc1626121f96f9d945eeac52a7..d33efa3fa3d86d2b7a1e7f5d253d527b09ff2504 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
@@ -58,7 +58,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createFields.H"
     #include "createFvOptions.H"
     #include "createTimeControls.H"
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/createControl.H b/applications/solvers/multiphase/multiphaseEulerFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H b/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H
index 212160b83e6fea4e1f3d7e94e362cf5d50c9caf7..a4b9838335d68e65d717a8c6b03e4537eb54e0dc 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H
@@ -51,18 +51,6 @@ forAllIter(PtrDictionary<phaseModel>, fluid.phases(), iter)
     phi += fvc::interpolate(alpha)*phase.phi();
 }
 
-scalar slamDampCoeff
-(
-    fluid.lookupOrDefault<scalar>("slamDampCoeff", 1)
-);
-
-dimensionedScalar maxSlamVelocity
-(
-    "maxSlamVelocity",
-    dimVelocity,
-    fluid.lookupOrDefault<scalar>("maxSlamVelocity", GREAT)
-);
-
 
 volScalarField rho
 (
@@ -114,3 +102,6 @@ setRefCell
     pRefValue
 );
 mesh.setFluxRequired(p_rgh.name());
+
+
+#include "createMRFZones.H"
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
index 168c00be7e3b5dfbb33719e54c71dba6cbea000c..c27bf597ed12ea9e1a5d55431e6b9264f3e0b8ae 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
@@ -45,21 +45,31 @@ Description
 
 int main(int argc, char *argv[])
 {
-    #include "setRootCase.H"
+    #include "postProcess.H"
 
+    #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createFields.H"
-    #include "createMRFZones.H"
     #include "initContinuityErrs.H"
     #include "createTimeControls.H"
     #include "correctPhi.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
+    scalar slamDampCoeff
+    (
+        fluid.lookupOrDefault<scalar>("slamDampCoeff", 1)
+    );
+
+    dimensionedScalar maxSlamVelocity
+    (
+        "maxSlamVelocity",
+        dimVelocity,
+        fluid.lookupOrDefault<scalar>("maxSlamVelocity", GREAT)
+    );
+
     turbulence->validate();
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
index fa3969d85539d967e1eeb7c86c727e167488a667..9cff08c31f1b1cb0f706615d8bea9b6f4523bd23 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
@@ -50,7 +50,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
     #include "initContinuityErrs.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createDyMControls.H"
     #include "createFields.H"
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
index 933a396fe13792e812f25a7b64824529c22fdd38..68ea578ff9ca0e518f84489085439bdd7f3f86ab 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
@@ -48,7 +48,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
     #include "createMRF.H"
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/createControl.H b/applications/solvers/multiphase/potentialFreeSurfaceFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
index dea10839190989ee855db843d70a136b7ba2798b..9b5b6a44ed425612a8a4ed9b07c4a759df934713 100644
--- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
+++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
@@ -55,7 +55,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createDynamicFvMesh.H"
     #include "initContinuityErrs.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createDyMControls.H"
     #include "createFields.H"
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
index b23fb73cf05cc046f963f4daead379c394b826fc..615c76bd52bc8a270c4f77afff976efbf8127aea 100644
--- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
+++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
@@ -49,7 +49,7 @@ int main(int argc, char *argv[])
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-    #include "createControls.H"
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createFields.H"
     #include "createMRF.H"
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createControl.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFieldRefs.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFieldRefs.H
new file mode 100644
index 0000000000000000000000000000000000000000..8a629b017ddb149251f35b251d8985d16665d826
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFieldRefs.H
@@ -0,0 +1,4 @@
+surfaceScalarField& phi = fluid.phi();
+
+const IOMRFZoneList& MRF = fluid.MRF();
+fv::options& fvOptions = fluid.fvOptions();
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFields.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFields.H
index 6e7b6aacc8844129d9f111c5b865cba14ff0fb41..8eafafb2fda99358f40ffc4213238a31ea701204 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFields.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFields.H
@@ -10,8 +10,6 @@ autoPtr<multiphaseSystem> fluidPtr
 multiphaseSystem& fluid = fluidPtr();
 multiphaseSystem::phaseModelList& phases = fluid.phases();
 
-surfaceScalarField& phi = fluid.phi();
-
 dimensionedScalar pMin
 (
     "pMin",
@@ -48,6 +46,3 @@ setRefCell
     pRefValue
 );
 mesh.setFluxRequired(p_rgh.name());
-
-const IOMRFZoneList& MRF = fluid.MRF();
-fv::options& fvOptions = fluid.fvOptions();
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
index a98129cc7e466da61f425771f0bc9716ce909bbc..d1b1619567d3e2e9b06018a903979d079a621a8b 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
@@ -43,16 +43,16 @@ Description
 
 int main(int argc, char *argv[])
 {
-    #include "setRootCase.H"
+    #include "postProcess.H"
 
+    #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "createFields.H"
+    #include "createFieldRefs.H"
 
     if (!LTS)
     {
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createControl.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFieldRefs.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFieldRefs.H
new file mode 100644
index 0000000000000000000000000000000000000000..96cbabfe8e43d4223d6abee6312eee704b15f91c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFieldRefs.H
@@ -0,0 +1,28 @@
+phaseModel& phase1 = fluid.phase1();
+phaseModel& phase2 = fluid.phase2();
+
+volScalarField& alpha1 = phase1;
+volScalarField& alpha2 = phase2;
+
+volVectorField& U1 = phase1.U();
+surfaceScalarField& phi1 = phase1.phi();
+surfaceScalarField& alphaPhi1 = phase1.alphaPhi();
+surfaceScalarField& alphaRhoPhi1 = phase1.alphaRhoPhi();
+
+volVectorField& U2 = phase2.U();
+surfaceScalarField& phi2 = phase2.phi();
+surfaceScalarField& alphaPhi2 = phase2.alphaPhi();
+surfaceScalarField& alphaRhoPhi2 = phase2.alphaRhoPhi();
+surfaceScalarField& phi = fluid.phi();
+
+rhoThermo& thermo1 = phase1.thermo();
+rhoThermo& thermo2 = phase2.thermo();
+
+volScalarField& rho1 = thermo1.rho();
+const volScalarField& psi1 = thermo1.psi();
+
+volScalarField& rho2 = thermo2.rho();
+const volScalarField& psi2 = thermo2.psi();
+
+const IOMRFZoneList& MRF = fluid.MRF();
+fv::options& fvOptions = fluid.fvOptions();
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFields.H
index 75d7de420ee1a3439b72723f2247a08b986b1fae..932c05cb0d2d70a7efc0c8b7d76652247031362a 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFields.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFields.H
@@ -9,24 +9,6 @@ autoPtr<twoPhaseSystem> fluidPtr
 );
 twoPhaseSystem& fluid = fluidPtr();
 
-phaseModel& phase1 = fluid.phase1();
-phaseModel& phase2 = fluid.phase2();
-
-volScalarField& alpha1 = phase1;
-volScalarField& alpha2 = phase2;
-
-volVectorField& U1 = phase1.U();
-surfaceScalarField& phi1 = phase1.phi();
-surfaceScalarField& alphaPhi1 = phase1.alphaPhi();
-surfaceScalarField& alphaRhoPhi1 = phase1.alphaRhoPhi();
-
-volVectorField& U2 = phase2.U();
-surfaceScalarField& phi2 = phase2.phi();
-surfaceScalarField& alphaPhi2 = phase2.alphaPhi();
-surfaceScalarField& alphaRhoPhi2 = phase2.alphaRhoPhi();
-
-surfaceScalarField& phi = fluid.phi();
-
 dimensionedScalar pMin
 (
     "pMin",
@@ -36,16 +18,7 @@ dimensionedScalar pMin
 
 #include "gh.H"
 
-rhoThermo& thermo1 = phase1.thermo();
-rhoThermo& thermo2 = phase2.thermo();
-
-volScalarField& p = thermo1.p();
-
-volScalarField& rho1 = thermo1.rho();
-const volScalarField& psi1 = thermo1.psi();
-
-volScalarField& rho2 = thermo2.rho();
-const volScalarField& psi2 = thermo2.psi();
+volScalarField& p = fluid.phase1().thermo().p();
 
 Info<< "Reading field p_rgh\n" << endl;
 volScalarField p_rgh
@@ -72,6 +45,3 @@ setRefCell
     pRefValue
 );
 mesh.setFluxRequired(p_rgh.name());
-
-const IOMRFZoneList& MRF = fluid.MRF();
-fv::options& fvOptions = fluid.fvOptions();
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
index 0e5542672d66ccd8c8407ad9e169eacda0f205c5..032b9bce43e7f5b81c3209c4e64043c359b07979 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
@@ -44,16 +44,16 @@ Description
 
 int main(int argc, char *argv[])
 {
-    #include "setRootCase.H"
+    #include "postProcess.H"
 
+    #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createTimeControls.H"
     #include "createRDeltaT.H"
     #include "createFields.H"
+    #include "createFieldRefs.H"
 
     if (!LTS)
     {
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options b/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options
index 04e5d53a91b89547358f7bb34f4d9f79d68521d9..4dfc63419d1f824c5509433bbf7f45cdbefd25f8 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/Make/options
@@ -1,4 +1,5 @@
 EXE_INC = \
+    -I. \
     -I../interFoam \
     -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/transportModels \
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/createControl.H b/applications/solvers/multiphase/twoLiquidMixingFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
index 901be88800433b357d07fa63076405139e7b0d27..45a6e714693ede850e7019c96e1f04e2142928d1 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
@@ -42,12 +42,12 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "postProcess.H"
+
     #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
     #include "createTimeControls.H"
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/createControl.H b/applications/solvers/multiphase/twoPhaseEulerFoam/createControl.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf82a59b358b7aaa3981f923a5610f2c0985b9b0
--- /dev/null
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/createControl.H
@@ -0,0 +1 @@
+pimpleControl pimple(mesh);
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/createFieldRefs.H b/applications/solvers/multiphase/twoPhaseEulerFoam/createFieldRefs.H
new file mode 100644
index 0000000000000000000000000000000000000000..71c3e5e39db414cfd692415de9ef4ee135953c3d
--- /dev/null
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/createFieldRefs.H
@@ -0,0 +1,20 @@
+volScalarField& alpha2 = phase2;
+
+surfaceScalarField& phi1 = phase1.phi();
+surfaceScalarField& alphaPhi1 = phase1.alphaPhi();
+surfaceScalarField& alphaRhoPhi1 = phase1.alphaRhoPhi();
+
+surfaceScalarField& phi2 = phase2.phi();
+surfaceScalarField& alphaPhi2 = phase2.alphaPhi();
+surfaceScalarField& alphaRhoPhi2 = phase2.alphaRhoPhi();
+
+surfaceScalarField& phi = fluid.phi();
+
+rhoThermo& thermo1 = phase1.thermo();
+rhoThermo& thermo2 = phase2.thermo();
+
+volScalarField& rho1 = thermo1.rho();
+const volScalarField& psi1 = thermo1.psi();
+
+volScalarField& rho2 = thermo2.rho();
+const volScalarField& psi2 = thermo2.psi();
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H
index 570d7fd69956d5dd6fc56789decd63f59d6ca585..b8192fa2ba7f0965fa9dad1658c22e73db169108 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H
@@ -9,19 +9,10 @@ phaseModel& phase1 = fluid.phase1();
 phaseModel& phase2 = fluid.phase2();
 
 volScalarField& alpha1 = phase1;
-volScalarField& alpha2 = phase2;
-
 volVectorField& U1 = phase1.U();
-surfaceScalarField& phi1 = phase1.phi();
-surfaceScalarField& alphaPhi1 = phase1.alphaPhi();
-surfaceScalarField& alphaRhoPhi1 = phase1.alphaRhoPhi();
-
 volVectorField& U2 = phase2.U();
-surfaceScalarField& phi2 = phase2.phi();
-surfaceScalarField& alphaPhi2 = phase2.alphaPhi();
-surfaceScalarField& alphaRhoPhi2 = phase2.alphaRhoPhi();
 
-surfaceScalarField& phi = fluid.phi();
+volScalarField& p = phase1.thermo().p();
 
 dimensionedScalar pMin
 (
@@ -32,17 +23,6 @@ dimensionedScalar pMin
 
 #include "gh.H"
 
-rhoThermo& thermo1 = phase1.thermo();
-rhoThermo& thermo2 = phase2.thermo();
-
-volScalarField& p = thermo1.p();
-
-volScalarField& rho1 = thermo1.rho();
-const volScalarField& psi1 = thermo1.psi();
-
-volScalarField& rho2 = thermo2.rho();
-const volScalarField& psi2 = thermo2.psi();
-
 Info<< "Reading field p_rgh\n" << endl;
 volScalarField p_rgh
 (
@@ -100,3 +80,5 @@ volScalarField dpdt
 Info<< "Creating field kinetic energy K\n" << endl;
 volScalarField K1(IOobject::groupName("K", phase1.name()), 0.5*magSqr(U1));
 volScalarField K2(IOobject::groupName("K", phase2.name()), 0.5*magSqr(U2));
+
+#include "createMRF.H"
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
index 1e6ac193012af59bb5996e2cd1473ce7e98cabd9..d86461087c2532e381f2a37b9f78df4bd3dcd77e 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
@@ -41,15 +41,14 @@ Description
 
 int main(int argc, char *argv[])
 {
-    #include "setRootCase.H"
+    #include "postProcess.H"
 
+    #include "setRootCase.H"
     #include "createTime.H"
     #include "createMesh.H"
-
-    pimpleControl pimple(mesh);
-
+    #include "createControl.H"
     #include "createFields.H"
-    #include "createMRF.H"
+    #include "createFieldRefs.H"
     #include "createFvOptions.H"
     #include "createTimeControls.H"
     #include "CourantNos.H"
diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/postProcess.H b/src/OpenFOAM/db/functionObjects/functionObjectList/postProcess.H
index 3b99c5fa5091c23e6367268eb7c97f3c980a8110..2a16ae115a2e82311343591729ce0b5db597e3e9 100644
--- a/src/OpenFOAM/db/functionObjects/functionObjectList/postProcess.H
+++ b/src/OpenFOAM/db/functionObjects/functionObjectList/postProcess.H
@@ -42,12 +42,12 @@ Description
 #define CREATE_MESH createMesh.H
 #endif
 
-#ifndef CREATE_FIELDS_1
-#define CREATE_FIELDS_1 createFields.H
+#ifndef CREATE_FIELDS
+#define CREATE_FIELDS createFields.H
 #endif
 
-#ifndef CREATE_CONTROLS
-#define CREATE_CONTROLS createControls.H
+#ifndef CREATE_CONTROL
+#define CREATE_CONTROL createControl.H
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -71,7 +71,7 @@ if (argList::postProcess(argc, argv))
     #include "createTime.H"
     Foam::instantList timeDirs = Foam::timeSelector::select0(runTime, args);
     #include INCLUDE_FILE(CREATE_MESH)
-    #include INCLUDE_FILE(CREATE_CONTROLS)
+    #include INCLUDE_FILE(CREATE_CONTROL)
 
     // Externally stored dictionary for functionObjectList
     // if not constructed from runTime
@@ -96,7 +96,7 @@ if (argList::postProcess(argc, argv))
                 functionObjectList::New(args, runTime, functionObjectsDict);
         }
 
-        #include INCLUDE_FILE(CREATE_FIELDS_1)
+        #include INCLUDE_FILE(CREATE_FIELDS)
 
         #ifdef CREATE_FIELDS_2
         #include INCLUDE_FILE(CREATE_FIELDS_2)
@@ -132,7 +132,7 @@ if (argList::postProcess(argc, argv))
 #undef INCLUDE_FILE2
 
 #undef CREATE_MESH
-#undef CREATE_FIELDS_1
-#undef CREATE_CONTROLS
+#undef CREATE_FIELDS
+#undef CREATE_CONTROL
 
 // ************************************************************************* //