diff --git a/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C b/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C
index fa9e048bad10e6975aa27711faafa730360921cc..4a6b297c1d8dff74a500801d683f02a1b08356c5 100644
--- a/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C
+++ b/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C
@@ -50,27 +50,23 @@ License
 
 namespace Foam
 {
-    typedef coalCloud::cloudType coalCloud_R;
-    typedef coalCloud_R::cloudType coalCloud_T;
-    typedef coalCloud_T::cloudType coalCloud_K;
-
     // Kinematic sub-models
-    makeThermoParcelForces(coalCloud_K);
-    makeParcelDispersionModels(coalCloud_K);
-    makeReactingMultiphaseParcelInjectionModels(coalCloud_K);
-    makeParcelPatchInteractionModels(coalCloud_K);
-    makeParcelPostProcessingModels(coalCloud_K);
+    makeThermoParcelForces(coalCloud);
+    makeParcelDispersionModels(coalCloud);
+    makeReactingMultiphaseParcelInjectionModels(coalCloud);
+    makeParcelPatchInteractionModels(coalCloud);
+    makeParcelPostProcessingModels(coalCloud);
 
     // Thermo sub-models
-    makeParcelHeatTransferModels(coalCloud_T);
+    makeParcelHeatTransferModels(coalCloud);
 
     // Reacting sub-models
-    makeReactingMultiphaseParcelCompositionModels(coalCloud_R);
-    makeReactingParcelPhaseChangeModels(coalCloud_R);
+    makeReactingMultiphaseParcelCompositionModels(coalCloud);
+    makeReactingParcelPhaseChangeModels(coalCloud);
 
     // Reacting multiphase sub-models
     makeReactingMultiphaseParcelDevolatilisationModels(coalCloud);
-    makeReactingParcelSurfaceFilmModels(coalCloud_K);
+    makeReactingParcelSurfaceFilmModels(coalCloud);
     makeCoalParcelSurfaceReactionModels(coalCloud);
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
index 3c61ef64255cc8bd5adb7dc5a502d478ac5a15f3..51cf60820fbce98a4f451a1fb9044f9bd279ccce 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
@@ -39,16 +39,13 @@ License
 namespace Foam
 {
     // Kinematic sub-models
-    typedef basicKinematicCollidingCloud::cloudType
-        basicKinematicCollidingCloud_K;
-
-    makeParcelForces(basicKinematicCollidingCloud_K);
-    makeParcelDispersionModels(basicKinematicCollidingCloud_K);
-    makeParcelInjectionModels(basicKinematicCollidingCloud_K);
+    makeParcelForces(basicKinematicCollidingCloud);
+    makeParcelDispersionModels(basicKinematicCollidingCloud);
+    makeParcelInjectionModels(basicKinematicCollidingCloud);
     makeParcelCollisionModels(basicKinematicCollidingCloud);
-    makeParcelPatchInteractionModels(basicKinematicCollidingCloud_K);
-    makeParcelPostProcessingModels(basicKinematicCollidingCloud_K);
-    makeParcelSurfaceFilmModels(basicKinematicCollidingCloud_K);
+    makeParcelPatchInteractionModels(basicKinematicCollidingCloud);
+    makeParcelPostProcessingModels(basicKinematicCollidingCloud);
+    makeParcelSurfaceFilmModels(basicKinematicCollidingCloud);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
index 53e1374424a1d388b8c441b69fb2310988c83d30..b1185d25d76828cef19872f84df7940f4869094e 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
@@ -48,29 +48,22 @@ License
 
 namespace Foam
 {
-    typedef basicReactingMultiphaseCloud::cloudType
-        basicReactingMultiphaseCloud_R;
-    typedef basicReactingMultiphaseCloud_R::cloudType
-        basicReactingMultiphaseCloud_T;
-    typedef basicReactingMultiphaseCloud_T::cloudType
-        basicReactingMultiphaseCloud_K;
-
     // Kinematic sub-models
-    makeThermoParcelForces(basicReactingMultiphaseCloud_K);
-    makeParcelDispersionModels(basicReactingMultiphaseCloud_K);
-    makeReactingMultiphaseParcelInjectionModels(basicReactingMultiphaseCloud_K);
-    makeParcelPatchInteractionModels(basicReactingMultiphaseCloud_K);
-    makeParcelPostProcessingModels(basicReactingMultiphaseCloud_K);
+    makeThermoParcelForces(basicReactingMultiphaseCloud);
+    makeParcelDispersionModels(basicReactingMultiphaseCloud);
+    makeReactingMultiphaseParcelInjectionModels(basicReactingMultiphaseCloud);
+    makeParcelPatchInteractionModels(basicReactingMultiphaseCloud);
+    makeParcelPostProcessingModels(basicReactingMultiphaseCloud);
 
     // Thermo sub-models
-    makeParcelHeatTransferModels(basicReactingMultiphaseCloud_T);
+    makeParcelHeatTransferModels(basicReactingMultiphaseCloud);
 
     // Reacting sub-models
     makeReactingMultiphaseParcelCompositionModels
     (
-        basicReactingMultiphaseCloud_R
+        basicReactingMultiphaseCloud
     );
-    makeReactingParcelPhaseChangeModels(basicReactingMultiphaseCloud_R);
+    makeReactingParcelPhaseChangeModels(basicReactingMultiphaseCloud);
 
     // Reacting multiphase sub-models
     makeReactingMultiphaseParcelDevolatilisationModels
@@ -79,7 +72,7 @@ namespace Foam
     );
     makeReactingParcelSurfaceFilmModels
     (
-        basicReactingMultiphaseCloud_K
+        basicReactingMultiphaseCloud
     );
     makeReactingMultiphaseParcelSurfaceReactionModels
     (
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C
index 4e96d838382318e73e5f95c7e73ecbdda14a2476..47b2fac7ecd495878e1fc15a4166b7e0c0b7404e 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C
@@ -44,23 +44,23 @@ License
 
 namespace Foam
 {
-    typedef basicReactingCloud::cloudType basicReactingCloud_T;
-    typedef basicReactingCloud_T::cloudType basicReactingCloud_K;
+    typedef basicReactingCloud::thermoCloudType thermoCloudType2;
+    typedef basicReactingCloud::kinematicCloudType kinematicCloudType2;
 
     // Kinematic sub-models
-    makeThermoParcelForces(basicReactingCloud_K);
-    makeParcelDispersionModels(basicReactingCloud_K);
-    makeReactingParcelInjectionModels(basicReactingCloud_K);
-    makeParcelPatchInteractionModels(basicReactingCloud_K);
-    makeParcelPostProcessingModels(basicReactingCloud_K);
+    makeThermoParcelForces(basicReactingCloud);
+    makeParcelDispersionModels(basicReactingCloud);
+    makeReactingParcelInjectionModels(basicReactingCloud);
+    makeParcelPatchInteractionModels(basicReactingCloud);
+    makeParcelPostProcessingModels(basicReactingCloud);
 
     // Thermo sub-models
-    makeParcelHeatTransferModels(basicReactingCloud_T);
+    makeParcelHeatTransferModels(basicReactingCloud);
 
     // Reacting sub-models
     makeReactingParcelCompositionModels(basicReactingCloud);
     makeReactingParcelPhaseChangeModels(basicReactingCloud);
-    makeReactingParcelSurfaceFilmModels(basicReactingCloud_K);
+    makeReactingParcelSurfaceFilmModels(basicReactingCloud);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
index a7069c7229decdd9d620ffc0f9373bc5dd1f2179..4a55932786f9e2479bd15ae97253cd20dcaf36d0 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
@@ -41,18 +41,15 @@ License
 namespace Foam
 {
     // Kinematic sub-models
-    typedef basicThermoCloud::cloudType basicThermoCloud_K;
-
-    // Kinematic sub-models
-    makeThermoParcelForces(basicThermoCloud_K);
-    makeParcelDispersionModels(basicThermoCloud_K);
-    makeParcelInjectionModels(basicThermoCloud_K);
-    makeParcelPatchInteractionModels(basicThermoCloud_K);
-    makeParcelPostProcessingModels(basicThermoCloud_K);
+    makeThermoParcelForces(basicThermoCloud);
+    makeParcelDispersionModels(basicThermoCloud);
+    makeParcelInjectionModels(basicThermoCloud);
+    makeParcelPatchInteractionModels(basicThermoCloud);
+    makeParcelPostProcessingModels(basicThermoCloud);
 
     // Thermo sub-models
     makeParcelHeatTransferModels(basicThermoCloud);
-    makeParcelSurfaceFilmModels(basicThermoCloud_K);
+    makeParcelSurfaceFilmModels(basicThermoCloud);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
index 61fc12f8eae47070bf5c32fcc988a7f596132c9e..ed22e80b487e9586ca64562a099c327538368f24 100644
--- a/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
@@ -38,7 +38,12 @@ License
                                                                               \
     makeDispersionModel(CloudType);                                           \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(DispersionRASModel<CloudType>, 0);    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DispersionRASModel<kinematicCloudType>,                               \
+        0                                                                     \
+    );                                                                        \
                                                                               \
     makeDispersionModelType(NoDispersion, CloudType);                         \
     makeDispersionModelType(GradientDispersionRAS, CloudType);                \
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
index 1d8ef2e66757c844ca71385b6836e52c2e50388d..caf5473ec012f72561de39c672b29a6b11d611c1 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
@@ -141,18 +141,27 @@ public:
 
 #define makeCollisionModel(CloudType)                                         \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(CollisionModel<CloudType>, 0);        \
-                                                                              \
-    defineTemplateRunTimeSelectionTable(CollisionModel<CloudType>, dictionary);
+    typedef CloudType::collidingCloudType collidingCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        CollisionModel<collidingCloudType>,                                   \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        CollisionModel<collidingCloudType>,                                   \
+        dictionary                                                            \
+    );
 
 
 #define makeCollisionModelType(SS, CloudType)                                 \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::collidingCloudType collidingCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<collidingCloudType>, 0);           \
                                                                               \
-    CollisionModel<CloudType>::                                               \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    CollisionModel<collidingCloudType>::                                      \
+        adddictionaryConstructorToTable<SS<collidingCloudType> >              \
+            add##SS##CloudType##collidingCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
index 63ad6f094582ca58a24425f7cbd5a8316904a2a2..3d332ddd973d676d26b49b296a5f49bda3034c79 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
@@ -132,22 +132,23 @@ public:
 
 #define makeDispersionModel(CloudType)                                        \
                                                                               \
-    defineTemplateTypeNameAndDebug(DispersionModel<CloudType>, 0);            \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineTemplateTypeNameAndDebug(DispersionModel<kinematicCloudType>, 0);   \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        DispersionModel<CloudType>,                                           \
+        DispersionModel<kinematicCloudType>,                                  \
         dictionary                                                            \
     );
 
 
 #define makeDispersionModelType(SS, CloudType)                                \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    DispersionModel<CloudType>::                                              \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    DispersionModel<kinematicCloudType>::                                     \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
index edd4d726f617e8d68f04c75e49d5e0f9eb9c874a..827dd1347bcb3265299e342dc88072549bef5b7d 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
@@ -328,17 +328,27 @@ public:
 
 #define makeInjectionModel(CloudType)                                         \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(InjectionModel<CloudType>, 0);        \
-                                                                              \
-    defineTemplateRunTimeSelectionTable(InjectionModel<CloudType>, dictionary);
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        InjectionModel<kinematicCloudType>,                                   \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        InjectionModel<kinematicCloudType>,                                   \
+        dictionary                                                            \
+    );
 
 
 #define makeInjectionModelType(SS, CloudType)                                 \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    InjectionModel<CloudType>::adddictionaryConstructorToTable<SS<CloudType> >\
-        add##SS##CloudType##ConstructorToTable_;
+    InjectionModel<kinematicCloudType>::                                      \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+        add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H
index 79653d42565f9243ecc957062f8707be50f81a69..7664723dd1956f03a40e8e3197f3ca92e194ca1c 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H
@@ -188,16 +188,23 @@ public:
 
 #define makeParticleForceModel(CloudType)                                     \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(ParticleForce<CloudType>, 0);         \
-    defineTemplateRunTimeSelectionTable(ParticleForce<CloudType>, dictionary);
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(ParticleForce<kinematicCloudType>, 0);\
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        ParticleForce<kinematicCloudType>,                                    \
+        dictionary                                                            \
+    );
 
 
 #define makeParticleForceModelType(SS, CloudType)                             \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    ParticleForce<CloudType>::adddictionaryConstructorToTable<SS<CloudType> > \
-        add##SS##CloudType##ConstructorToTable_;
+    ParticleForce<kinematicCloudType>::                                       \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+        add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
index f95a9802bb8c89be8c590d8a7a05855397ccd3ba..14995a5bc0958cb1da478715f9c018714aea5e61 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
@@ -192,22 +192,27 @@ public:
 
 #define makePatchInteractionModel(CloudType)                                  \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(PatchInteractionModel<CloudType>, 0); \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        PatchInteractionModel<kinematicCloudType>,                            \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        PatchInteractionModel<CloudType>,                                     \
+        PatchInteractionModel<kinematicCloudType>,                            \
         dictionary                                                            \
     );
 
 
 #define makePatchInteractionModelType(SS, CloudType)                          \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    PatchInteractionModel<CloudType>::                                        \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    PatchInteractionModel<kinematicCloudType>::                               \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
index bb1352302c9e9440a4f069e39719db131b1d1e1f..553e03a28ad9e702e776d0d8f4b5d29b66816311 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
@@ -145,22 +145,27 @@ public:
 
 #define makePostProcessingModel(CloudType)                                    \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(PostProcessingModel<CloudType>, 0);   \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        PostProcessingModel<kinematicCloudType>,                              \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        PostProcessingModel<CloudType>,                                       \
+        PostProcessingModel<kinematicCloudType>,                              \
         dictionary                                                            \
     );
 
 
 #define makePostProcessingModelType(SS, CloudType)                            \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    PostProcessingModel<CloudType>::                                          \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    PostProcessingModel<kinematicCloudType>::                                 \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
index 792eb876aeff11f49b70a0f07479f91d517e938b..35b8526c35547f431ab24b09a56508c6616f9d21 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
@@ -243,22 +243,27 @@ public:
 
 #define makeSurfaceFilmModel(CloudType)                                       \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SurfaceFilmModel<CloudType>, 0);      \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SurfaceFilmModel<kinematicCloudType>,                                 \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        SurfaceFilmModel<CloudType>,                                          \
+        SurfaceFilmModel<kinematicCloudType>,                                 \
         dictionary                                                            \
     );
 
 
 #define makeSurfaceFilmModelType(SS, CloudType)                               \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    SurfaceFilmModel<CloudType>::                                             \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    SurfaceFilmModel<kinematicCloudType>::                                    \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index 2f38ff6a154455988b5fd0afb0eaf63e0284a30d..be2e267b869e9de3d0e921f151b1f31981b9a3e5 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -267,26 +267,27 @@ public:
 
 #define makeCompositionModel(CloudType)                                       \
                                                                               \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
     defineNamedTemplateTypeNameAndDebug                                       \
     (                                                                         \
-        CompositionModel<CloudType>,                                          \
+        CompositionModel<reactingCloudType>,                                  \
         0                                                                     \
     );                                                                        \
-                                                                              \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        CompositionModel<CloudType>,                                          \
+        CompositionModel<reactingCloudType>,                                  \
         dictionary                                                            \
     );
 
 
 #define makeCompositionModelType(SS, CloudType)                               \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingCloudType>, 0);            \
                                                                               \
-    CompositionModel<CloudType>::                                             \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    CompositionModel<reactingCloudType>::                                     \
+        adddictionaryConstructorToTable<SS<reactingCloudType> >               \
+            add##SS##CloudType##reactingCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
index e0e161c8463695261f1c0378e965e0d088a354f7..369b7b8e3ad753a0b6810bc6d9f8538e49f5891a 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
@@ -185,22 +185,27 @@ public:
 
 #define makePhaseChangeModel(CloudType)                                       \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(PhaseChangeModel<CloudType>, 0);      \
-                                                                              \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        PhaseChangeModel<reactingCloudType>,                                  \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        PhaseChangeModel<CloudType>,                                          \
+        PhaseChangeModel<reactingCloudType>,                                  \
         dictionary                                                            \
     );
 
 
 #define makePhaseChangeModelType(SS, CloudType)                               \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingCloudType>, 0);            \
                                                                               \
-    PhaseChangeModel<CloudType>::                                             \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    PhaseChangeModel<reactingCloudType>::                                     \
+        adddictionaryConstructorToTable<SS<reactingCloudType> >               \
+            add##SS##CloudType##reactingCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
index 697c5ce76b3d5f0c42f89b1b6a640d4362045db8..4b16bb77f431117d114b0b1690419f7c09323084 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
@@ -136,22 +136,29 @@ public:
 
 #define makeDevolatilisationModel(CloudType)                                  \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(DevolatilisationModel<CloudType>, 0); \
-                                                                              \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DevolatilisationModel<reactingMultiphaseCloudType>,                   \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        DevolatilisationModel<CloudType>,                                     \
+        DevolatilisationModel<reactingMultiphaseCloudType>,                   \
         dictionary                                                            \
     );
 
 
 #define makeDevolatilisationModelType(SS, CloudType)                          \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingMultiphaseCloudType>, 0);  \
                                                                               \
-    DevolatilisationModel<CloudType>::                                        \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    DevolatilisationModel<reactingMultiphaseCloudType>::                      \
+        adddictionaryConstructorToTable<SS<reactingMultiphaseCloudType> >     \
+        add##SS##CloudType##reactingMultiphaseCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
index a8b975c1376270ee954f18c3bd459ac54cd9f0e7..d218936656f167a4bda75f3349667ebec2e951a3 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
@@ -149,22 +149,29 @@ public:
 
 #define makeSurfaceReactionModel(CloudType)                                   \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SurfaceReactionModel<CloudType>, 0);  \
-                                                                              \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SurfaceReactionModel<reactingMultiphaseCloudType>,                    \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        SurfaceReactionModel<CloudType>,                                      \
+        SurfaceReactionModel<reactingMultiphaseCloudType>,                    \
         dictionary                                                            \
     );
 
 
 #define makeSurfaceReactionModelType(SS, CloudType)                           \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingMultiphaseCloudType>, 0);  \
                                                                               \
-    SurfaceReactionModel<CloudType>::                                         \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    SurfaceReactionModel<reactingMultiphaseCloudType>::                       \
+        adddictionaryConstructorToTable<SS<reactingMultiphaseCloudType> >     \
+        add##SS##CloudType##reactingMultiphaseCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
index 9769f809411627f7c5e1b32fda3abbaa392ca1a8..927151ff43b1377781981b736456d7e6ef05222a 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
@@ -155,22 +155,27 @@ public:
 
 #define makeHeatTransferModel(CloudType)                                      \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(HeatTransferModel<CloudType>, 0);     \
-                                                                              \
+    typedef CloudType::thermoCloudType thermoCloudType;                       \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        HeatTransferModel<thermoCloudType>,                                   \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        HeatTransferModel<CloudType>,                                         \
+        HeatTransferModel<thermoCloudType>,                                   \
         dictionary                                                            \
     );
 
 
 #define makeHeatTransferModelType(SS, CloudType)                              \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::thermoCloudType thermoCloudType;                       \
+    defineNamedTemplateTypeNameAndDebug(SS<thermoCloudType>, 0);              \
                                                                               \
-    HeatTransferModel<CloudType>::                                            \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    HeatTransferModel<thermoCloudType>::                                      \
+        adddictionaryConstructorToTable<SS<thermoCloudType> >                 \
+            add##SS##CloudType##thermoCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties b/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties
index e2e943d38b2d7913fe515cc294c6ae2f90245c1e..c36b507a1e68edcf0885777b80e411a45593526f 100644
--- a/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties
+++ b/tutorials/combustion/engineFoam/kivaTest/constant/thermophysicalProperties
@@ -48,12 +48,12 @@ oxidant
 burntProducts
 {
     nMoles          1;
-    molWeight       28.8478;
-    Tlow            298.15;
-    Thigh           5000;
+    molWeight       28.6068;
+    Tlow            200;
+    Thigh           6000;
     Tcommon         1000;
-    highCpCoeffs    ( 3.10156 0.00124723 -4.2071e-07 6.66805e-11 -3.92581e-15 -1092.96 5.35255 );
-    lowCpCoeffs     ( 3.58264 -0.000711179 1.64893e-06 -9.37968e-11 -4.35761e-13 -1158.24 3.11438 );
+    highCpCoeffs    ( 3.12468 0.00178578 -5.94695e-07 9.09801e-11 -5.1246e-15 -11005.8 5.03593 );
+    lowCpCoeffs     ( 3.47612 0.000758205 -3.68739e-07 1.3449e-09 -8.08868e-13 -11071.5 3.3058 );
     As              1.67212e-06;
     Ts              170.672;
 }
diff --git a/tutorials/discreteMethods/dsmcFoam/README b/tutorials/discreteMethods/dsmcFoam/README
new file mode 100644
index 0000000000000000000000000000000000000000..1c6b83c1cecf306bf5cb9bd0c7cf2e6067fbad26
--- /dev/null
+++ b/tutorials/discreteMethods/dsmcFoam/README
@@ -0,0 +1,52 @@
+Fields are used by dsmcFoam in several ways, some of which are different to
+their use elsewhere in OpenFOAM.  None of these fields are solved by partial
+differential equations, they are used either to record simulation data, or to
+supply boundary data.
+
+In each case there are 11 fields:
+
+    boundaryT, boundaryU:
+
+        The wall and free stream conditions at the boundary are specified for
+        velocity and temperature with these fields - only the data on the
+        patches is used, the cell data is not.  These are the only two fields
+        which supply data to the case.
+
+    dsmcRhoN:
+
+        The population of dsmc particles in cells is recorded to visualise how
+        well the cell population conditions required for dsmc are met.  The
+        boundary conditions are zeroGradient because only cell data is
+        meaningful.
+
+    fD, q:
+
+        The wall heat flux (q) and force density (fD, i.e. stress vector) is
+        recorded with these fields - only the data on wall patches is relevant,
+        the cell data is not.
+
+    iDof, internalE, linearKE, momentum, rhoM, rhoN:
+
+        These fields are the densities of extensive quantities in the
+        simulation, i.e. of number, mass, momentum, energy.  Cell data is
+        recorded in the internal field and the boundaryField is used to record
+        the data of particles that strike wall patches.  The properties of
+        particles striking wall faces are weighted by 1/(Un*fA), where Un is the
+        normal component of the particle's velocity and fA is the face area.
+        This is done so that when intensive quantities, such as velocity or
+        temperature, are evaluated on the wall the values are correct this
+        allows velocity slip and temperature jump to be evaluated.
+
+        Therefore, the data in these fields on wall patches is of a different
+        type to the volume data.  This may cause problems when post-processing,
+        as any interpolation of these fields will have a artifacts in the near
+        wall cells because the values on the faces are radically different.
+        This can be overcome by visualising the data uninterpolated, or by
+        copying the fields and setting zeroGradient boundary conditions on
+        walls.  Calculated intensive fields do not have this issue.
+
+Further fields are produced by dsmcFoam, i.e. dsmcSigmaTcRMax (used in the
+selection of collision partners) and by the fieldAverage (averaging the
+extensive quantity densities) and dsmcFields (calculating intensive quantities,
+i.e. velocity and temperature, from extensive quantities) function objects in
+each case as it runs.
diff --git a/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/0/p b/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/0/p
index bb7898548f02ca7f0f5e64876ed070abaaa12ccb..e449a51f2ea9aaa5a01a98e9ba8a4f0db3eefa58 100644
--- a/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/0/p
+++ b/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/0/p
@@ -1,8 +1,8 @@
 /*---------------------------------------------------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.com               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/constant/polyMesh/blockMeshDict b/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/constant/polyMesh/blockMeshDict
index 0befc6212d4836bcb5af916ab297fc45533c9c86..14c329d20b10ee1fa8fa821ab0a1a904e98c5b78 100644
--- a/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/constant/polyMesh/blockMeshDict
+++ b/tutorials/lagrangian/LTSReactingParcelFoam/counterFlowFlame2D/constant/polyMesh/blockMeshDict
@@ -1,8 +1,8 @@
 /*---------------------------------------------------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.6                                   |
-|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.com               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile