diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
index 4cd6539edfbc9612e34b9915a5de2365cce47059..e7a1103a4fdb8033301e52cc03836ada6e96a84a 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
@@ -6,10 +6,12 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel
 
 EXE_LIBS = \
     -lbasicThermophysicalModels \
+    -lbasicSolidThermo \
     -lspecie \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
index 738319ec1003c3f6f3543de90a03eeb0bb66e781..922b94a8d616b4bec942b4b3c8ec8cea48238943 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
@@ -37,6 +37,7 @@ Description
 #include "regionProperties.H"
 #include "compressibleCourantNo.H"
 #include "solidRegionDiffNo.H"
+#include "basicSolidThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options
index a97ce0aae4ee3a35627f0598841a6dd7faf8c0ed..166480807990dc3f456f9a720b8d1add2a93dfdf 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options
@@ -7,6 +7,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude
@@ -14,5 +15,6 @@ EXE_INC = \
 EXE_LIBS = \
     -lfiniteVolume \
     -lbasicThermophysicalModels \
+    -lbasicSolidThermo \
     -lspecie \
     -lcompressibleRASModels
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C
index 927bd8124d8731c3cbe598b655752c8f546ebb04..be93fd01dff18f7a0a3a39cf9505c153b55214eb 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C
@@ -35,6 +35,7 @@ Description
 #include "fixedGradientFvPatchFields.H"
 #include "regionProperties.H"
 #include "compressibleCourantNo.H"
+#include "basicSolidThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H
index 8f109a3f8293ea88e9cd38b72d43632ae37a28a2..be13e670c326347f530dd991a4656e1dad22030f 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H
@@ -1,8 +1,5 @@
     // Initialise solid field pointer lists
-    PtrList<volScalarField> rhos(solidRegions.size());
-    PtrList<volScalarField> cps(solidRegions.size());
-    PtrList<volScalarField> Ks(solidRegions.size());
-    PtrList<volScalarField> Ts(solidRegions.size());
+    PtrList<basicSolidThermo> thermos(solidRegions.size());
 
     // Populate solid field pointer lists
     forAll(solidRegions, i)
@@ -10,75 +7,10 @@
         Info<< "*** Reading solid mesh thermophysical properties for region "
             << solidRegions[i].name() << nl << endl;
 
-        Info<< "    Adding to rhos\n" << endl;
-        rhos.set
+        Info<< "    Adding to thermos\n" << endl;
+        thermos.set
         (
             i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "rho",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
-        );
-
-        Info<< "    Adding to cps\n" << endl;
-        cps.set
-        (
-            i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "cp",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
-        );
-
-        Info<< "    Adding to Ks\n" << endl;
-        Ks.set
-        (
-            i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "K",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
-        );
-
-        Info<< "    Adding to Ts\n" << endl;
-        Ts.set
-        (
-            i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "T",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
+            basicSolidThermo::New(solidRegions[i])
         );
     }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H
index f9e80e3d72385e7f6ae80107cc3b65921904c35f..1e78cc297ae5e6d01e81316a3dddb50fed7c6e74 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H
@@ -1,6 +1,14 @@
     fvMesh& mesh = solidRegions[i];
+    basicSolidThermo& thermo = thermos[i];
 
-    volScalarField& rho = rhos[i];
-    volScalarField& cp = cps[i];
-    volScalarField& K = Ks[i];
-    volScalarField& T = Ts[i];
+    tmp<volScalarField> trho = thermo.rho();
+    const volScalarField& rho = trho();
+
+    tmp<volScalarField> tcp = thermo.cp();
+    const volScalarField& cp = tcp();
+
+    tmp<volScalarField> tK = thermo.K();
+    //tmp<volSymmTensorField> tK = thermo.directionalK();
+    const volScalarField& K = tK();
+
+    volScalarField& T = thermo.T();
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H
index 8f109a3f8293ea88e9cd38b72d43632ae37a28a2..be13e670c326347f530dd991a4656e1dad22030f 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H
@@ -1,8 +1,5 @@
     // Initialise solid field pointer lists
-    PtrList<volScalarField> rhos(solidRegions.size());
-    PtrList<volScalarField> cps(solidRegions.size());
-    PtrList<volScalarField> Ks(solidRegions.size());
-    PtrList<volScalarField> Ts(solidRegions.size());
+    PtrList<basicSolidThermo> thermos(solidRegions.size());
 
     // Populate solid field pointer lists
     forAll(solidRegions, i)
@@ -10,75 +7,10 @@
         Info<< "*** Reading solid mesh thermophysical properties for region "
             << solidRegions[i].name() << nl << endl;
 
-        Info<< "    Adding to rhos\n" << endl;
-        rhos.set
+        Info<< "    Adding to thermos\n" << endl;
+        thermos.set
         (
             i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "rho",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
-        );
-
-        Info<< "    Adding to cps\n" << endl;
-        cps.set
-        (
-            i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "cp",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
-        );
-
-        Info<< "    Adding to Ks\n" << endl;
-        Ks.set
-        (
-            i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "K",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
-        );
-
-        Info<< "    Adding to Ts\n" << endl;
-        Ts.set
-        (
-            i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "T",
-                    runTime.timeName(),
-                    solidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                solidRegions[i]
-            )
+            basicSolidThermo::New(solidRegions[i])
         );
     }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
index f9e80e3d72385e7f6ae80107cc3b65921904c35f..1e78cc297ae5e6d01e81316a3dddb50fed7c6e74 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
@@ -1,6 +1,14 @@
     fvMesh& mesh = solidRegions[i];
+    basicSolidThermo& thermo = thermos[i];
 
-    volScalarField& rho = rhos[i];
-    volScalarField& cp = cps[i];
-    volScalarField& K = Ks[i];
-    volScalarField& T = Ts[i];
+    tmp<volScalarField> trho = thermo.rho();
+    const volScalarField& rho = trho();
+
+    tmp<volScalarField> tcp = thermo.cp();
+    const volScalarField& cp = tcp();
+
+    tmp<volScalarField> tK = thermo.K();
+    //tmp<volSymmTensorField> tK = thermo.directionalK();
+    const volScalarField& K = tK();
+
+    volScalarField& T = thermo.T();
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H
index 4b09671de2ef040980f62cbbcb10054fb5ba8cb9..77dc6f04bf44ba748359c2f8bf3267307416b650 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H
@@ -1,15 +1,17 @@
     scalar DiNum = -GREAT;
 
-    forAll(solidRegions, regionI)
+    forAll(solidRegions, i)
     {
+#       include "setRegionSolidFields.H"
+
         DiNum = max
         (
             solidRegionDiffNo
             (
-                solidRegions[regionI],
+                solidRegions[i],
                 runTime,
-                rhos[regionI]*cps[regionI],
-                Ks[regionI]
+                rho*cp,
+                K
             ),
             DiNum
         );
diff --git a/src/thermophysicalModels/Allwmake b/src/thermophysicalModels/Allwmake
index 38f4d54b4767c2475ea80c205aa84b824ae0c098..a12ce3ea1979f11f1300be29f4774602d7bef68c 100755
--- a/src/thermophysicalModels/Allwmake
+++ b/src/thermophysicalModels/Allwmake
@@ -18,4 +18,8 @@ wmake libso radiation
 wmake libso barotropicCompressibilityModel
 wmake libso thermalPorousZone
 
+# Should be combined with solids&solidMixture
+wmake libso basicSolidThermo
+
+
 # ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/K b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/K
deleted file mode 100644
index 4d9246ebcba6047921fc1d1667673ad2527959a6..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/K
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volScalarField;
-    object      K;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-dimensions      [1 1 -3 -1 0 0 0];
-
-internalField   uniform 80;
-
-boundaryField
-{
-    ".*"
-    {
-        type            calculated;
-    }
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/cp b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/cp
deleted file mode 100644
index 853fd78eebbf45396294079fca5877efbc648d93..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/cp
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volScalarField;
-    object      cp;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-dimensions      [0 2 -2 -1 0 0 0];
-
-internalField   uniform 450;
-
-boundaryField
-{
-    ".*"
-    {
-        type            calculated;
-    }
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/rho b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/rho
deleted file mode 100644
index 8a0910516d8d950aa16d891044a7d8604acdc3cd..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/rho
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volScalarField;
-    object      rho;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-dimensions      [1 -3 0 0 0 0 0];
-
-internalField   uniform 8000;
-
-boundaryField
-{
-    ".*"
-    {
-        type            calculated;
-    }
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
index 8a25708db643118931960623480808d1988d5974..4a0f42fbe46df899d8abc61ff1f005e05e1f0b8f 100755
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
@@ -5,14 +5,8 @@ cd ${0%/*} || exit 1    # run from this directory
 # Source tutorial run functions
 . $WM_PROJECT_DIR/bin/tools/RunFunctions
 
-rm -rf constant/polyMesh/sets
-
 runApplication blockMesh
 runApplication setSet -batch makeCellSets.setSet
-
-rm -f constant/polyMesh/sets/*_old
-
-runApplication setsToZones -noFlipMap
 runApplication splitMeshRegions -cellZones -overwrite
 
 # remove fluid fields from solid regions (important for post-processing)
@@ -21,11 +15,11 @@ do
    rm -f 0*/$i/{mut,alphat,epsilon,k,p,p,U}
 done
 
-# remove solid fields from fluid regions (important for post-processing)
-for i in bottomAir topAir
-do
-   rm -f 0*/$i/{cp,K,rho}
-done
+## remove solid fields from fluid regions (important for post-processing)
+#for i in bottomAir topAir
+#do
+#   rm -f 0*/$i/{cp,K,rho}
+#done
 
 for i in bottomAir topAir heater leftSolid rightSolid
 do
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/solidThermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c27f08c9f16e4ab325456ceee37ca55ece67442e
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/solidThermophysicalProperties
@@ -0,0 +1,76 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.6                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      solidThermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType constSolidThermo;
+//thermoType interpolatedSolidThermo;
+//thermoType directionalSolidThermo;
+
+constSolidThermoCoeffs
+{
+    //- constant properties
+
+    rho rho [1 -3  0  0 0 0 0] 8000;
+    cp  cp  [0  2 -2 -1 0 0 0] 450;
+    K   K   [1  1 -3 -1 0 0 0] 80;
+
+    // N/A
+    Hf  Hf  [0  2 -2  0 0 0 0] 1;
+    emissivity  emissivity  [0 0 0 0 0 0 0] 1;
+}
+
+
+interpolatedSolidThermoCoeffs
+{
+    //- interpolated properties
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+    KValues             (80 40);
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+
+directionalSolidThermoCoeffs
+{
+    //- does interpolation and directional K in coordinate system.
+    //  Specify multiple values, one for each temperature. Properties are
+    //  interpolated according to the local temperature.
+
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+
+    KValues             ((40 40 40) (40 40 40));
+    
+    coordinateSystem
+    {
+        origin  (-0.000062 0.000019 0.000039);
+        coordinateRotation
+        {
+            type    axes;
+            e1      (1 0 0);
+            e3      (-3.1807824E-6 -0.99813473 0.0610505);
+        }
+    }
+
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/leftSolid/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/leftSolid/solidThermophysicalProperties
new file mode 120000
index 0000000000000000000000000000000000000000..1da00bc6bdb7d81d0cfa13ba04762efad0bdeaa8
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/leftSolid/solidThermophysicalProperties
@@ -0,0 +1 @@
+../heater/solidThermophysicalProperties
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
index 5bf895b5429d2189877727d9b1cef5907c47ae5d..73459cea0720d03956f9bd6cfb7f59f4d60a5d64 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/rightSolid/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/rightSolid/solidThermophysicalProperties
new file mode 120000
index 0000000000000000000000000000000000000000..1da00bc6bdb7d81d0cfa13ba04762efad0bdeaa8
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/rightSolid/solidThermophysicalProperties
@@ -0,0 +1 @@
+../heater/solidThermophysicalProperties
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/makeCellSets.setSet b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/makeCellSets.setSet
index 84c52f85b36fd8d8f90b07b24898b7b8857add26..7e0c2bd5227ae42537bc60e7e21977eec679862a 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/makeCellSets.setSet
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/makeCellSets.setSet
@@ -1,11 +1,16 @@
 cellSet heater new boxToCell (-0.01    0 -100 )(0.01 0.01 100)
 cellSet heater add boxToCell (-0.01 -100 -0.01)(0.01 0.01 0.01)
+cellZoneSet heater new setToCellZone heater
 cellSet leftSolid new boxToCell (-100 0 -100 )(-0.01 0.01 100)
+cellZoneSet leftSolid new setToCellZone leftSolid
 cellSet rightSolid new boxToCell (0.01 0 -100 )(100 0.01 100)
+cellZoneSet rightSolid new setToCellZone rightSolid
 cellSet topAir new boxToCell (-100 0.01 -100 )(100 100 100)
+cellZoneSet topAir new setToCellZone topAir
 cellSet bottomAir clear
 cellSet bottomAir add cellToCell heater
 cellSet bottomAir add cellToCell leftSolid
 cellSet bottomAir add cellToCell rightSolid
 cellSet bottomAir add cellToCell topAir
 cellSet bottomAir invert
+cellZoneSet bottomAir new setToCellZone bottomAir
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
index 949d7d15215bf02a8f0564d1119d4085074d7da5..d3fa852bd9b1551b755956930f2512f5f9edf34e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
@@ -55,9 +55,10 @@ dictionaryReplacement
 
             "bottomAir_to_.*"
             {
-                type            compressible::turbulentTemperatureCoupledBaffle;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                K               K;
+                K               basicThermo;
+                KName           none;
                 value           uniform 300;
             }
         }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict
index 20dac9a399e63a4566e7d7a742f80c90be20e7bb..ac0d8cdbd413c6ed53c52da3fa96d72064f8b7be 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict
@@ -45,9 +45,10 @@ dictionaryReplacement
             }
             "heater_to_.*"
             {
-                type            compressible::turbulentTemperatureCoupledBaffle;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                K               K;
+                K               solidThermo;
+                KName           none;
                 value           uniform 300;
             }
             minY
@@ -58,47 +59,6 @@ dictionaryReplacement
         }
     }
 
-    rho
-    {
-        internalField   uniform 8000;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            calculated;
-                value           uniform 8000;
-            }
-        }
-    }
-
-    K
-    {
-        internalField   uniform 80;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            zeroGradient;
-                value           uniform 80;
-            }
-        }
-    }
-
-    cp
-    {
-        internalField   uniform 450;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            zeroGradient;
-                value           uniform 450;
-            }
-        }
-    }
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict
index a9c6ea7f0bc50770cca4d323dac3fe2c3a518906..b3453c48f5cab4d7bed22941a8b328e802bfc255 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict
@@ -41,55 +41,14 @@ dictionaryReplacement
             }
             "leftSolid_to_.*"
             {
-                type            compressible::turbulentTemperatureCoupledBaffle;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                K               K;
+                K               solidThermo;
+                KName           none;
                 value           uniform 300;
             }
         }
     }
-
-    rho
-    {
-        internalField   uniform 8000;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            calculated;
-                value           uniform 8000;
-            }
-        }
-    }
-
-    K
-    {
-        internalField   uniform 80;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            zeroGradient;
-                value           uniform 80;
-            }
-        }
-    }
-
-    cp
-    {
-        internalField   uniform 450;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            zeroGradient;
-                value           uniform 450;
-            }
-        }
-    }
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict
index 5fa61a7f8f91ec33d06523ba4ce2bc3b64b80304..f6822937d8e34c5584d90420027b5cb5be1824d5 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict
@@ -41,55 +41,14 @@ dictionaryReplacement
             }
             "rightSolid_to_.*"
             {
-                type            compressible::turbulentTemperatureCoupledBaffle;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                K               K;
+                K               solidThermo;
+                KName           none;
                 value           uniform 300;
             }
         }
     }
-
-    rho
-    {
-        internalField   uniform 8000;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            calculated;
-                value           uniform 8000;
-            }
-        }
-    }
-
-    K
-    {
-        internalField   uniform 80;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            zeroGradient;
-                value           uniform 80;
-            }
-        }
-    }
-
-    cp
-    {
-        internalField   uniform 450;
-
-        boundaryField
-        {
-            ".*"
-            {
-                type            zeroGradient;
-                value           uniform 450;
-            }
-        }
-    }
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
index 1934047abf2eed0e9ba378be67eb778c2634d50e..5dc9ca91e63721e3b94b8179783b8f3d6d43897c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
@@ -66,9 +66,10 @@ dictionaryReplacement
 
             "topAir_to_.*"
             {
-                type            compressible::turbulentTemperatureCoupledBaffle;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                K               K;
+                K               basicThermo;
+                KName           none;
                 value           uniform 300;
             }
         }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/K b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/K
deleted file mode 100644
index 4d9246ebcba6047921fc1d1667673ad2527959a6..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/K
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volScalarField;
-    object      K;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-dimensions      [1 1 -3 -1 0 0 0];
-
-internalField   uniform 80;
-
-boundaryField
-{
-    ".*"
-    {
-        type            calculated;
-    }
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/cp b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/cp
deleted file mode 100644
index 853fd78eebbf45396294079fca5877efbc648d93..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/cp
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volScalarField;
-    object      cp;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-dimensions      [0 2 -2 -1 0 0 0];
-
-internalField   uniform 450;
-
-boundaryField
-{
-    ".*"
-    {
-        type            calculated;
-    }
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/rho b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/rho
deleted file mode 100644
index 8a0910516d8d950aa16d891044a7d8604acdc3cd..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/rho
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volScalarField;
-    object      rho;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-dimensions      [1 -3 0 0 0 0 0];
-
-internalField   uniform 8000;
-
-boundaryField
-{
-    ".*"
-    {
-        type            calculated;
-    }
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun
index d5e265222269f536aa06f4d0a7b83d82a9920163..1bb6bd8b53aaedddaeb174778b8503936e45fdb4 100755
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun
@@ -9,19 +9,19 @@ rm -rf constant/polyMesh/sets
 
 runApplication blockMesh
 runApplication snappyHexMesh -overwrite
-runApplication splitMeshRegions -cellZones
+runApplication splitMeshRegions -cellZones -overwrite
 
 # remove fluid fields from solid regions (important for post-processing)
 for i in heater leftSolid rightSolid
 do
-   rm -f 0*/$i/{mut,alphat,epsilon,k,p,p,U}
+   rm -f 0*/$i/{mut,alphat,epsilon,k,p,U}
 done
 
-# remove solid fields from fluid regions (important for post-processing)
-for i in bottomAir topAir
-do
-   rm -f 0*/$i/{cp,K,rho}
-done
+# No solid fields to remove from fluid regions (important for post-processing)
+#for i in bottomAir topAir
+#do
+#   rm -f 0*/$i/{cp,K,rho}
+#done
 
 for i in bottomAir topAir heater leftSolid rightSolid
 do
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/RASProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/RASProperties
index 9f5e8cf39b7e2b0ca1273816307a27f767a24f34..2e7d3413fc149e0ab287f79da33b11fd8d6e24a0 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/RASProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/bottomAir/RASProperties
@@ -14,9 +14,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-RASModel kEpsilon;
+RASModel laminar;
 
-turbulence      off;
+turbulence      on;
 
 printCoeffs     on;
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/solidThermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c27f08c9f16e4ab325456ceee37ca55ece67442e
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/solidThermophysicalProperties
@@ -0,0 +1,76 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.6                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      solidThermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType constSolidThermo;
+//thermoType interpolatedSolidThermo;
+//thermoType directionalSolidThermo;
+
+constSolidThermoCoeffs
+{
+    //- constant properties
+
+    rho rho [1 -3  0  0 0 0 0] 8000;
+    cp  cp  [0  2 -2 -1 0 0 0] 450;
+    K   K   [1  1 -3 -1 0 0 0] 80;
+
+    // N/A
+    Hf  Hf  [0  2 -2  0 0 0 0] 1;
+    emissivity  emissivity  [0 0 0 0 0 0 0] 1;
+}
+
+
+interpolatedSolidThermoCoeffs
+{
+    //- interpolated properties
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+    KValues             (80 40);
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+
+directionalSolidThermoCoeffs
+{
+    //- does interpolation and directional K in coordinate system.
+    //  Specify multiple values, one for each temperature. Properties are
+    //  interpolated according to the local temperature.
+
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+
+    KValues             ((40 40 40) (40 40 40));
+    
+    coordinateSystem
+    {
+        origin  (-0.000062 0.000019 0.000039);
+        coordinateRotation
+        {
+            type    axes;
+            e1      (1 0 0);
+            e3      (-3.1807824E-6 -0.99813473 0.0610505);
+        }
+    }
+
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/leftSolid/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/leftSolid/solidThermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c27f08c9f16e4ab325456ceee37ca55ece67442e
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/leftSolid/solidThermophysicalProperties
@@ -0,0 +1,76 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.6                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      solidThermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType constSolidThermo;
+//thermoType interpolatedSolidThermo;
+//thermoType directionalSolidThermo;
+
+constSolidThermoCoeffs
+{
+    //- constant properties
+
+    rho rho [1 -3  0  0 0 0 0] 8000;
+    cp  cp  [0  2 -2 -1 0 0 0] 450;
+    K   K   [1  1 -3 -1 0 0 0] 80;
+
+    // N/A
+    Hf  Hf  [0  2 -2  0 0 0 0] 1;
+    emissivity  emissivity  [0 0 0 0 0 0 0] 1;
+}
+
+
+interpolatedSolidThermoCoeffs
+{
+    //- interpolated properties
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+    KValues             (80 40);
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+
+directionalSolidThermoCoeffs
+{
+    //- does interpolation and directional K in coordinate system.
+    //  Specify multiple values, one for each temperature. Properties are
+    //  interpolated according to the local temperature.
+
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+
+    KValues             ((40 40 40) (40 40 40));
+    
+    coordinateSystem
+    {
+        origin  (-0.000062 0.000019 0.000039);
+        coordinateRotation
+        {
+            type    axes;
+            e1      (1 0 0);
+            e3      (-3.1807824E-6 -0.99813473 0.0610505);
+        }
+    }
+
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/blockMeshDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/blockMeshDict
index c9a3d6ffbd80e27520219568562e91bdd49db579..51e6fe0e74daae29c929ccd40188c0a86c808773 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/blockMeshDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/blockMeshDict
@@ -16,7 +16,7 @@ FoamFile
 
 convertToMeters 1;
 
-vertices        
+vertices
 (
     (-0.1 -0.04  -0.05)
     ( 0.1 -0.04  -0.05)
@@ -28,18 +28,18 @@ vertices
     (-0.1  0.04   0.05)
 );
 
-blocks          
+blocks
 (
     hex (0 1 2 3 4 5 6 7) (30 10 10) simpleGrading (1 1 1)
 );
 
-edges           
+edges
 (
 );
 
-patches         
+patches
 (
-    wall maxY 
+    wall maxY
     (
         (3 7 6 2)
     )
@@ -65,7 +65,7 @@ patches
     )
 );
 
-mergePatchPairs 
+mergePatchPairs
 (
 );
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/boundary b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/boundary
index 5a51a31831906ebf7008e7bd32c61cc023b56c99..591514a953ad0e084033a52d980bc76e9760f15e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/boundary
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/rightSolid/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/rightSolid/solidThermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c27f08c9f16e4ab325456ceee37ca55ece67442e
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/rightSolid/solidThermophysicalProperties
@@ -0,0 +1,76 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.6                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      solidThermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType constSolidThermo;
+//thermoType interpolatedSolidThermo;
+//thermoType directionalSolidThermo;
+
+constSolidThermoCoeffs
+{
+    //- constant properties
+
+    rho rho [1 -3  0  0 0 0 0] 8000;
+    cp  cp  [0  2 -2 -1 0 0 0] 450;
+    K   K   [1  1 -3 -1 0 0 0] 80;
+
+    // N/A
+    Hf  Hf  [0  2 -2  0 0 0 0] 1;
+    emissivity  emissivity  [0 0 0 0 0 0 0] 1;
+}
+
+
+interpolatedSolidThermoCoeffs
+{
+    //- interpolated properties
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+    KValues             (80 40);
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+
+directionalSolidThermoCoeffs
+{
+    //- does interpolation and directional K in coordinate system.
+    //  Specify multiple values, one for each temperature. Properties are
+    //  interpolated according to the local temperature.
+
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+
+    KValues             ((40 40 40) (40 40 40));
+    
+    coordinateSystem
+    {
+        origin  (-0.000062 0.000019 0.000039);
+        coordinateRotation
+        {
+            type    axes;
+            e1      (1 0 0);
+            e3      (-3.1807824E-6 -0.99813473 0.0610505);
+        }
+    }
+
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/RASProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/RASProperties
index 9f5e8cf39b7e2b0ca1273816307a27f767a24f34..09a9a55851d05da7dc6c64a6e800b9f5d0fe7a0e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/RASProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -14,9 +14,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-RASModel kEpsilon;
+RASModel laminar;
 
-turbulence      off;
+turbulence      on;
 
 printCoeffs     on;
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/thermophysicalProperties
index fcb0e7a6a93592cc8e413c7b8a99834c1c90f686..ae93c0c12f8dd59a0c0182c80fc6f8152fe9b049 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/thermophysicalProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/turbulenceProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/turbulenceProperties
index a8317a372fc1afdfbb4f657f5bf11948a7314e48..e63bbc50815e89dfc7ef93352a3228a18620220d 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/turbulenceProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/topAir/turbulenceProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/makeCellSets.setSet b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/makeCellSets.setSet
deleted file mode 100644
index 84c52f85b36fd8d8f90b07b24898b7b8857add26..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/makeCellSets.setSet
+++ /dev/null
@@ -1,11 +0,0 @@
-cellSet heater new boxToCell (-0.01    0 -100 )(0.01 0.01 100)
-cellSet heater add boxToCell (-0.01 -100 -0.01)(0.01 0.01 0.01)
-cellSet leftSolid new boxToCell (-100 0 -100 )(-0.01 0.01 100)
-cellSet rightSolid new boxToCell (0.01 0 -100 )(100 0.01 100)
-cellSet topAir new boxToCell (-100 0.01 -100 )(100 100 100)
-cellSet bottomAir clear
-cellSet bottomAir add cellToCell heater
-cellSet bottomAir add cellToCell leftSolid
-cellSet bottomAir add cellToCell rightSolid
-cellSet bottomAir add cellToCell topAir
-cellSet bottomAir invert
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict
index 4420a87f360e90ad6ba1dd434c57454373626980..fea74b83155dd40c170c85ee08da875df05cdc97 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict
@@ -16,52 +16,25 @@ FoamFile
 
 dictionaryReplacement
 {
-    U
+    boundary
     {
-        internalField   uniform (0 0 0);
-        boundaryField
+        minX
         {
-            minX
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
-            maxX
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
-
-            minY
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
-
-            minZ
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
-
-            maxZ
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
+            type            wall;
+        }
+        maxX
+        {
+            type            wall;
+        }
+    }
 
-            bottomAir_to_leftSolid
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
+    U
+    {
+        internalField   uniform (0.01 0 0);
 
-            }
-            bottomAir_to_heater
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
-            bottomAir_to_rightSolid
+        boundaryField
+        {
+            ".*"
             {
                 type            fixedValue;
                 value           uniform (0 0 0);
@@ -71,47 +44,21 @@ dictionaryReplacement
 
     T
     {
+        internalField   uniform 300;
+
         boundaryField
         {
-            minX
-            {
-                type            zeroGradient;
-            }
-            maxX
-            {
-                type            zeroGradient;
-            }
-            minY
-            {
-                type            zeroGradient;
-            }
-            minZ
+            ".*"
             {
                 type            zeroGradient;
             }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            bottomAir_to_leftSolid
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            bottomAir_to_heater
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            bottomAir_to_rightSolid
+
+            "bottomAir_to_.*"
             {
-                type            compressible::turbulentTemperatureCoupledBaffle;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                K               K;
+                K               basicThermo;
+                KName           none;
                 value           uniform 300;
             }
         }
@@ -125,47 +72,9 @@ dictionaryReplacement
 
         boundaryField
         {
-            minX
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            maxX
+            ".*"
             {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-
-            minY
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-
-            minZ
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-
-            bottomAir_to_leftSolid
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            bottomAir_to_heater
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            bottomAir_to_rightSolid
-            {
-                type            zeroGradient;
+                type            compressible::epsilonWallFunction;
                 value           uniform 0.01;
             }
         }
@@ -174,49 +83,12 @@ dictionaryReplacement
     k
     {
         internalField   uniform 0.1;
+
         boundaryField
         {
-            minX
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-            maxX
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-
-            minY
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-
-            minZ
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-
-            bottomAir_to_leftSolid
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-            bottomAir_to_heater
+            ".*"
             {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-            bottomAir_to_rightSolid
-            {
-                type            zeroGradient;
+                type            compressible::kqRWallFunction;
                 value           uniform 0.1;
             }
         }
@@ -224,53 +96,17 @@ dictionaryReplacement
 
     p
     {
-        internalField   uniform 1E5;
+        internalField   uniform 100000;
 
         boundaryField
         {
-            minX
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            maxX
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            minY
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            minZ
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            maxZ
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            bottomAir_to_leftSolid
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            bottomAir_to_heater
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            bottomAir_to_rightSolid
+            ".*"
             {
                 type            buoyantPressure;
                 value           1e5;
             }
         }
     }
-
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/controlDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/controlDict
index 2f3a0001ef6d7821fc97e0879ba365d2b4b5588e..cc915cf3252154ac6e40211e133a514e78e56ffe 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/controlDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/controlDict
@@ -17,7 +17,7 @@ FoamFile
 
 libs            ("libOpenFOAM.so" "libcompressibleTurbulenceModel.so" "libcompressibleRASModels.so");
 
-application     snappyHexMesh;
+application     chtMultiRegionFoam;
 
 startFrom       latestTime;
 
@@ -30,9 +30,8 @@ endTime         200;
 deltaT          0.001;
 
 writeControl    adjustableRunTime;
+
 writeInterval   50;
-//writeControl    timeStep;
-//writeInterval   100;
 
 purgeWrite      0;
 
@@ -50,6 +49,8 @@ runTimeModifiable true;
 
 maxCo           0.3;
 
+maxDi          10.0;
+
 adjustTimeStep  yes;
 
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
index d8deb33bf49e426cdd8254c5dcc8d22dbe34e6a4..14d2b1bfdd56ceed0e21db6796cab3e8268d926d 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
@@ -22,8 +22,8 @@ numberOfSubdomains  4;
 //- Keep owner and neighbour on same processor for faces in zones:
 // preserveFaceZones (heater solid1 solid3);
 
-method          scotch;
-// method          hierarchical;
+// method          scotch;
+method          hierarchical;
 // method          simple;
 // method          metis;
 // method          manual;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/changeDictionaryDict
index 282c8e4ca9dcecc00e3a4113734d3af7872286f4..ac0d8cdbd413c6ed53c52da3fa96d72064f8b7be 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/changeDictionaryDict
@@ -16,169 +16,49 @@ FoamFile
 
 dictionaryReplacement
 {
-    T
+    boundary
     {
-        internalField   uniform 300;
-
-        boundaryField
+        minY
         {
-            minY
-            {
-                type            fixedValue;
-                value           uniform 500;
-            }
-
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-
-            heater_to_bottomAir
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-
-            }
-            heater_to_leftSolid
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            heater_to_rightSolid
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            heater_to_topAir
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
+            type            patch;
         }
-    }
-
-    rho
-    {
-        internalField   uniform 8000;
-
-        boundaryField
+        minZ
         {
-            minY
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            heater_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            heater_to_leftSolid
-            {
-                type            zeroGradient;
-            }
-            heater_to_rightSolid
-            {
-                type            zeroGradient;
-            }
-            heater_to_topAir
-            {
-                type            zeroGradient;
-            }
+            type            patch;
         }
-    }
-
-    K
-    {
-        internalField   uniform 80;
-
-        boundaryField
+        maxZ
         {
-            minY
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            heater_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            heater_to_leftSolid
-            {
-                type            zeroGradient;
-            }
-            heater_to_rightSolid
-            {
-                type            zeroGradient;
-            }
-            heater_to_topAir
-            {
-                type            zeroGradient;
-            }
+            type            patch;
         }
     }
 
-    cp
+    T
     {
-        internalField   uniform 450;
+        internalField   uniform 300;
 
         boundaryField
         {
-            minY
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            heater_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            heater_to_leftSolid
+            ".*"
             {
                 type            zeroGradient;
+                value           uniform 300;
             }
-            heater_to_rightSolid
+            "heater_to_.*"
             {
-                type            zeroGradient;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               solidThermo;
+                KName           none;
+                value           uniform 300;
             }
-            heater_to_topAir
+            minY
             {
-                type            zeroGradient;
+                type            fixedValue;
+                value           uniform 500;
             }
         }
     }
+
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/changeDictionaryDict
index 4fc8984feca2c516b6faeb60036d1c0a731eb693..b3453c48f5cab4d7bed22941a8b328e802bfc255 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/changeDictionaryDict
@@ -16,144 +16,36 @@ FoamFile
 
 dictionaryReplacement
 {
-    T
-    {
-        internalField   uniform 300;
-
-        boundaryField
-        {
-            minX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_bottomAir
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-
-            }
-            leftSolid_to_heater
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            leftSolid_to_topAir
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-        }
-    }
-
-    rho
+    boundary
     {
-        internalField   uniform 8000;
-
-        boundaryField
+        minZ
         {
-            minX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_heater
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_topAir
-            {
-                type            zeroGradient;
-            }
+            type            patch;
         }
-    }
-
-    K
-    {
-        internalField   uniform 80;
-
-        boundaryField
+        maxZ
         {
-            minX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_heater
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_topAir
-            {
-                type            zeroGradient;
-            }
+            type            patch;
         }
     }
 
-    cp
+    T
     {
-        internalField   uniform 450;
+        internalField   uniform 300;
 
         boundaryField
         {
-            minX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            leftSolid_to_heater
+            ".*"
             {
                 type            zeroGradient;
+                value           uniform 300;
             }
-            leftSolid_to_topAir
+            "leftSolid_to_.*"
             {
-                type            zeroGradient;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               solidThermo;
+                KName           none;
+                value           uniform 300;
             }
         }
     }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/changeDictionaryDict
index dc4fe7b846cc93df03406ac44ef7968959ee6956..f6822937d8e34c5584d90420027b5cb5be1824d5 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/changeDictionaryDict
@@ -16,143 +16,36 @@ FoamFile
 
 dictionaryReplacement
 {
-    T
+    boundary
     {
-        internalField   uniform 300;
-
-        boundaryField
+        minZ
         {
-            maxX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_heater
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            rightSolid_to_bottomAir
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            rightSolid_to_topAir
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
+            type            patch;
         }
-    }
-
-    rho
-    {
-        internalField   uniform 8000;
-
-        boundaryField
+        maxZ
         {
-            maxX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_heater
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_topAir
-            {
-                type            zeroGradient;
-            }
+            type            patch;
         }
     }
 
-    K
-    {
-        internalField   uniform 80;
-
-        boundaryField
-        {
-            maxX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_heater
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_topAir
-            {
-                type            zeroGradient;
-            }
-        }
-    }
-
-    cp
+    T
     {
-        internalField   uniform 450;
+        internalField   uniform 300;
 
         boundaryField
         {
-            maxX
-            {
-                type            zeroGradient;
-            }
-            minZ
-            {
-                type            zeroGradient;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_bottomAir
-            {
-                type            zeroGradient;
-            }
-            rightSolid_to_heater
+            ".*"
             {
                 type            zeroGradient;
+                value           uniform 300;
             }
-            rightSolid_to_topAir
+            "rightSolid_to_.*"
             {
-                type            zeroGradient;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               solidThermo;
+                KName           none;
+                value           uniform 300;
             }
         }
     }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict
index a00b3414327937f752e7cb02b11c5563e30089e4..5dc9ca91e63721e3b94b8179783b8f3d6d43897c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict
@@ -18,52 +18,25 @@ dictionaryReplacement
 {
     U
     {
-        internalField   uniform ( 0.01 0 0 );
+        internalField   uniform (0.01 0 0);
+
         boundaryField
         {
-            minX
-            {
-                type            fixedValue;
-                value           uniform (0.01 0 0);
-            }
-            maxX
-            {
-                type            inletOutlet;
-                inletValue      uniform (0 0 0);
-            }
-
-            maxY
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
-
-            minZ
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-            }
-            maxZ
+            ".*"
             {
                 type            fixedValue;
                 value           uniform (0 0 0);
             }
-
-            topAir_to_leftSolid
-            {
-                type            fixedValue;
-                value           uniform (0 0 0);
-
-            }
-            topAir_to_heater
+            minX
             {
                 type            fixedValue;
-                value           uniform (0 0 0);
+                value           uniform ( 0.01 0 0 );
             }
-            topAir_to_rightSolid
+            maxX
             {
-                type            fixedValue;
-                value           uniform (0 0 0);
+                type            inletOutlet;
+                inletValue      uniform ( 0 0 0 );
+                value           uniform ( 0 0 0 );
             }
         }
     }
@@ -74,11 +47,11 @@ dictionaryReplacement
 
         boundaryField
         {
-            maxY
+            ".*"
             {
-                type            fixedValue;
-                value           uniform 300;
+                type            zeroGradient;
             }
+
             minX
             {
                 type            fixedValue;
@@ -86,39 +59,17 @@ dictionaryReplacement
             }
             maxX
             {
-                type            fixedValue;
-                value           uniform 300;
-            }
-            minZ
-            {
-                type            fixedValue;
-                value           uniform 300;
-            }
-            maxZ
-            {
-                type            fixedValue;
+                type            inletOutlet;
+                inletValue      uniform 300;
                 value           uniform 300;
             }
-            topAir_to_leftSolid
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
 
-            }
-            topAir_to_heater
-            {
-                type            compressible::turbulentTemperatureCoupledBaffle;
-                neighbourFieldName T;
-                K               K;
-                value           uniform 300;
-            }
-            topAir_to_rightSolid
+            "topAir_to_.*"
             {
-                type            compressible::turbulentTemperatureCoupledBaffle;
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                K               K;
+                K               basicThermo;
+                KName           none;
                 value           uniform 300;
             }
         }
@@ -126,55 +77,25 @@ dictionaryReplacement
 
     epsilon
     {
-        // Set the value on all bc to non-zero. Not used in simulation
-        // since zeroGradient; only used in initialisation.
+        internalField   uniform 0.01;
+
         boundaryField
         {
-            minX
+            ".*"
             {
-                type            fixedValue;
-                value           uniform 0.01;
-            }
-            maxX
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-
-            minY
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            maxY
-            {
-                type            zeroGradient;
+                type            compressible::epsilonWallFunction;
                 value           uniform 0.01;
             }
 
-            minZ
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            topAir_to_leftSolid
-            {
-                type            zeroGradient;
-                value           uniform 0.01;
-            }
-            topAir_to_heater
+            minX
             {
-                type            zeroGradient;
+                type            fixedValue;
                 value           uniform 0.01;
             }
-            topAir_to_rightSolid
+            maxX
             {
-                type            zeroGradient;
+                type            inletOutlet;
+                inletValue      uniform 0.01;
                 value           uniform 0.01;
             }
         }
@@ -183,50 +104,24 @@ dictionaryReplacement
     k
     {
         internalField   uniform 0.1;
+
         boundaryField
         {
-            minX
-            {
-                type            fixedValue;
-                value           uniform 0.1;
-            }
-
-            maxX
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-
-            maxY
+            ".*"
             {
-                type            zeroGradient;
+                type            compressible::kqRWallFunction;
                 value           uniform 0.1;
             }
 
-            minZ
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-            maxZ
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-
-            topAir_to_leftSolid
-            {
-                type            zeroGradient;
-                value           uniform 0.1;
-            }
-            topAir_to_heater
+            minX
             {
-                type            zeroGradient;
+                type            fixedValue;
                 value           uniform 0.1;
             }
-            topAir_to_rightSolid
+            maxX
             {
-                type            zeroGradient;
+                type            inletOutlet;
+                inletValue      uniform 0.1;
                 value           uniform 0.1;
             }
         }
@@ -234,59 +129,23 @@ dictionaryReplacement
 
     p
     {
-        internalField   uniform 1E5;
+        internalField   uniform 100000;
 
         boundaryField
         {
-            minX
+            ".*"
             {
                 type            buoyantPressure;
                 value           1e5;
             }
+
             maxX
             {
                 type            waveTransmissive;
-                //field           p;
-                phi             phi;
-                rho             rho;
-                psi             psi;
-                gamma           1.4;    // cp/cv
-                fieldInf        1e5;
-                lInf            0.40;   // double length of domain
-                value           uniform 1e5;
-            }
-
-            maxY
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-
-            minZ
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            maxZ
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-
-            topAir_to_leftSolid
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            topAir_to_heater
-            {
-                type            buoyantPressure;
-                value           1e5;
-            }
-            topAir_to_rightSolid
-            {
-                type            buoyantPressure;
-                value           1e5;
+                gamma           1.4;
+                fieldInf        100000;
+                lInf            0.4;
+                value           uniform 100000;
             }
         }
     }