diff --git a/applications/solvers/combustion/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/combustion/coalChemistryFoam/coalChemistryFoam.C
index 3bccc682d33ee4532a832198151c8ef984aaf87b..18dbce775768566b7417bce4ad05d6c59b51ad27 100644
--- a/applications/solvers/combustion/coalChemistryFoam/coalChemistryFoam.C
+++ b/applications/solvers/combustion/coalChemistryFoam/coalChemistryFoam.C
@@ -35,10 +35,10 @@ Description
 #include "hCombustionThermo.H"
 #include "turbulenceModel.H"
 #include "basicThermoCloud.H"
-#include "coalCloud.H"
+#include "CoalCloud.H"
 #include "chemistryModel.H"
 #include "chemistrySolver.H"
-#include "ReactingCloudThermoTypes.H"
+#include "reactingThermoTypes.H"
 #include "timeActivatedExplicitSource.H"
 #include "radiationModel.H"
 
diff --git a/applications/solvers/combustion/coalChemistryFoam/createClouds.H b/applications/solvers/combustion/coalChemistryFoam/createClouds.H
index 34398f6b827944f55ee061156ef779cf9e7ccd5b..ecd70150b937d40d15722792b11db959b7bcafbd 100644
--- a/applications/solvers/combustion/coalChemistryFoam/createClouds.H
+++ b/applications/solvers/combustion/coalChemistryFoam/createClouds.H
@@ -31,7 +31,7 @@ forAll(gasProperties, i)
 }
 
 Info<< "\nConstructing coal cloud" << endl;
-coalCloud coalParcels
+CoalCloud<specieReactingProperties> coalParcels
 (
     "coalCloud1",
     rho,
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index 89a2e815f3bf7a7f2f83d1df9234d681380ad3f5..06efa86e2be9c98aeea3de57488b6f36256704a3 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -37,7 +37,7 @@ Description
 #include "BasicReactingCloud.H"
 #include "chemistryModel.H"
 #include "chemistrySolver.H"
-#include "ReactingCloudThermoTypes.H"
+#include "reactingThermoTypes.H"
 #include "radiationModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/coalCombustion/coalCloud/coalCloud.C b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C
similarity index 79%
rename from src/lagrangian/coalCombustion/coalCloud/coalCloud.C
rename to src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C
index e41b822e38ccb0216cfcf8020b7a930dd8c5173f..1b923614d28eed064d1ec1865a28e80ebf22f67e 100644
--- a/src/lagrangian/coalCombustion/coalCloud/coalCloud.C
+++ b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C
@@ -24,53 +24,48 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "coalCloud.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(coalCloud, 0);
-};
-
+#include "CoalCloud.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::coalCloud::coalCloud
+template<class ThermoType>
+Foam::CoalCloud<ThermoType>::CoalCloud
 (
     const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& gases
+    PtrList<ThermoType>& carrierSpecies
 )
 :
-    ReactingMultiphaseCloud<coalParcel>
+    ReactingMultiphaseCloud<CoalParcel<ThermoType> >
     (
         cloudName,
         rho,
         U,
         g,
         thermo,
-        gases
+        carrierSpecies
     )
 {
-    coalParcel::readFields(*this);
+    CoalParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::coalCloud::~coalCloud()
+template<class ThermoType>
+Foam::CoalCloud<ThermoType>::~CoalCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::coalCloud::writeFields() const
+template<class ThermoType>
+void Foam::CoalCloud<ThermoType>::writeFields() const
 {
-    coalParcel::writeFields(*this);
+    CoalParcel<ThermoType>::writeFields(*this);
 }
 
 
diff --git a/src/lagrangian/coalCombustion/coalCloud/coalCloud.H b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H
similarity index 80%
rename from src/lagrangian/coalCombustion/coalCloud/coalCloud.H
rename to src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H
index 4b1d3e852d7b7cf46f9b669cd47f8e729c51f1f0..4dbad0662f9bcb6c4fbfb1787fa94b1e919a3f6c 100644
--- a/src/lagrangian/coalCombustion/coalCloud/coalCloud.H
+++ b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H
@@ -23,20 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    coalCloud
+    CoalCloud
 
 Description
 
 SourceFiles
-    coalCloud.C
+    CoalCloud.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef coalCloud_H
-#define coalCloud_H
+#ifndef CoalCloud_H
+#define CoalCloud_H
 
 #include "ReactingMultiphaseCloud.H"
-#include "coalParcel.H"
+#include "CoalParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,44 +44,45 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class coalCloud Declaration
+                           Class CoalCloud Declaration
 \*---------------------------------------------------------------------------*/
 
-class coalCloud
+template<class ThermoType>
+class CoalCloud
 :
-    public ReactingMultiphaseCloud<coalParcel>
+    public ReactingMultiphaseCloud<CoalParcel<ThermoType> >
 {
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        coalCloud(const coalCloud&);
+        CoalCloud(const CoalCloud&);
 
         //- Disallow default bitwise assignment
-        void operator=(const coalCloud&);
+        void operator=(const CoalCloud&);
 
 
 public:
 
     //-Runtime type information
-    TypeName("coalCloud");
+    TypeName("CoalCloud");
 
 
     // Constructors
 
         //- Construct given carrier gas fields
-        coalCloud
+        CoalCloud
         (
             const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& gases
+            PtrList<ThermoType>& gases
         );
 
 
     //- Destructor
-    ~coalCloud();
+    ~CoalCloud();
 
 
     // Member Functions
@@ -97,6 +98,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "CoalCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelIOList.C b/src/lagrangian/coalCombustion/CoalCloud/defineCoalCloud.C
similarity index 93%
rename from src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelIOList.C
rename to src/lagrangian/coalCombustion/CoalCloud/defineCoalCloud.C
index 1023c5e1668c9e84f031bc499e138a663de12940..64e60987e096ca35c981c4a48dee3d823fbe6f88 100644
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelIOList.C
+++ b/src/lagrangian/coalCombustion/CoalCloud/defineCoalCloud.C
@@ -24,15 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "makeParcelIOList.H"
-
-#include "coalParcel.H"
+#include "createReactingCloudTypes.H"
+#include "CoalCloud.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    makeParcelIOList(coalParcel);
+    createReactingCloudType(CoalCloud);
 };
 
 
diff --git a/src/lagrangian/coalCombustion/coalParcel/coalParcel.C b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.C
similarity index 72%
rename from src/lagrangian/coalCombustion/coalParcel/coalParcel.C
rename to src/lagrangian/coalCombustion/CoalParcel/CoalParcel.C
index 218ce201a057efaede5fedcee3e2b54785126127..edfb66467d390f3a6e71501c53fafe13d2a641e5 100644
--- a/src/lagrangian/coalCombustion/coalParcel/coalParcel.C
+++ b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.C
@@ -24,34 +24,26 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "coalParcel.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(coalParcel, 0);
-    defineParticleTypeNameAndDebug(coalParcel, 0);
-    defineParcelTypeNameAndDebug(coalParcel, 0);
-};
-
+#include "CoalParcel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::coalParcel::coalParcel
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::CoalParcel
 (
-    ReactingMultiphaseCloud<coalParcel>& owner,
+    ReactingMultiphaseCloud<CoalParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI
 )
 :
-    ReactingMultiphaseParcel<coalParcel>(owner, position, cellI)
+    ReactingMultiphaseParcel<CoalParcel<ThermoType> >(owner, position, cellI)
 {}
 
 
-Foam::coalParcel::coalParcel
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::CoalParcel
 (
-    ReactingMultiphaseCloud<coalParcel>& owner,
+    ReactingMultiphaseCloud<CoalParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI,
     const label typeId,
@@ -62,10 +54,12 @@ Foam::coalParcel::coalParcel
     const scalarField& YGas0,
     const scalarField& YLiquid0,
     const scalarField& YSolid0,
-    const constantProperties& constProps
+    const typename
+        ReactingMultiphaseParcel<CoalParcel<ThermoType> >::
+        constantProperties& constProps
 )
 :
-    ReactingMultiphaseParcel<coalParcel>
+    ReactingMultiphaseParcel<CoalParcel<ThermoType> >
     (
         owner,
         position,
@@ -83,20 +77,22 @@ Foam::coalParcel::coalParcel
 {}
 
 
-Foam::coalParcel::coalParcel
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::CoalParcel
 (
-    const Cloud<coalParcel>& cloud,
+    const Cloud<CoalParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    ReactingMultiphaseParcel<coalParcel>(cloud, is, readFields)
+    ReactingMultiphaseParcel<CoalParcel<ThermoType> >(cloud, is, readFields)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::coalParcel::~coalParcel()
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::~CoalParcel()
 {}
 
 
diff --git a/src/lagrangian/coalCombustion/coalParcel/coalParcel.H b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.H
similarity index 71%
rename from src/lagrangian/coalCombustion/coalParcel/coalParcel.H
rename to src/lagrangian/coalCombustion/CoalParcel/CoalParcel.H
index 34b009530f6803db3c0ac60227decddf53570d1f..a914cfbc9c8037e3cceed8062fd27c36869d5e0b 100644
--- a/src/lagrangian/coalCombustion/coalParcel/coalParcel.H
+++ b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.H
@@ -23,19 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    coalParcel
+    CoalParcel
 
 Description
 
 
 SourceFiles
-    coalParcel.C
-    coalParcelIO.C
+    CoalParcel.C
+    CoalParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef coalParcel_H
-#define coalParcel_H
+#ifndef CoalParcel_H
+#define CoalParcel_H
 
 #include "ReactingMultiphaseParcel.H"
 
@@ -44,34 +44,42 @@ SourceFiles
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class CoalParcel;
+
 /*---------------------------------------------------------------------------*\
-                         Class coalParcel Declaration
+                         Class CoalParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class coalParcel
+template<class ThermoType>
+class CoalParcel
 :
-    public ReactingMultiphaseParcel<coalParcel>
+    public ReactingMultiphaseParcel<CoalParcel<ThermoType> >
 {
 public:
 
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
     // Run-time type information
-    TypeName("coalParcel");
+    TypeName("CoalParcel");
 
     // Constructors
 
         //- Construct from owner, position, and cloud owner
         //  Other properties initialised as null
-        coalParcel
+        CoalParcel
         (
-             ReactingMultiphaseCloud<coalParcel>& owner,
+             ReactingMultiphaseCloud<CoalParcel>& owner,
              const vector& position,
              const label cellI
         );
 
         //- Construct from components
-        coalParcel
+        CoalParcel
         (
-             ReactingMultiphaseCloud<coalParcel>& owner,
+             ReactingMultiphaseCloud<CoalParcel>& owner,
              const vector& position,
              const label cellI,
              const label typeId,
@@ -82,39 +90,40 @@ public:
              const scalarField& YGas0,
              const scalarField& YLiquid0,
              const scalarField& YSolid0,
-             const constantProperties& constProps
+             const typename
+                 ReactingMultiphaseParcel<CoalParcel>::
+                 constantProperties& constProps
         );
 
         //- Construct from Istream
-        coalParcel
+        CoalParcel
         (
-            const Cloud<coalParcel>& c,
+            const Cloud<CoalParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct and return a clone
-        autoPtr<coalParcel> clone() const
+        autoPtr<CoalParcel> clone() const
         {
-            return autoPtr<coalParcel>(new coalParcel(*this));
+            return autoPtr<CoalParcel>(new CoalParcel(*this));
         }
 
 
     //- Destructor
-    virtual ~coalParcel();
+    virtual ~CoalParcel();
 };
 
 
-template<>
-inline bool contiguous<coalParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "CoalParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelCompositionModels.C b/src/lagrangian/coalCombustion/CoalParcel/defineCoalParcel.C
similarity index 81%
rename from src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelCompositionModels.C
rename to src/lagrangian/coalCombustion/CoalParcel/defineCoalParcel.C
index f6dea63009cc329c15e0b4ed1183d7e2fed83c89..31531d45226562a4fbcf7c562392e71a679737dd 100644
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelCompositionModels.C
+++ b/src/lagrangian/coalCombustion/CoalParcel/defineCoalParcel.C
@@ -24,24 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "coalParcel.H"
-#include "ReactingCloud.H"
-
-#include "SingleMixtureFraction.H"
+#include "createCoalParcelTypes.H"
+#include "CoalParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    makeCompositionModel(ReactingCloud<coalParcel>);
-
-    // Add instances of composition model to the table
-    makeCompositionModelType
-    (
-        SingleMixtureFraction,
-        ReactingCloud,
-        coalParcel
-    );
+    createCoalParcelType(CoalParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C b/src/lagrangian/coalCombustion/CoalParcel/submodels/makeCoalParcelSubmodels.C
similarity index 53%
rename from src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
rename to src/lagrangian/coalCombustion/CoalParcel/submodels/makeCoalParcelSubmodels.C
index 53051b08dab9081f3487abd0e30a38ac848a7cac..c2da43a2678f6fb4f4a0e11faf0b2d9d05dcfde3 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
+++ b/src/lagrangian/coalCombustion/CoalParcel/submodels/makeCoalParcelSubmodels.C
@@ -24,31 +24,43 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "ThermoCloud.H"
+#include "CoalParcel.H"
 
-#include "NoHeatTransfer.H"
-#include "RanzMarshall.H"
+#include "makeReactingParcelDispersionModels.H"
+#include "makeReactingParcelDragModels.H"
+#include "makeReactingParcelInjectionModels.H"
+#include "makeReactingParcelPatchInteractionModels.H"
+#include "makeReactingParcelPostProcessingModels.H"
+
+#include "makeReactingParcelHeatTransferModels.H"
+
+#include "makeReactingMultiphaseParcelCompositionModels.H"
+#include "makeReactingParcelPhaseChangeModels.H"
+
+#include "makeReactingMultiphaseParcelDevolatilisationModels.H"
+#include "makeCoalParcelSurfaceReactionModels.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    makeHeatTransferModel(ThermoCloud<bReactingMultiphaseParcel>);
-
-    // Add instances of heat transfer model to the table
-    makeHeatTransferModelType
-    (
-        NoHeatTransfer,
-        ThermoCloud,
-        bReactingMultiphaseParcel
-    );
-    makeHeatTransferModelType
-    (
-        RanzMarshall,
-        ThermoCloud,
-        bReactingMultiphaseParcel
-    );
+    // Kinematic sub-models
+    createReactingDispersionModelType(CoalParcel);
+    createReactingDragModelType(CoalParcel);
+    createReactingInjectionModelType(CoalParcel);
+    createReactingPatchInteractionModelType(CoalParcel);
+    createReactingPostProcessingModelType(CoalParcel);
+
+    // Thermo sub-models
+    createReactingHeatTransferModelType(CoalParcel);
+
+    // Reacting sub-models
+    createReactingMultiphaseCompositionModelType(CoalParcel);
+    createReactingPhaseChangeModelType(CoalParcel);
+
+    // Reacting multiphase sub-models
+    createReactingMultiphaseDevolatilisationModelType(CoalParcel);
+    createCoalSurfaceReactionModelType(CoalParcel);
 };
 
 
diff --git a/src/lagrangian/coalCombustion/CoalParcel/submodels/makeCoalParcelSurfaceReactionModels.H b/src/lagrangian/coalCombustion/CoalParcel/submodels/makeCoalParcelSurfaceReactionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..1875cc590c27b01d9c314cbf048d55bc69624ec8
--- /dev/null
+++ b/src/lagrangian/coalCombustion/CoalParcel/submodels/makeCoalParcelSurfaceReactionModels.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeCoalParcelSurfaceReactionModels_H
+#define makeCoalParcelSurfaceReactionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "ReactingMultiphaseCloud.H"
+
+#include "NoSurfaceReaction.H"
+#include "COxidationDiffusionLimitedRate.H"
+#include "COxidationKineticDiffusionLimitedRate.H"
+#include "COxidationMurphyShaddix.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createCoalSurfaceReactionModelType(ParcelType)                        \
+                                                                              \
+    createCoalSurfaceReactionModelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createCoalSurfaceReactionModelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createCoalSurfaceReactionModelThermoType(ParcelType, ThermoType)      \
+                                                                              \
+    makeSurfaceReactionModel                                                  \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType<ThermoType> >                      \
+    );                                                                        \
+                                                                              \
+    makeSurfaceReactionModelThermoTypeNew                                     \
+    (                                                                         \
+        NoSurfaceReaction,                                                    \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeSurfaceReactionModelThermoTypeNew                                     \
+    (                                                                         \
+        COxidationDiffusionLimitedRate,                                       \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeSurfaceReactionModelThermoTypeNew                                     \
+    (                                                                         \
+        COxidationKineticDiffusionLimitedRate,                                \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeSurfaceReactionModelThermoTypeNew                                     \
+    (                                                                         \
+        COxidationMurphyShaddix,                                              \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/Make/files b/src/lagrangian/coalCombustion/Make/files
index 9d9b8b6267f1ac96f2d8e98861b459b67c82509d..4a7cb52d25d614659b0443e27b96d8cc09d742cf 100755
--- a/src/lagrangian/coalCombustion/Make/files
+++ b/src/lagrangian/coalCombustion/Make/files
@@ -1,25 +1,8 @@
-/* coal cloud */
-coalCloud/coalCloud.C
+/* Coal cloud */
+CoalCloud/defineCoalCloud.C
 
-/* coal parcel and sub-models */
-coalParcel/coalParcel.C
-coalParcel/defineCoalParcel.C
-coalParcel/submodels/makeCoalParcelCompositionModels.C
-coalParcel/submodels/makeCoalParcelDevolatilisationModels.C
-coalParcel/submodels/makeCoalParcelDragModels.C
-coalParcel/submodels/makeCoalParcelDispersionModels.C
-coalParcel/submodels/makeCoalParcelInjectionModels.C
-coalParcel/submodels/makeCoalParcelHeatTransferModels.C
-coalParcel/submodels/makeCoalParcelPhaseChangeModels.C
-coalParcel/submodels/makeCoalParcelPatchInteractionModels.C
-coalParcel/submodels/makeCoalParcelPostProcessingModels.C
-coalParcel/submodels/makeCoalParcelSurfaceReactionModels.C
-
-submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
-submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
-submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
-
-/* IOLists */
-coalParcel/submodels/makeCoalParcelIOList.C
+/* Coal parcel and sub-models */
+CoalParcel/defineCoalParcel.C
+CoalParcel/submodels/makeCoalParcelSubmodels.C
 
 LIB = $(FOAM_LIBBIN)/libcoalCombustion
diff --git a/src/lagrangian/coalCombustion/coalParcel/defineCoalParcel.C b/src/lagrangian/coalCombustion/coalParcel/defineCoalParcel.C
deleted file mode 100644
index 2c41d8289833f546ba8e834e87332d66dc9140cb..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/defineCoalParcel.C
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "ReactingMultiphaseCloud.H"
-
-namespace Foam
-{
-    defineTemplateTypeNameAndDebug(Cloud<coalParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicParcel<coalParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicParcel<coalParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoParcel<coalParcel>, 0);
-    defineTemplateTypeNameAndDebug(ThermoParcel<coalParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingParcel<coalParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingParcel<coalParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingMultiphaseParcel<coalParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingMultiphaseParcel<coalParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicCloud<coalParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoCloud<coalParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingCloud<coalParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingMultiphaseCloud<coalParcel>, 0);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDevolatilisationModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDevolatilisationModels.C
deleted file mode 100644
index 041a132d663ce94a05af8e8bb8a73f0d16d7e8bc..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDevolatilisationModels.C
+++ /dev/null
@@ -1,65 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "ReactingMultiphaseCloud.H"
-
-#include "NoDevolatilisation.H"
-#include "ConstantRateDevolatilisation.H"
-#include "SingleKineticRateDevolatilisation.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeDevolatilisationModel
-    (
-        ReactingMultiphaseCloud<coalParcel>
-    );
-
-    // Add instances of devolatilisation model to the table
-    makeDevolatilisationModelType
-    (
-        NoDevolatilisation,
-        ReactingMultiphaseCloud,
-        coalParcel
-    );
-    makeDevolatilisationModelType
-    (
-        ConstantRateDevolatilisation,
-        ReactingMultiphaseCloud,
-        coalParcel
-    );
-    makeDevolatilisationModelType
-    (
-        SingleKineticRateDevolatilisation,
-        ReactingMultiphaseCloud,
-        coalParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDispersionModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDispersionModels.C
deleted file mode 100644
index d6f1cc823227fd1e137fb5901c60368b7165652d..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDispersionModels.C
+++ /dev/null
@@ -1,68 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "KinematicCloud.H"
-
-#include "NoDispersion.H"
-#include "GradientDispersionRAS.H"
-#include "StochasticDispersionRAS.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeDispersionModel(KinematicCloud<coalParcel>);
-
-    defineNamedTemplateTypeNameAndDebug
-    (
-        DispersionRASModel<KinematicCloud<coalParcel> >,
-        0
-    );
-
-    // Add instances of dispersion model to the table
-    makeDispersionModelType
-    (
-        NoDispersion,
-        KinematicCloud,
-        coalParcel
-    );
-    makeDispersionModelType
-    (
-        GradientDispersionRAS,
-        KinematicCloud,
-        coalParcel
-    );
-    makeDispersionModelType
-    (
-        StochasticDispersionRAS,
-        KinematicCloud,
-        coalParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDragModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDragModels.C
deleted file mode 100644
index 162e1d56c2e4295aa5c953502c398ca41b82f516..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelDragModels.C
+++ /dev/null
@@ -1,45 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "KinematicCloud.H"
-
-#include "NoDrag.H"
-#include "SphereDrag.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeDragModel(KinematicCloud<coalParcel>);
-
-    // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, coalParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, coalParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelHeatTransferModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelHeatTransferModels.C
deleted file mode 100644
index 92e1a6727006de9d3b56bea6f5752aec21d29425..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelHeatTransferModels.C
+++ /dev/null
@@ -1,45 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "ThermoCloud.H"
-
-#include "NoHeatTransfer.H"
-#include "RanzMarshall.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeHeatTransferModel(ThermoCloud<coalParcel>);
-
-    // Add instances of heat transfer model to the table
-    makeHeatTransferModelType(NoHeatTransfer, ThermoCloud, coalParcel);
-    makeHeatTransferModelType(RanzMarshall, ThermoCloud, coalParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelInjectionModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelInjectionModels.C
deleted file mode 100644
index bf68b9947731c02b4b61917d647341f8df1b2896..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelInjectionModels.C
+++ /dev/null
@@ -1,49 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "ReactingCloud.H"
-
-#include "ConeInjection.H"
-#include "FieldActivatedInjection.H"
-#include "ManualInjection.H"
-#include "NoInjection.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeInjectionModel(KinematicCloud<coalParcel>);
-
-    // Add instances of injection model to the table
-    makeInjectionModelType(ConeInjection, KinematicCloud, coalParcel);
-    makeInjectionModelType(FieldActivatedInjection, KinematicCloud, coalParcel);
-    makeInjectionModelType(ManualInjection, KinematicCloud, coalParcel);
-    makeInjectionModelType(NoInjection, KinematicCloud, coalParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPatchInteractionModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPatchInteractionModels.C
deleted file mode 100644
index 326af23e819679d255f92eedb50a34efcce527f1..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPatchInteractionModels.C
+++ /dev/null
@@ -1,62 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "ReactingCloud.H"
-
-#include "LocalInteraction.H"
-#include "Rebound.H"
-#include "StandardWallInteraction.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePatchInteractionModel(KinematicCloud<coalParcel>);
-
-    // Add instances of patch interaction model to the table
-    makePatchInteractionModelType
-    (
-        LocalInteraction,
-        KinematicCloud,
-        coalParcel
-    );
-    makePatchInteractionModelType
-    (
-        Rebound,
-        KinematicCloud,
-        coalParcel
-    );
-    makePatchInteractionModelType
-    (
-        StandardWallInteraction,
-        KinematicCloud,
-        coalParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPhaseChangeModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPhaseChangeModels.C
deleted file mode 100644
index ebacd714bd6a43339ce28bc041cb9c88452ced46..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPhaseChangeModels.C
+++ /dev/null
@@ -1,58 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "ReactingCloud.H"
-
-#include "NoPhaseChange.H"
-#include "LiquidEvaporation.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePhaseChangeModel
-    (
-        ReactingCloud<coalParcel>
-    );
-
-    // Add instances of phase change model to the table
-    makePhaseChangeModelType
-    (
-        NoPhaseChange,
-        ReactingCloud,
-        coalParcel
-    );
-    makePhaseChangeModelType
-    (
-        LiquidEvaporation,
-        ReactingCloud,
-        coalParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPostProcessingModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPostProcessingModels.C
deleted file mode 100644
index 7a8594eedad63e2d92397d4d1df79b6d3e16f49c..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelPostProcessingModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "KinematicCloud.H"
-
-#include "NoPostProcessing.H"
-#include "StandardPostProcessing.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePostProcessingModel(KinematicCloud<coalParcel>);
-
-    // Add instances of post-processing model to the table
-    makePostProcessingModelType
-    (
-        NoPostProcessing,
-        KinematicCloud,
-        coalParcel
-    );
-    makePostProcessingModelType
-    (
-        StandardPostProcessing,
-        KinematicCloud,
-        coalParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelSurfaceReactionModels.C b/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelSurfaceReactionModels.C
deleted file mode 100644
index ee25d721f38212cebea8da261d3339df2c5cef8b..0000000000000000000000000000000000000000
--- a/src/lagrangian/coalCombustion/coalParcel/submodels/makeCoalParcelSurfaceReactionModels.C
+++ /dev/null
@@ -1,69 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coalParcel.H"
-#include "ReactingMultiphaseCloud.H"
-
-#include "NoSurfaceReaction.H"
-#include "COxidationDiffusionLimitedRate.H"
-#include "COxidationKineticDiffusionLimitedRate.H"
-#include "COxidationMurphyShaddix.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeSurfaceReactionModel(ReactingMultiphaseCloud<coalParcel>);
-
-    // Add instances of surface reaction model to the table
-    makeSurfaceReactionModelType
-    (
-        NoSurfaceReaction,
-        ReactingMultiphaseCloud,
-        coalParcel
-    );
-    makeSurfaceReactionModelTypeInstance
-    (
-        COxidationDiffusionLimitedRate,
-        ReactingMultiphaseCloud,
-        coalParcel
-    );
-    makeSurfaceReactionModelTypeInstance
-    (
-        COxidationKineticDiffusionLimitedRate,
-        ReactingMultiphaseCloud,
-        coalParcel
-    );
-    makeSurfaceReactionModelTypeInstance
-    (
-        COxidationMurphyShaddix,
-        ReactingMultiphaseCloud,
-        coalParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/include/createCoalParcelTypes.H b/src/lagrangian/coalCombustion/include/createCoalParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..1584712ba09e8bc69d94ab9edd331acc3b18d325
--- /dev/null
+++ b/src/lagrangian/coalCombustion/include/createCoalParcelTypes.H
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createCoalParcelTypes_H
+#define createCoalParcelTypes_H
+
+#include "makeParcelIOList.H"
+#include "reactingThermoTypes.H"
+#include "CoalCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createCoalParcelType(ParcelType)                                      \
+                                                                              \
+    createCoalParcelThermoType                                                \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createCoalParcelThermoType                                                \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createCoalParcelThermoType(ParcelType, ThermoType)                    \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    makeParcelIOList(ParcelType##ThermoType);                                 \
+                                                                              \
+    defineTemplateTypeNameAndDebug(ParcelType##ThermoType, 0);                \
+    defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0);         \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        KinematicParcel<ParcelType##ThermoType>,                              \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);    \
+    defineTemplateTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);  \
+    defineTemplateTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);\
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(CoalParcel<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(CoalParcel<ParcelType##ThermoType>, 0);    \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0);     \
+    defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);   \
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType##ThermoType>,                      \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(CoalCloud<ParcelType##ThermoType>, 0);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
index 7e8f2a0e2ba320f56e4ae5fbdbcec0ef9bd3a622..f0086ccc478a06cb9d1e0f68561fd2ce228501da 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
@@ -28,18 +28,14 @@ License
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate
+template<class CloudType>
+Foam::COxidationDiffusionLimitedRate<CloudType>::COxidationDiffusionLimitedRate
 (
     const dictionary& dict,
-    ReactingMultiphaseCloud<coalParcel>& owner
+    CloudType& owner
 )
 :
-    SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
-    (
-        dict,
-        owner,
-        typeName
-    ),
+    SurfaceReactionModel<CloudType>(dict, owner, typeName),
     Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
     D_(dimensionedScalar(this->coeffDict().lookup("D")).value()),
     CsLocalId_(-1),
@@ -63,10 +59,10 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate
     {
         FatalErrorIn
         (
-            "COxidationDiffusionLimitedRate"
+            "COxidationDiffusionLimitedRate<CloudType>"
             "("
                 "const dictionary&, "
-                "ReactingMultiphaseCloud<coalParcel>&"
+                "CloudType&"
             ")"
         )   << "Stoichiometry of reaction, Sb, must be greater than zero" << nl
             << exit(FatalError);
@@ -76,19 +72,23 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::COxidationDiffusionLimitedRate::~COxidationDiffusionLimitedRate()
+template<class CloudType>
+Foam::COxidationDiffusionLimitedRate<CloudType>::
+~COxidationDiffusionLimitedRate()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-bool Foam::COxidationDiffusionLimitedRate::active() const
+template<class CloudType>
+bool Foam::COxidationDiffusionLimitedRate<CloudType>::active() const
 {
     return true;
 }
 
 
-Foam::scalar Foam::COxidationDiffusionLimitedRate::calculate
+template<class CloudType>
+Foam::scalar Foam::COxidationDiffusionLimitedRate<CloudType>::calculate
 (
     const scalar dt,
     const label cellI,
@@ -110,7 +110,8 @@ Foam::scalar Foam::COxidationDiffusionLimitedRate::calculate
 ) const
 {
     // Fraction of remaining combustible material
-    const scalar fComb = YMixture[coalParcel::SLD]*YSolid[CsLocalId_];
+    const label idSolid = CloudType::parcelType::SLD;
+    const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
 
     // Surface combustion active combustible fraction is consumed
     if (fComb < SMALL)
@@ -120,7 +121,7 @@ Foam::scalar Foam::COxidationDiffusionLimitedRate::calculate
 
     // Local mass fraction of O2 in the carrier phase
     const scalar YO2 =
-        owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
+        this->owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
 
     // Change in C mass [kg]
     scalar dmC =
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H
index 4458a6e31e2ad4ee5e37827596322d119916d75a..2467f2a4567965df532d36fa04d0edd0f5effd2a 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H
@@ -38,19 +38,23 @@ Description
 #define COxidationDiffusionLimitedRate_H
 
 #include "SurfaceReactionModel.H"
-#include "coalParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+// Forward class declarations
+template<class CloudType>
+class COxidationDiffusionLimitedRate;
+
 namespace Foam
 {
 /*---------------------------------------------------------------------------*\
-                  Class COxidationDiffusionLimitedRate Declaration
+              Class COxidationDiffusionLimitedRate Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class CloudType>
 class COxidationDiffusionLimitedRate
 :
-    public SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+    public SurfaceReactionModel<CloudType>
 {
     // Private data
 
@@ -99,7 +103,7 @@ public:
         COxidationDiffusionLimitedRate
         (
             const dictionary& dict,
-            ReactingMultiphaseCloud<coalParcel>& owner
+            CloudType& owner
         );
 
 
@@ -142,6 +146,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "COxidationDiffusionLimitedRate.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
index 078cd100d73c6f66a7a859de8695fca4bf65b5d8..356abbe327a90149c2de931dc668e6df9169919e 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
@@ -28,14 +28,15 @@ License
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::COxidationKineticDiffusionLimitedRate::
+template<class CloudType>
+Foam::COxidationKineticDiffusionLimitedRate<CloudType>::
 COxidationKineticDiffusionLimitedRate
 (
     const dictionary& dict,
-    ReactingMultiphaseCloud<coalParcel>& owner
+    CloudType& owner
 )
 :
-    SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+    SurfaceReactionModel<CloudType>
     (
         dict,
         owner,
@@ -69,7 +70,7 @@ COxidationKineticDiffusionLimitedRate
             "COxidationKineticDiffusionLimitedRate"
             "("
                 "const dictionary&, "
-                "ReactingMultiphaseCloud<coalParcel>&"
+                "CloudType&"
             ")"
         )   << "Stoichiometry of reaction, Sb, must be greater than zero" << nl
             << exit(FatalError);
@@ -79,20 +80,23 @@ COxidationKineticDiffusionLimitedRate
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::COxidationKineticDiffusionLimitedRate::
+template<class CloudType>
+Foam::COxidationKineticDiffusionLimitedRate<CloudType>::
 ~COxidationKineticDiffusionLimitedRate()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-bool Foam::COxidationKineticDiffusionLimitedRate::active() const
+template<class CloudType>
+bool Foam::COxidationKineticDiffusionLimitedRate<CloudType>::active() const
 {
     return true;
 }
 
 
-Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate
+template<class CloudType>
+Foam::scalar Foam::COxidationKineticDiffusionLimitedRate<CloudType>::calculate
 (
     const scalar dt,
     const label cellI,
@@ -114,7 +118,8 @@ Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate
 ) const
 {
     // Fraction of remaining combustible material
-    const scalar fComb = YMixture[coalParcel::SLD]*YSolid[CsLocalId_];
+    const label idSolid = CloudType::parcelType::SLD;
+    const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
 
     // Surface combustion active combustible fraction is consumed
     if (fComb < SMALL)
@@ -124,7 +129,7 @@ Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate
 
     // Local mass fraction of O2 in the carrier phase
     const scalar YO2 =
-        owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
+        this->owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
 
     // Diffusion rate coefficient
     const scalar D0 = C1_/d*pow(0.5*(T + Tc), 0.75);
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H
index 1073cb637f8a69e62d45e41f74bd733b0ef4ac7b..099614633dd11fbc1c53dc5b2eaf968f7bac4aff 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H
@@ -39,19 +39,24 @@ Description
 #define COxidationKineticDiffusionLimitedRate_H
 
 #include "SurfaceReactionModel.H"
-#include "coalParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
+
+// Forward class declarations
+template<class CloudType>
+class COxidationKineticDiffusionLimitedRate;
+
 /*---------------------------------------------------------------------------*\
             Class COxidationKineticDiffusionLimitedRate Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class CloudType>
 class COxidationKineticDiffusionLimitedRate
 :
-    public SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+    public SurfaceReactionModel<CloudType>
 {
     // Private data
 
@@ -106,7 +111,7 @@ public:
         COxidationKineticDiffusionLimitedRate
         (
             const dictionary& dict,
-            ReactingMultiphaseCloud<coalParcel>& owner
+            CloudType& owner
         );
 
 
@@ -149,6 +154,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "COxidationKineticDiffusionLimitedRate.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
index 265b4b66434f42f60731a8bbf6f80b80168f7dc9..b4ff28cd9cff229a07fb7bbee17004d195d36148 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
@@ -28,20 +28,23 @@ License
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
-Foam::label Foam::COxidationMurphyShaddix::maxIters_ = 1000;
+template<class CloudType>
+Foam::label Foam::COxidationMurphyShaddix<CloudType>::maxIters_ = 1000;
 
-Foam::scalar Foam::COxidationMurphyShaddix::tolerance_ = 1e-06;
+template<class CloudType>
+Foam::scalar Foam::COxidationMurphyShaddix<CloudType>::tolerance_ = 1e-06;
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::COxidationMurphyShaddix::COxidationMurphyShaddix
+template<class CloudType>
+Foam::COxidationMurphyShaddix<CloudType>::COxidationMurphyShaddix
 (
     const dictionary& dict,
-    ReactingMultiphaseCloud<coalParcel>& owner
+    CloudType& owner
 )
 :
-    SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+    SurfaceReactionModel<CloudType>
     (
         dict,
         owner,
@@ -76,19 +79,22 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::COxidationMurphyShaddix::~COxidationMurphyShaddix()
+template<class CloudType>
+Foam::COxidationMurphyShaddix<CloudType>::~COxidationMurphyShaddix()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-bool Foam::COxidationMurphyShaddix::active() const
+template<class CloudType>
+bool Foam::COxidationMurphyShaddix<CloudType>::active() const
 {
     return true;
 }
 
 
-Foam::scalar Foam::COxidationMurphyShaddix::calculate
+template<class CloudType>
+Foam::scalar Foam::COxidationMurphyShaddix<CloudType>::calculate
 (
     const scalar dt,
     const label cellI,
@@ -110,7 +116,8 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
 ) const
 {
     // Fraction of remaining combustible material
-    const scalar fComb = YMixture[coalParcel::SLD]*YSolid[CsLocalId_];
+    const label idSolid = CloudType::parcelType::SLD;
+    const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
 
     // Surface combustion until combustible fraction is consumed
     if (fComb < SMALL)
@@ -120,7 +127,7 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
 
     // Cell carrier phase O2 species density [kg/m^3]
     const scalar rhoO2 =
-        rhoc*owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
+        rhoc*this->owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
 
     if (rhoO2 < SMALL)
     {
@@ -186,8 +193,10 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
 
     if (iter > maxIters_)
     {
-        WarningIn("scalar Foam::COxidationMurphyShaddix::calculate(...)")
-            << "iter limit reached (" << maxIters_ << ")" << nl << endl;
+        WarningIn
+        (
+            "scalar Foam::COxidationMurphyShaddix<CloudType>::calculate(...)"
+        )   << "iter limit reached (" << maxIters_ << ")" << nl << endl;
     }
 
     // Calculate the number of molar units reacted
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
index bc026db3646680cd1d9bac14d0f6f65d702c6544..e08516d2dfeb0722662b496f15f48763f44f4106 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
@@ -34,19 +34,24 @@ Description
 #define COxidationMurphyShaddix_H
 
 #include "SurfaceReactionModel.H"
-#include "coalParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
+
+// Forward class declarations
+template<class CloudType>
+class COxidationMurphyShaddix;
+
 /*---------------------------------------------------------------------------*\
                   Class COxidationMurphyShaddix Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class CloudType>
 class COxidationMurphyShaddix
 :
-    public SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+    public SurfaceReactionModel<CloudType>
 {
     // Private data
 
@@ -122,7 +127,7 @@ public:
         COxidationMurphyShaddix
         (
             const dictionary& dict,
-            ReactingMultiphaseCloud<coalParcel>& owner
+            CloudType& owner
         );
 
 
@@ -165,6 +170,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "COxidationMurphyShaddix.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files
index 2d8790fd763766c60294bb5f92f6af3764f755ba..c67e9e606d3753d3ca4d865c672526d4e6831a3c 100644
--- a/src/lagrangian/intermediate/Make/files
+++ b/src/lagrangian/intermediate/Make/files
@@ -2,32 +2,33 @@ PARCELS=parcels
 DERIVEDPARCELS=$(PARCELS)/derived
 BASEPARCELS=$(PARCELS)/baseClasses
 
-/* Parcels */
-$(DERIVEDPARCELS)/basicKinematicParcel/basicKinematicParcel.C
-$(DERIVEDPARCELS)/basicThermoParcel/basicThermoParcel.C
-/* $(DERIVEDPARCELS)/basicReactingParcel/basicReactingParcel.C */
-/* $(DERIVEDPARCELS)/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C */
-/* $(DERIVEDPARCELS)/trackedReactingParcel/trackedReactingParcel.C */
+CLOUDS=clouds
+DERIVEDCLOUDS=$(CLOUDS)/derived
+BASECLOUDS=$(CLOUDS)/baseClasses
+
 
+/* Parcels */
 $(BASEPARCELS)/reactingParcel/reactingParcel.C
 
+
 /* Cloud base classes */
-clouds/baseClasses/kinematicCloud/kinematicCloud.C
-clouds/baseClasses/thermoCloud/thermoCloud.C
-clouds/baseClasses/reactingCloud/reactingCloud.C
-clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.C
+$(BASECLOUDS)/kinematicCloud/kinematicCloud.C
+$(BASECLOUDS)/thermoCloud/thermoCloud.C
+$(BASECLOUDS)/reactingCloud/reactingCloud.C
+$(BASECLOUDS)/reactingMultiphaseCloud/reactingMultiphaseCloud.C
 
 
 /* Cloud container/injection mechanisms */
-clouds/derived/basicKinematicCloud/basicKinematicCloud.C
-clouds/derived/basicThermoCloud/basicThermoCloud.C
-/* clouds/derived/basicReactingCloud/basicReactingCloud.C */
-/* clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.C */
-/* clouds/derived/trackedReactingCloud/trackedReactingCloud.C */
+$(DERIVEDCLOUDS)/basicKinematicCloud/basicKinematicCloud.C
+$(DERIVEDCLOUDS)/basicThermoCloud/basicThermoCloud.C
+$(DERIVEDCLOUDS)/BasicReactingCloud/defineBasicReactingCloud.C
+$(DERIVEDCLOUDS)/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
+$(DERIVEDCLOUDS)/BasicTrackedReactingCloud/defineBasicTrackedReactingCloud.C
 
 
 /* kinematic parcel sub-models */
 KINEMATICPARCEL=$(DERIVEDPARCELS)/basicKinematicParcel
+$(KINEMATICPARCEL)/basicKinematicParcel.C
 $(KINEMATICPARCEL)/defineBasicKinematicParcel.C
 $(KINEMATICPARCEL)/submodels/makeBasicKinematicParcelDispersionModels.C
 $(KINEMATICPARCEL)/submodels/makeBasicKinematicParcelDragModels.C
@@ -38,6 +39,7 @@ $(KINEMATICPARCEL)/submodels/makeBasicKinematicParcelPostProcessingModels.C
 
 /* thermo parcel sub-models */
 THERMOPARCEL=$(DERIVEDPARCELS)/basicThermoParcel
+$(THERMOPARCEL)/basicThermoParcel.C
 $(THERMOPARCEL)/defineBasicThermoParcel.C
 $(THERMOPARCEL)/submodels/makeBasicThermoParcelDispersionModels.C
 $(THERMOPARCEL)/submodels/makeBasicThermoParcelDragModels.C
@@ -50,42 +52,19 @@ $(THERMOPARCEL)/submodels/makeBasicThermoParcelPostProcessingModels.C
 /* reacting parcel sub-models */
 REACTINGPARCEL=$(DERIVEDPARCELS)/BasicReactingParcel
 $(REACTINGPARCEL)/defineBasicReactingParcel.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelCompositionModels.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelDispersionModels.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelDragModels.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelHeatTransferModels.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelInjectionModels.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelPatchInteractionModels.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelPhaseChangeModels.C
-$(REACTINGPARCEL)/submodels/makeBasicReactingParcelPostProcessingModels.C
-
-
-/* reacting multiphase parcel sub-models */
-REACTINGMPPARCEL=$(DERIVEDPARCELS)/BasicReactingMultiphaseParcel
-$(REACTINGMPPARCEL)/defineBasicReactingMultiphaseParcel.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDragModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
-$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelSubmodels.C
 
 
 /* tracked reacting parcel sub-models */
 TRACKEDREACTINGPARCEL=$(DERIVEDPARCELS)/BasicTrackedReactingParcel
 $(TRACKEDREACTINGPARCEL)/defineTrackedReactingParcel.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelCompositionModels.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelDispersionModels.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelDragModels.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelHeatTransferModels.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelInjectionModels.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelPatchInteractionModels.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelPhaseChangeModels.C
-$(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelPostProcessingModels.C
+$(TRACKEDREACTINGPARCEL)/submodels/makeBasicTrackedReactingParcelSubmodels.C
+
+
+/* reacting multiphase parcel sub-models */
+/*REACTINGMPPARCEL=$(DERIVEDPARCELS)/BasicReactingMultiphaseParcel
+$(REACTINGMPPARCEL)/defineBasicReactingMultiphaseParcel.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseSubmodels.C
 
 
 /* bolt-on models */
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
index 1ac2fb9af5e33fc51182937ae945bf66ecbc7af3..d0296c0ea0b879bd854df47320fe2d1abf44c0a1 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
@@ -47,8 +47,6 @@ SourceFiles
 #include "ThermoCloud.H"
 #include "reactingCloud.H"
 
-#include "ReactingCloudThermoTypes.H"
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/defineBasicReactingCloud.C
similarity index 80%
rename from src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
rename to src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/defineBasicReactingCloud.C
index ef686198d6a9095c89f562ace36f59c72339769d..ca5b9e809062d6fac2137e44c146fe5c59beea21 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/defineBasicReactingCloud.C
@@ -24,24 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "SinglePhaseMixture.H"
+#include "createReactingCloudTypes.H"
+#include "BasicReactingCloud.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    makeCompositionModel(ReactingCloud<bReactingParcel>);
-
-    // Add instances of composition model to the table
-    makeCompositionModelType
-    (
-        SinglePhaseMixture,
-        ReactingCloud,
-        bReactingParcel
-    );
+    createReactingCloudType(BasicReactingCloud);
 };
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
index f1d94e4d8c8d5aa2640b59294ac41d291b124eaf..cfabcd692748e8ff174cff3b6117738feb1c1a64 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
@@ -55,7 +55,7 @@ class BasicReactingMultiphaseCloud;
 template<class ThermoType>
 class BasicReactingMultiphaseCloud
 :
-    public ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>
+    public ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >
 {
     // Private Member Functions
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
similarity index 80%
rename from src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
rename to src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
index 6d51de8d7d062079f05dcf8f79b36fe08f3e4844..24030e268608f32e63250ec68a718af89054127a 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
@@ -24,21 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "NoDrag.H"
-#include "SphereDrag.H"
+#include "createReactingCloudTypes.H"
+#include "BasicReactingMultiphaseCloud.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<bReactingParcel>);
-
-    // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, bReactingParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, bReactingParcel);
+    createReactingCloudType(BasicReactingMultiphaseCloud);
 };
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
index ecd0a267d846c0e01e03959730c1f798fce3de09..2b20183eca9ed20a9fc61c2e9d1f87cc503ad2cd 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
@@ -24,12 +24,12 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingCloud.H"
+#include "BasicTrackedReactingCloud.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-Foam::trackedReactingCloud<ThermoType>::trackedReactingCloud
+Foam::BasicTrackedReactingCloud<ThermoType>::BasicTrackedReactingCloud
 (
     const word& cloudName,
     const volScalarField& rho,
@@ -56,14 +56,14 @@ Foam::trackedReactingCloud<ThermoType>::trackedReactingCloud
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-Foam::trackedReactingCloud<ThermoType>::~trackedReactingCloud()
+Foam::BasicTrackedReactingCloud<ThermoType>::~BasicTrackedReactingCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ThermoType>
-void Foam::trackedReactingCloud<ThermoType>::writeFields() const
+void Foam::BasicTrackedReactingCloud<ThermoType>::writeFields() const
 {
     BasicTrackedReactingParcel<ThermoType>::writeFields(*this);
 }
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
index 87d22a9647368c3bbf64118fcfe63810f6f682f0..7c92e61276ae7d5cb13b5415f537874a6579da98 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
@@ -23,18 +23,18 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::trackedReactingCloud
+    Foam::BasicTrackedReactingCloud
 
 Description
     Reacting cloud templated on the reacting parcel
 
 SourceFiles
-    trackedReactingCloud.C
+    BasicTrackedReactingCloud.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef trackedReactingCloud_H
-#define trackedReactingCloud_H
+#ifndef BasicTrackedReactingCloud_H
+#define BasicTrackedReactingCloud_H
 
 #include "ReactingCloud.H"
 #include "BasicTrackedReactingParcel.H"
@@ -46,36 +46,36 @@ namespace Foam
 
 // Forward declaration of classes
 template<class ThermoType>
-class trackedReactingCloud;
+class BasicTrackedReactingCloud;
 
 /*---------------------------------------------------------------------------*\
-                    Class trackedReactingCloud Declaration
+                 Class BasicTrackedReactingCloud Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ThermoType>
-class trackedReactingCloud
+class BasicTrackedReactingCloud
 :
     public ReactingCloud<BasicTrackedReactingParcel<ThermoType> >
 {
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        trackedReactingCloud(const trackedReactingCloud&);
+        BasicTrackedReactingCloud(const BasicTrackedReactingCloud&);
 
         //- Disallow default bitwise assignment
-        void operator=(const trackedReactingCloud&);
+        void operator=(const BasicTrackedReactingCloud&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("trackedReactingCloud");
+    TypeName("BasicTrackedReactingCloud");
 
 
     // Constructors
 
         //- Construct given carrier gas fields
-        trackedReactingCloud
+        BasicTrackedReactingCloud
         (
             const word& cloudName,
             const volScalarField& rho,
@@ -87,7 +87,7 @@ public:
 
 
     //- Destructor
-    ~trackedReactingCloud();
+    ~BasicTrackedReactingCloud();
 
 
     // Member Functions
@@ -104,7 +104,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-    #include "trackedReactingCloud.C"
+    #include "BasicTrackedReactingCloud.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/defineBasicTrackedReactingCloud.C
similarity index 80%
rename from src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H
rename to src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/defineBasicTrackedReactingCloud.C
index 9a30c248c7739fd3e9edf86785001940a9da79b2..6f6700f198dde3bc183e00822f3d2b1b963ffd50 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/defineBasicTrackedReactingCloud.C
@@ -24,22 +24,15 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicTrackedReactingParcelTypes_H
-#define basicTrackedReactingParcelTypes_H
-
-#include "BasicTrackedReactingParcel.H"
-#include "ReactingCloudThermoTypes.H"
+#include "createReactingCloudTypes.H"
+#include "BasicTrackedReactingCloud.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    typedef BasicTrackedReactingParcel<specieReactingProperties>
-        bTrackedReactingParcel;
+    createReactingCloudType(BasicTrackedReactingCloud);
 };
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H b/src/lagrangian/intermediate/clouds/include/createReactingCloudTypes.H
similarity index 69%
rename from src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H
rename to src/lagrangian/intermediate/clouds/include/createReactingCloudTypes.H
index d693682796b74c5143bd8f6c87d8df9240222375..c298abd044828a1871cba3ae641b5f784e73da52 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H
+++ b/src/lagrangian/intermediate/clouds/include/createReactingCloudTypes.H
@@ -24,19 +24,23 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingMultiphaseParcelTypes_H
-#define basicReactingMultiphaseParcelTypes_H
+#ifndef createReactingCloudTypes_H
+#define createReactingCloudTypes_H
 
-#include "BasicReactingMultiphaseParcel.H"
-#include "ReactingCloudThermoTypes.H"
+#include "reactingThermoTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-namespace Foam
-{
-    typedef BasicReactingMultiphaseParcel<specieReactingProperties>
-        bReactingMultiphaseParcel;
-};
+#define createReactingCloudType(CloudType)                                    \
+                                                                              \
+    createReactingCloudThermoType(CloudType, specieConstProperties);          \
+    createReactingCloudThermoType(CloudType, specieReactingProperties);
+
+
+#define createReactingCloudThermoType(CloudType, ThermoType)                  \
+                                                                              \
+    defineTemplateTypeNameAndDebug(CloudType<ThermoType>, 0);
+
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
index d022f38f20ab544dbe8dcbb723f2232ad878c526..12df07fbbc6c3d3c160f0f5f458a0a5d6613fa37 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
@@ -24,79 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "ReactingMultiphaseCloud.H"
+#include "createReactingMultiphaseParcelTypes.H"
+#include "BasicReactingMultiphaseParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(bReactingMultiphaseParcel, 0);
-
-    defineTemplateTypeNameAndDebug(Particle<bReactingMultiphaseParcel>, 0);
-
-    defineTemplateTypeNameAndDebug(Cloud<bReactingMultiphaseParcel>, 0);
-
-    defineParcelTypeNameAndDebug
-    (
-        KinematicParcel<bReactingMultiphaseParcel>,
-        0
-    );
-    defineTemplateTypeNameAndDebug
-    (
-        KinematicParcel<bReactingMultiphaseParcel>,
-        0
-    );
-    defineParcelTypeNameAndDebug
-    (
-        ThermoParcel<bReactingMultiphaseParcel>,
-        0
-    );
-    defineTemplateTypeNameAndDebug
-    (
-        ThermoParcel<bReactingMultiphaseParcel>,
-        0
-    );
-    defineParcelTypeNameAndDebug
-    (
-        ReactingParcel<bReactingMultiphaseParcel>,
-        0
-    );
-    defineTemplateTypeNameAndDebug
-    (
-        ReactingParcel<bReactingMultiphaseParcel>,
-        0
-    );
-    defineParcelTypeNameAndDebug
-    (
-        ReactingMultiphaseParcel<bReactingMultiphaseParcel>,
-        0
-    );
-    defineTemplateTypeNameAndDebug
-    (
-        ReactingMultiphaseParcel<bReactingMultiphaseParcel>,
-        0
-    );
-
-    defineParcelTypeNameAndDebug
-    (
-        KinematicCloud<bReactingMultiphaseParcel>,
-        0
-    );
-    defineParcelTypeNameAndDebug
-    (
-        ThermoCloud<bReactingMultiphaseParcel>,
-        0
-    );
-    defineParcelTypeNameAndDebug
-    (
-        ReactingCloud<bReactingMultiphaseParcel>,
-        0
-    );
-    defineParcelTypeNameAndDebug
-    (
-        ReactingMultiphaseCloud<bReactingMultiphaseParcel>,
-        0
-    );
-
+    createReactingMultiphaseParcelType(BasicReactingMultiphaseParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
deleted file mode 100644
index c15640979320be5de510ed227c457516aea957b8..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "SingleMixtureFraction.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeCompositionModel
-    (
-        ReactingCloud<bReactingMultiphaseParcel>
-    );
-
-    // Add instances of composition model to the table
-    makeCompositionModelType
-    (
-        SingleMixtureFraction,
-        ReactingCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
deleted file mode 100644
index 8bd2d5b9610e7d07c91edf8f3a261425a4faf9a2..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
+++ /dev/null
@@ -1,65 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "ReactingMultiphaseCloud.H"
-
-#include "NoDevolatilisation.H"
-#include "ConstantRateDevolatilisation.H"
-#include "SingleKineticRateDevolatilisation.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeDevolatilisationModel
-    (
-        ReactingMultiphaseCloud<bReactingMultiphaseParcel>
-    );
-
-    // Add instances of devolatilisation model to the table
-    makeDevolatilisationModelType
-    (
-        NoDevolatilisation,
-        ReactingMultiphaseCloud,
-        bReactingMultiphaseParcel
-    );
-    makeDevolatilisationModelType
-    (
-        ConstantRateDevolatilisation,
-        ReactingMultiphaseCloud,
-        bReactingMultiphaseParcel
-    );
-    makeDevolatilisationModelType
-    (
-        SingleKineticRateDevolatilisation,
-        ReactingMultiphaseCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
deleted file mode 100644
index 9cda16d3f4b21eddd7fac850466b2cff66f4c9af..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "NoDrag.H"
-#include "SphereDrag.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeDragModel(KinematicCloud<bReactingMultiphaseParcel>);
-
-    // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, bReactingMultiphaseParcel);
-    makeDragModelType
-    (
-        SphereDrag,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
deleted file mode 100644
index 03ebbf29f55b5a2f73f319291e0e9d0b068220d7..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
+++ /dev/null
@@ -1,69 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "ConeInjection.H"
-#include "FieldActivatedInjection.H"
-#include "ManualInjection.H"
-#include "NoInjection.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeInjectionModel(KinematicCloud<bReactingMultiphaseParcel>);
-
-    // Add instances of injection model to the table
-    makeInjectionModelType
-    (
-        ConeInjection,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makeInjectionModelType
-    (
-        FieldActivatedInjection,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makeInjectionModelType
-    (
-        ManualInjection,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makeInjectionModelType
-    (
-        NoInjection,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
deleted file mode 100644
index 67f00c34e6c5977ed5de6d5a4587d4a6c189455c..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
+++ /dev/null
@@ -1,62 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "LocalInteraction.H"
-#include "Rebound.H"
-#include "StandardWallInteraction.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePatchInteractionModel(KinematicCloud<bReactingMultiphaseParcel>);
-
-    // Add instances of patch interaction model to the table
-    makePatchInteractionModelType
-    (
-        LocalInteraction,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makePatchInteractionModelType
-    (
-        Rebound,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makePatchInteractionModelType
-    (
-        StandardWallInteraction,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
deleted file mode 100644
index 2fb67a6f83109f39c7406651e16e363613ff5aa6..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
+++ /dev/null
@@ -1,58 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "NoPhaseChange.H"
-#include "LiquidEvaporation.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePhaseChangeModel
-    (
-        ReactingCloud<bReactingMultiphaseParcel>
-    );
-
-    // Add instances of phase change model to the table
-    makePhaseChangeModelType
-    (
-        NoPhaseChange,
-        ReactingCloud,
-        bReactingMultiphaseParcel
-    );
-    makePhaseChangeModelType
-    (
-        LiquidEvaporation,
-        ReactingCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
deleted file mode 100644
index 96dfb6c6106c437f79dee3367f04e81f6c13d239..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "NoPostProcessing.H"
-#include "StandardPostProcessing.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePostProcessingModel(KinematicCloud<bReactingMultiphaseParcel>);
-
-    // Add instances of post-processing model to the table
-    makePostProcessingModelType
-    (
-        NoPostProcessing,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makePostProcessingModelType
-    (
-        StandardPostProcessing,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..c5a665fe0174872acdcae29bc1e29e8ad308b721
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSubmodels.C
@@ -0,0 +1,73 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "BasicReactingMultiphaseParcel.H"
+
+#include "makeReactingParcelDispersionModels.H"
+#include "makeReactingParcelDragModels.H"
+#include "makeReactingParcelInjectionModels.H"
+#include "makeReactingParcelPatchInteractionModels.H"
+#include "makeReactingParcelPostProcessingModels.H"
+
+#include "makeReactingParcelHeatTransferModels.H"
+
+#include "makeReactingMultiphaseParcelCompositionModels.H"
+#include "makeReactingParcelPhaseChangeModels.H"
+
+#include "makeReactingMultiphaseParcelDevolatilisationModels.H"
+#include "makeReactingMultiphaseParcelSurfaceReactionModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // Kinematic sub-models
+    createReactingDispersionModelType(BasicReactingMultiphaseParcel);
+    createReactingDragModelType(BasicReactingMultiphaseParcel);
+    createReactingInjectionModelType(BasicReactingMultiphaseParcel);
+    createReactingPatchInteractionModelType(BasicReactingMultiphaseParcel);
+    createReactingPostProcessingModelType(BasicReactingMultiphaseParcel);
+
+    // Thermo sub-models
+    createReactingHeatTransferModelType(BasicReactingMultiphaseParcel);
+
+    // Reacting sub-models
+    createReactingMultiphaseCompositionModelType(BasicReactingMultiphaseParcel);
+    createReactingPhaseChangeModelType(BasicReactingMultiphaseParcel);
+
+    // Reacting multiphase sub-models
+    createReactingMultiphaseDevolatilisationModelType
+    (
+        BasicReactingMultiphaseParcel
+    );
+    createReactingMultiphaseSurfaceReactionModelType
+    (
+        BasicReactingMultiphaseParcel
+    );
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
deleted file mode 100644
index 779a90c43f6cfb843c988e82f25464ec4b73a541..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "ReactingMultiphaseCloud.H"
-
-#include "NoSurfaceReaction.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeSurfaceReactionModel
-    (
-        ReactingMultiphaseCloud<bReactingMultiphaseParcel>
-    );
-
-    // Add instances of surface reaction model to the table
-    makeSurfaceReactionModelType
-    (
-        NoSurfaceReaction,
-        ReactingMultiphaseCloud,
-        bReactingMultiphaseParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelCompositionModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelCompositionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..9f7a15cd43a12d8907449c7bad5a7b78de032150
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelCompositionModels.H
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingMultiphaseParcelCompositionModels_H
+#define makeReactingMultiphaseParcelCompositionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "ReactingCloud.H"
+
+#include "SingleMixtureFraction.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingMultiphaseCompositionModelType(ParcelType)              \
+                                                                              \
+    createReactingMultiphaseCompositionModelThermoType                        \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createReactingMultiphaseCompositionModelThermoType                        \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingMultiphaseCompositionModelThermoType(ParcelType, ThermoType)\
+                                                                              \
+    makeCompositionModel(ReactingCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    makeCompositionModelThermoType                                            \
+    (                                                                         \
+        SingleMixtureFraction,                                                \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelDevolatilisationModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelDevolatilisationModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..5a3a32e16b250b439d88de09265770882155f655
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelDevolatilisationModels.H
@@ -0,0 +1,89 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingMultiphaseParcelDevolatilisationModels_H
+#define makeReactingMultiphaseParcelDevolatilisationModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "ReactingMultiphaseCloud.H"
+
+#include "ConstantRateDevolatilisation.H"
+#include "NoDevolatilisation.H"
+#include "SingleKineticRateDevolatilisation.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingMultiphaseDevolatilisationModelType(ParcelType)          \
+                                                                              \
+    createReactingMultiphaseDevolatilisationModelThermoType                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createReactingMultiphaseDevolatilisationModelThermoType                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingMultiphaseDevolatilisationModelThermoType(ParcelType, ThermoType)\
+                                                                              \
+    makeDevolatilisationModel                                                 \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType<ThermoType> >                      \
+    );                                                                        \
+                                                                              \
+    makeDevolatilisationModelThermoType                                       \
+    (                                                                         \
+        ConstantRateDevolatilisation,                                         \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDevolatilisationModelThermoType                                       \
+    (                                                                         \
+        NoDevolatilisation,                                                   \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDevolatilisationModelThermoType                                       \
+    (                                                                         \
+        SingleKineticRateDevolatilisation,                                    \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelSurfaceReactionModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelSurfaceReactionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..bf04b132d6e56bac4872f534f4d64a4c88094deb
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeReactingMultiphaseParcelSurfaceReactionModels.H
@@ -0,0 +1,73 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingMultiphaseParcelSurfaceReactionModels_H
+#define makeReactingMultiphaseParcelSurfaceReactionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "ReactingMultiphaseCloud.H"
+
+#include "NoSurfaceReaction.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingMultiphaseSurfaceReactionModelType(ParcelType)          \
+                                                                              \
+    createReactingMultiphaseSurfaceReactionModelThermoType                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createReactingMultiphaseSurfaceReactionModelThermoType                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingMultiphaseSurfaceReactionModelThermoType(ParcelType, ThermoType)\
+                                                                              \
+    makeSurfaceReactionModel                                                  \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType<ThermoType> >                      \
+    );                                                                        \
+                                                                              \
+    makeSurfaceReactionModelThermoType                                        \
+    (                                                                         \
+        NoSurfaceReaction,                                                    \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
index 6e64dd43ceb95e3eb7df961aad43f260eed5c886..2c2e78630d691b2d398b09cbb32587da5e617e3d 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
@@ -24,7 +24,8 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcelTypes.H"
+#include "createReactingParcelTypes.H"
+#include "BasicReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
deleted file mode 100644
index 81c8562f507713e41094ecda00e04fc1d7234ea9..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
+++ /dev/null
@@ -1,68 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "NoDispersion.H"
-#include "GradientDispersionRAS.H"
-#include "StochasticDispersionRAS.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeDispersionModel(KinematicCloud<bReactingParcel>);
-
-    defineNamedTemplateTypeNameAndDebug
-    (
-        DispersionRASModel<KinematicCloud<bReactingParcel> >,
-        0
-    );
-
-    // Add instances of dispersion model to the table
-    makeDispersionModelType
-    (
-        NoDispersion,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makeDispersionModelType
-    (
-        GradientDispersionRAS,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makeDispersionModelType
-    (
-        StochasticDispersionRAS,
-        KinematicCloud,
-        bReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
deleted file mode 100644
index fbb32db8e4aab95014bbc016a215b24420912d67..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcelTypes.H"
-#include "ThermoCloud.H"
-
-#include "NoHeatTransfer.H"
-#include "RanzMarshall.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeHeatTransferModel(ThermoCloud<bReactingParcel>);
-
-    // Add instances of heat transfer model to the table
-    makeHeatTransferModelType
-    (
-        NoHeatTransfer,
-        ThermoCloud,
-        bReactingParcel
-    );
-    makeHeatTransferModelType
-    (
-        RanzMarshall,
-        ThermoCloud,
-        bReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
deleted file mode 100644
index 7402b25ecc90b1bad5eae4710d529ff0f82eee31..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
+++ /dev/null
@@ -1,76 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "ConeInjection.H"
-#include "FieldActivatedInjection.H"
-#include "ManualInjection.H"
-#include "NoInjection.H"
-#include "ReactingLookupTableInjection.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeInjectionModel(KinematicCloud<bReactingParcel>);
-
-    // Add instances of injection model to the table
-    makeInjectionModelType
-    (
-        ConeInjection,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makeInjectionModelType
-    (
-        FieldActivatedInjection,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makeInjectionModelType
-    (
-        ManualInjection,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makeInjectionModelType
-    (
-        NoInjection,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makeInjectionModelType
-    (
-        ReactingLookupTableInjection,
-        KinematicCloud,
-        bReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
deleted file mode 100644
index f0abeae98b160540ff12f96f1a240d0cde3e7ec3..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
+++ /dev/null
@@ -1,62 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "LocalInteraction.H"
-#include "Rebound.H"
-#include "StandardWallInteraction.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePatchInteractionModel(KinematicCloud<bReactingParcel>);
-
-    // Add instances of patch interaction model to the table
-    makePatchInteractionModelType
-    (
-        LocalInteraction,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makePatchInteractionModelType
-    (
-        Rebound,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makePatchInteractionModelType
-    (
-        StandardWallInteraction,
-        KinematicCloud,
-        bReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
deleted file mode 100644
index c0190acefae1ede56e42897dc739a4bf3ab7baf8..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "NoPhaseChange.H"
-#include "LiquidEvaporation.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePhaseChangeModel(ReactingCloud<bReactingParcel>);
-
-    // Add instances of phase change model to the table
-    makePhaseChangeModelType
-    (
-        NoPhaseChange,
-        ReactingCloud,
-        bReactingParcel
-    );
-    makePhaseChangeModelType
-    (
-        LiquidEvaporation,
-        ReactingCloud,
-        bReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
deleted file mode 100644
index cd8bd46b23409eb31426c216be0a436d2eeca76c..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "NoPostProcessing.H"
-#include "StandardPostProcessing.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePostProcessingModel(KinematicCloud<bReactingParcel>);
-
-    // Add instances of post-processing model to the table
-    makePostProcessingModelType
-    (
-        NoPostProcessing,
-        KinematicCloud,
-        bReactingParcel
-    );
-    makePostProcessingModelType
-    (
-        StandardPostProcessing,
-        KinematicCloud,
-        bReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelSubmodels.C
similarity index 58%
rename from src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
rename to src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelSubmodels.C
index 6de7b5da1adee0c7375baf90d444b1aa03234749..18dcc54fd0975fb5fa5d361a1e3640869ef6262c 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelSubmodels.C
@@ -24,44 +24,36 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcelTypes.H"
-#include "KinematicCloud.H"
+#include "BasicReactingParcel.H"
 
-#include "NoDispersion.H"
-#include "GradientDispersionRAS.H"
-#include "StochasticDispersionRAS.H"
+#include "makeReactingParcelDispersionModels.H"
+#include "makeReactingParcelDragModels.H"
+#include "makeReactingParcelInjectionModels.H"
+#include "makeReactingParcelPatchInteractionModels.H"
+#include "makeReactingParcelPostProcessingModels.H"
+
+#include "makeReactingParcelHeatTransferModels.H"
+
+#include "makeReactingParcelCompositionModels.H"
+#include "makeReactingParcelPhaseChangeModels.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    makeDispersionModel(KinematicCloud<bReactingMultiphaseParcel>);
-
-    defineNamedTemplateTypeNameAndDebug
-    (
-        DispersionRASModel<KinematicCloud<bReactingMultiphaseParcel> >,
-        0
-    );
-
-    // Add instances of dispersion model to the table
-    makeDispersionModelType
-    (
-        NoDispersion,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makeDispersionModelType
-    (
-        GradientDispersionRAS,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
-    makeDispersionModelType
-    (
-        StochasticDispersionRAS,
-        KinematicCloud,
-        bReactingMultiphaseParcel
-    );
+    // Kinematic sub-models
+    createReactingDispersionModelType(BasicReactingParcel);
+    createReactingDragModelType(BasicReactingParcel);
+    createReactingInjectionModelType(BasicReactingParcel);
+    createReactingPatchInteractionModelType(BasicReactingParcel);
+    createReactingPostProcessingModelType(BasicReactingParcel);
+
+    // Thermo sub-models
+    createReactingHeatTransferModelType(BasicReactingParcel);
+
+    // Reacting sub-models
+    createReactingCompositionModelType(BasicReactingParcel);
+    createReactingPhaseChangeModelType(BasicReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelCompositionModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelCompositionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..2f6abe0926a5e87851ed612fde2f0b88ca0d19c4
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelCompositionModels.H
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelCompositionModels_H
+#define makeReactingParcelCompositionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "ReactingCloud.H"
+
+#include "SinglePhaseMixture.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingCompositionModelType(ParcelType)                        \
+                                                                              \
+    createReactingCompositionModelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createReactingCompositionModelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingCompositionModelThermoType(ParcelType, ThermoType)      \
+                                                                              \
+    makeCompositionModel(ReactingCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    makeCompositionModelThermoType                                            \
+    (                                                                         \
+        SinglePhaseMixture,                                                   \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelDispersionModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelDispersionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..23827d50d6336a1674d566a0931992cc1b95483e
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelDispersionModels.H
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelDispersionModels_H
+#define makeReactingParcelDispersionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "KinematicCloud.H"
+
+#include "NoDispersion.H"
+#include "GradientDispersionRAS.H"
+#include "StochasticDispersionRAS.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingDispersionModelType(ParcelType)                         \
+                                                                              \
+    createReactingDispersionModelThermoType                                   \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+                                                                              \
+    createReactingDispersionModelThermoType                                   \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingDispersionModelThermoType(ParcelType, ThermoType)       \
+                                                                              \
+    makeDispersionModel(KinematicCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DispersionRASModel<KinematicCloud<ParcelType<ThermoType> > >,         \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    makeDispersionModelThermoType                                             \
+    (                                                                         \
+        NoDispersion,                                                         \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDispersionModelThermoType                                             \
+    (                                                                         \
+        GradientDispersionRAS,                                                \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDispersionModelThermoType                                             \
+    (                                                                         \
+        StochasticDispersionRAS,                                              \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelDragModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelDragModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..d919375f8ce0fca53d8f0c3d5560608bed64753f
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelDragModels.H
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelDragModels_H
+#define makeReactingParcelDragModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "KinematicCloud.H"
+
+#include "NoDrag.H"
+#include "SphereDrag.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingDragModelType(ParcelType)                               \
+                                                                              \
+    createReactingDragModelThermoType                                         \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createReactingDragModelThermoType                                         \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingDragModelThermoType(ParcelType, ThermoType)             \
+                                                                              \
+    makeDragModel(KinematicCloud<ParcelType<ThermoType> >);                   \
+                                                                              \
+    makeDragModelThermoType                                                   \
+    (                                                                         \
+        NoDrag,                                                               \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDragModelThermoType                                                   \
+    (                                                                         \
+        SphereDrag,                                                           \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelHeatTransferModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelHeatTransferModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..021efc11f45b302fbd2435652538a85ad64be9a2
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelHeatTransferModels.H
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelHeatTransferModels_H
+#define makeReactingParcelHeatTransferModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "ThermoCloud.H"
+
+#include "NoHeatTransfer.H"
+#include "RanzMarshall.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingHeatTransferModelType(ParcelType)                       \
+                                                                              \
+    createReactingHeatTransferModelThermoType                                 \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createReactingHeatTransferModelThermoType                                 \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingHeatTransferModelThermoType(ParcelType, ThermoType)     \
+                                                                              \
+    makeHeatTransferModel(ThermoCloud<ParcelType<ThermoType> >);              \
+                                                                              \
+    makeHeatTransferModelThermoType                                           \
+    (                                                                         \
+        NoHeatTransfer,                                                       \
+        ThermoCloud,                                                          \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeHeatTransferModelThermoType                                           \
+    (                                                                         \
+        RanzMarshall,                                                         \
+        ThermoCloud,                                                          \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelInjectionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..4873eac32cb84a2b626670320ee5cb0cd97aebad
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelInjectionModels.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelInjectionModels_H
+#define makeReactingParcelInjectionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "KinematicCloud.H"
+
+#include "ConeInjection.H"
+#include "FieldActivatedInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
+#include "ReactingLookupTableInjection.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingInjectionModelType(ParcelType)                          \
+                                                                              \
+    createReactingInjectionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+                                                                              \
+    createReactingInjectionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingInjectionModelThermoType(ParcelType, ThermoType)        \
+                                                                              \
+    makeInjectionModel(KinematicCloud<ParcelType<ThermoType> >);              \
+                                                                              \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ConeInjection,                                                        \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        FieldActivatedInjection,                                              \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ManualInjection,                                                      \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        NoInjection,                                                          \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ReactingLookupTableInjection,                                         \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPatchInteractionModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPatchInteractionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..74f4470045b0ce99cdf4606acfe0df9c050037d6
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPatchInteractionModels.H
@@ -0,0 +1,87 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelPatchInteractionModels_H
+#define makeReactingParcelPatchInteractionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "KinematicCloud.H"
+
+#include "LocalInteraction.H"
+#include "Rebound.H"
+#include "StandardWallInteraction.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingPatchInteractionModelType(ParcelType)                   \
+                                                                              \
+    createReactingPatchInteractionModelThermoType                             \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+                                                                              \
+    createReactingPatchInteractionModelThermoType                             \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingPatchInteractionModelThermoType(ParcelType, ThermoType) \
+                                                                              \
+    makePatchInteractionModel(KinematicCloud<ParcelType<ThermoType> >);       \
+                                                                              \
+    makePatchInteractionModelThermoType                                       \
+    (                                                                         \
+        LocalInteraction,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePatchInteractionModelThermoType                                       \
+    (                                                                         \
+        Rebound,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePatchInteractionModelThermoType                                       \
+    (                                                                         \
+        StandardWallInteraction,                                              \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPhaseChangeModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPhaseChangeModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..19e4810b7437c79cc3a230c152bf15cdfb4c1821
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPhaseChangeModels.H
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelPhaseChangeModels_H
+#define makeReactingParcelPhaseChangeModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "ReactingCloud.H"
+
+#include "NoPhaseChange.H"
+#include "LiquidEvaporation.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingPhaseChangeModelType(ParcelType)                        \
+                                                                              \
+    createReactingPhaseChangeModelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+                                                                              \
+    createReactingPhaseChangeModelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingPhaseChangeModelThermoType(ParcelType, ThermoType)      \
+                                                                              \
+    makePhaseChangeModel(ReactingCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    makePhaseChangeModelThermoType                                            \
+    (                                                                         \
+        NoPhaseChange,                                                        \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePhaseChangeModelThermoType                                            \
+    (                                                                         \
+        LiquidEvaporation,                                                    \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPostProcessingModels.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPostProcessingModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..b4f3b8e56fa42ab85505237a928c2fc805812a2f
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeReactingParcelPostProcessingModels.H
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelPostProcessingModels_H
+#define makeReactingParcelPostProcessingModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "reactingThermoTypes.H"
+#include "KinematicCloud.H"
+
+#include "NoPostProcessing.H"
+#include "StandardPostProcessing.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingPostProcessingModelType(ParcelType)                     \
+                                                                              \
+    createReactingPostProcessingModelThermoType                               \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+                                                                              \
+    createReactingPostProcessingModelThermoType                               \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingPostProcessingModelThermoType(ParcelType, ThermoType)   \
+                                                                              \
+    makePostProcessingModel(KinematicCloud<ParcelType<ThermoType> >);         \
+                                                                              \
+    makePostProcessingModelThermoType                                         \
+    (                                                                         \
+        NoPostProcessing,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePostProcessingModelThermoType                                         \
+    (                                                                         \
+        StandardPostProcessing,                                               \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
index 9d7660fab74cea1ba93b7388c9e81d81f1d7e3e0..2ffcf453b6ad2962c155cbf32bde0d2d02c77e25 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
@@ -24,35 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicTrackedReactingParcelTypes.H"
-#include "BasicReactingCloud.H"
+#include "createTrackedReactingParcelTypes.H"
+#include "BasicTrackedReactingParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(bTrackedReactingParcel, 0);
-    defineTemplateTypeNameAndDebug(Particle<bTrackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(Cloud<bTrackedReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicParcel<bTrackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(KinematicParcel<bTrackedReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoParcel<bTrackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ThermoParcel<bTrackedReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingParcel<bTrackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingParcel<bTrackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug
-    (
-        TrackedReactingParcel<bTrackedReactingParcel>,
-        0
-    );
-
-    defineParcelTypeNameAndDebug(KinematicCloud<bTrackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<bTrackedReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ThermoCloud<bTrackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ThermoCloud<bTrackedReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ReactingCloud<bTrackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ReactingCloud<bTrackedReactingParcel>, 0);
+    createTrackedReactingParcelType(BasicTrackedReactingParcel);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeBasicTrackedReactingParcelSubmodels.C
similarity index 57%
rename from src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
rename to src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeBasicTrackedReactingParcelSubmodels.C
index 358da8e2e2116a6afea515cd0bc2bb07b258b65f..e81e981f99864e36dcd4352b0c16eae1c30cbcf5 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeBasicTrackedReactingParcelSubmodels.C
@@ -24,22 +24,37 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicTrackedReactingParcelTypes.H"
-#include "KinematicCloud.H"
+#include "BasicTrackedReactingParcel.H"
 
-#include "NoDrag.H"
-#include "SphereDrag.H"
+#include "makeReactingParcelDispersionModels.H"
+#include "makeReactingParcelDragModels.H"
+#include "makeReactingParcelInjectionModels.H"
+#include "makeReactingParcelPatchInteractionModels.H"
+#include "makeReactingParcelPostProcessingModels.H"
+
+#include "makeReactingParcelHeatTransferModels.H"
+
+#include "makeReactingParcelCompositionModels.H"
+#include "makeReactingParcelPhaseChangeModels.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<bTrackedReactingParcel>);
-
-    // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, bTrackedReactingParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, bTrackedReactingParcel);
-}
+    // Kinematic sub-models
+    createReactingDispersionModelType(BasicTrackedReactingParcel);
+    createReactingDragModelType(BasicTrackedReactingParcel);
+    createReactingInjectionModelType(BasicTrackedReactingParcel);
+    createReactingPatchInteractionModelType(BasicTrackedReactingParcel);
+    createReactingPostProcessingModelType(BasicTrackedReactingParcel);
+
+    // Thermo sub-models
+    createReactingHeatTransferModelType(BasicTrackedReactingParcel);
+
+    // Reacting sub-models
+    createReactingCompositionModelType(BasicTrackedReactingParcel);
+    createReactingPhaseChangeModelType(BasicTrackedReactingParcel);
+};
 
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
deleted file mode 100644
index e573e7ca36c939359031b8a2138318a249bb7b25..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
+++ /dev/null
@@ -1,48 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicTrackedReactingParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "SinglePhaseMixture.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeCompositionModel(ReactingCloud<bTrackedReactingParcel>);
-
-    // Add instances of composition model to the table
-    makeCompositionModelType
-    (
-        SinglePhaseMixture,
-        ReactingCloud,
-        bTrackedReactingParcel
-    );
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
deleted file mode 100644
index 1858335ca957ec2e1c869ef3336ae43e24d76c28..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
+++ /dev/null
@@ -1,68 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicTrackedReactingParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "NoDispersion.H"
-#include "GradientDispersionRAS.H"
-#include "StochasticDispersionRAS.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeDispersionModel(KinematicCloud<bTrackedReactingParcel>);
-
-    defineNamedTemplateTypeNameAndDebug
-    (
-        DispersionRASModel<KinematicCloud<bTrackedReactingParcel> >,
-        0
-    );
-
-    // Add instances of dispersion model to the table
-    makeDispersionModelType
-    (
-        NoDispersion,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makeDispersionModelType
-    (
-        GradientDispersionRAS,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makeDispersionModelType
-    (
-        StochasticDispersionRAS,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
deleted file mode 100644
index 7dfe9a3131ee71290fbe0174a99d897662c1e0c7..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicTrackedReactingParcelTypes.H"
-#include "ThermoCloud.H"
-
-#include "NoHeatTransfer.H"
-#include "RanzMarshall.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeHeatTransferModel(ThermoCloud<bTrackedReactingParcel>);
-
-    // Add instances of heat transfer model to the table
-    makeHeatTransferModelType
-    (
-        NoHeatTransfer,
-        ThermoCloud,
-        bTrackedReactingParcel
-    );
-    makeHeatTransferModelType
-    (
-        RanzMarshall,
-        ThermoCloud,
-        bTrackedReactingParcel
-    );
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
deleted file mode 100644
index 28083e2973aa85387b358be680ab26da49421252..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
+++ /dev/null
@@ -1,76 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicTrackedReactingParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "ConeInjection.H"
-#include "FieldActivatedInjection.H"
-#include "ManualInjection.H"
-#include "NoInjection.H"
-#include "ReactingLookupTableInjection.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makeInjectionModel(KinematicCloud<bTrackedReactingParcel>);
-
-    // Add instances of injection model to the table
-    makeInjectionModelType
-    (
-        ConeInjection,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makeInjectionModelType
-    (
-        FieldActivatedInjection,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makeInjectionModelType
-    (
-        ManualInjection,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makeInjectionModelType
-    (
-        NoInjection,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makeInjectionModelType
-    (
-        ReactingLookupTableInjection,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
deleted file mode 100644
index 15dd56ee3dae685911697f6ea870795247b34144..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
+++ /dev/null
@@ -1,62 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicTrackedReactingParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "LocalInteraction.H"
-#include "Rebound.H"
-#include "StandardWallInteraction.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePatchInteractionModel(KinematicCloud<bTrackedReactingParcel>);
-
-    // Add instances of patch interaction model to the table
-    makePatchInteractionModelType
-    (
-        LocalInteraction,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makePatchInteractionModelType
-    (
-        Rebound,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makePatchInteractionModelType
-    (
-        StandardWallInteraction,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
deleted file mode 100644
index 533cf64dc9c9967047d544c23860e58b5b159800..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicTrackedReactingParcelTypes.H"
-#include "ReactingCloud.H"
-
-#include "NoPhaseChange.H"
-#include "LiquidEvaporation.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePhaseChangeModel(ReactingCloud<bTrackedReactingParcel>);
-
-    // Add instances of phase change model to the table
-    makePhaseChangeModelType
-    (
-        NoPhaseChange,
-        ReactingCloud,
-        bTrackedReactingParcel
-    );
-    makePhaseChangeModelType
-    (
-        LiquidEvaporation,
-        ReactingCloud,
-        bTrackedReactingParcel
-    );
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
deleted file mode 100644
index c67cd52a6adeecdb0d1abd2baa013179b4e5ec66..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicTrackedReactingParcelTypes.H"
-#include "KinematicCloud.H"
-
-#include "NoPostProcessing.H"
-#include "StandardPostProcessing.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePostProcessingModel(KinematicCloud<bTrackedReactingParcel>);
-
-    // Add instances of post-processing model to the table
-    makePostProcessingModelType
-    (
-        NoPostProcessing,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-    makePostProcessingModelType
-    (
-        StandardPostProcessing,
-        KinematicCloud,
-        bTrackedReactingParcel
-    );
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/createReactingMultiphaseParcelTypes.H b/src/lagrangian/intermediate/parcels/include/createReactingMultiphaseParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..80e065083d95be8176da45a9ba32f1f61ac62546
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/createReactingMultiphaseParcelTypes.H
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createReactingMultiphaseParcelTypes_H
+#define createReactingMultiphaseParcelTypes_H
+
+#include "makeParcelIOList.H"
+#include "reactingThermoTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingMultiphaseParcelType(ParcelType)                        \
+                                                                              \
+    createReactingMultiphaseParcelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createReactingParcelThermoType                                            \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createReactingMultiphaseParcelThermoType(ParcelType, ThermoType)      \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    makeParcelIOList(ParcelType##ThermoType);                                 \
+                                                                              \
+    defineTemplateTypeNameAndDebug(ParcelType##ThermoType, 0);                \
+    defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0);         \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        KinematicParcel<ParcelType##ThermoType>,                              \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);    \
+    defineTemplateTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);  \
+    defineTemplateTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);\
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0);     \
+    defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);   \
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType##ThermoType>,                      \
+        0                                                                     \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/include/createReactingParcelTypes.H
similarity index 87%
rename from src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H
rename to src/lagrangian/intermediate/parcels/include/createReactingParcelTypes.H
index c64bfc94735430aeb33ed70de005a6c23c0bfac2..3045c3406f4a49152499b0e79b536c0c150a084e 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H
+++ b/src/lagrangian/intermediate/parcels/include/createReactingParcelTypes.H
@@ -24,21 +24,11 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingParcelTypes_H
-#define basicReactingParcelTypes_H
+#ifndef createReactingParcelTypes_H
+#define createReactingParcelTypes_H
 
-#include "BasicReactingParcel.H"
-#include "BasicReactingCloud.H"
-
-#include "ReactingCloudThermoTypes.H"
 #include "makeParcelIOList.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    typedef BasicReactingParcel<specieReactingProperties> bReactingParcel;
-};
+#include "reactingThermoTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -54,8 +44,6 @@ namespace Foam
                                                                               \
     makeParcelIOList(ParcelType##ThermoType);                                 \
                                                                               \
-    defineTemplateTypeNameAndDebug(BasicReactingCloud<ThermoType>, 0);        \
-                                                                              \
     defineTemplateTypeNameAndDebug(ParcelType##ThermoType, 0);                \
     defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0);      \
     defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0);         \
diff --git a/src/lagrangian/intermediate/parcels/include/createTrackedReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/include/createTrackedReactingParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..c374a2dcd96194fcd104389a9022e7b36f443b9b
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/createTrackedReactingParcelTypes.H
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createTrackedReactingParcelTypes_H
+#define createTrackedReactingParcelTypes_H
+
+#include "createReactingParcelTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createTrackedReactingParcelType(ParcelType)                           \
+                                                                              \
+    createTrackedReactingParcelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieConstProperties                                                 \
+    );                                                                        \
+    createTrackedReactingParcelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        specieReactingProperties                                              \
+    );
+
+
+#define createTrackedReactingParcelThermoType(ParcelType, ThermoType)         \
+                                                                              \
+    createReactingParcelThermoType(ParcelType, ThermoType);                   \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        TrackedReactingParcel<ParcelType##ThermoType>,                        \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        TrackedReactingParcel<ParcelType##ThermoType>,                        \
+        0                                                                     \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H b/src/lagrangian/intermediate/parcels/include/reactingThermoTypes.H
similarity index 94%
rename from src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
rename to src/lagrangian/intermediate/parcels/include/reactingThermoTypes.H
index 015f00fb8b1bf8723b4e424ea192bdd840c1728c..5848a52964a78557c55a20393025fd3f49b624ac 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
+++ b/src/lagrangian/intermediate/parcels/include/reactingThermoTypes.H
@@ -26,18 +26,19 @@ Typedefs
     Foam::ReactingCloudThermoTypes
 
 Description
+    Type definitions for available thermo pacakges
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef ReactingCloudThermoTypes_H
-#define ReactingCloudThermoTypes_H
+#ifndef reactingThermoTypes_H
+#define reactingThermoTypes_H
 
-#include "sutherlandTransport.H"
-#include "constTransport.H"
-#include "specieThermo.H"
+#include "perfectGas.H"
 #include "hConstThermo.H"
 #include "janafThermo.H"
-#include "perfectGas.H"
+#include "specieThermo.H"
+#include "sutherlandTransport.H"
+#include "constTransport.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
index 04ff69a9c6a948ead0ae2b43e25adf601aaefba3..2decc76d4b9e68b7335bb78a9c8726521afc8427 100644
--- a/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
+++ b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
@@ -28,9 +28,6 @@ License
 
 #include "basicKinematicParcel.H"
 #include "basicThermoParcel.H"
-#include "basicReactingMultiphaseParcelTypes.H"
-
-#include "basicTrackedReactingParcelTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -38,9 +35,6 @@ namespace Foam
 {
     makeParcelIOList(basicKinematicParcel);
     makeParcelIOList(basicThermoParcel);
-    makeParcelIOList(bReactingMultiphaseParcel);
-
-    makeParcelIOList(bTrackedReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
index 1cf7be00f8deb3df0924eee99d4e2dddba15d78d..46e7d104bfa831ee60c11bdd0daee4e118161c16 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
@@ -160,6 +160,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeDispersionModelThermoType(SS, CloudType, ParcelType, ThermoType)  \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    DispersionModel<CloudType<ParcelType<ThermoType> > >::                    \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H
index 34220baafeb336ea1515676c83fa6617c2b5cf8f..9fae0e9b1100c9b1abfd673a29cb3bd26f47a12f 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H
@@ -155,6 +155,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeDragModelThermoType(SS, CloudType, ParcelType, ThermoType)        \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    DragModel<CloudType<ParcelType<ThermoType> > >::                          \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
index 4b4c07a9f72340716c50fecbea386796f515eed5..b00356a174dd998f7512038b1d4160c677a96c7f 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
@@ -303,21 +303,6 @@ public:
             ) = 0;
 
             virtual bool fullyDescribed() const = 0;
-/*
-            //- Return the velocity of the parcel to introduce at a time
-            virtual vector velocity
-            (
-                const label parcelI,
-                const scalar time
-            ) = 0;
-
-            //- Return the diameter of the parcel to introduce at a time
-            virtual scalar d0
-            (
-                const label parcelI,
-                const scalar time
-            ) const = 0;
-*/
 };
 
 
@@ -343,6 +328,21 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeInjectionModelThermoType(SS, CloudType, ParcelType, ThermoType)   \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    InjectionModel<CloudType<ParcelType<ThermoType> > >::                     \
+        adddictionaryConstructorToTable                                       \
+        <SS<CloudType<ParcelType<ThermoType> > > >                            \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "InjectionModelI.H"
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
index f6cada656f1a1549e93490f73779f06a9bdfbab6..cffca1e2866c5b1752446016af08766ffcbb8bf6 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
@@ -160,6 +160,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makePatchInteractionModelThermoType(SS, CloudType, ParcelType, ThermoType)\
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    PatchInteractionModel<CloudType<ParcelType<ThermoType> > >::              \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
index c450ed07c40fd2c584604c259491752f1e1c167e..4f3d68187b8c1a21c221d84df27e8530e4dc59bc 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
@@ -178,6 +178,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makePostProcessingModelThermoType(SS, CloudType, ParcelType, ThermoType)\
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    PostProcessingModel<CloudType<ParcelType<ThermoType> > >::                \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "PostProcessingModelI.H"
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index 2dac578982bcc000e25e924f4acd99206a7b91b6..6010e3c43fe5f387d14e8108bc6908ed12d2ed29 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -282,13 +282,18 @@ public:
     );
 
 
-#define makeCompositionModelType(SS, CloudType, ParcelType)                   \
+#define makeCompositionModelThermoType(SS, CloudType, ParcelType, ThermoType) \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
                                                                               \
-    CompositionModel<CloudType<ParcelType> >::                                \
-        adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
-            add##SS##CloudType##ParcelType##ConstructorToTable_;
+    CompositionModel<CloudType<ParcelType<ThermoType> > >::                   \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
index 91a727587dc7fe57fa1f4de3ff8852ea42a70f62..695c48c1a70ee5e026af9736c066994e0157986f 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
@@ -141,13 +141,13 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#ifdef NoRepository
-#   include "SinglePhaseMixture.C"
-#endif
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+#   include "SinglePhaseMixture.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
index b8ebc644b01a88e5cb447417d2bb6fcf6f2189e7..2e0f03a3f52510fb46a661246636c0cad340bbc8 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
@@ -168,13 +168,18 @@ public:
     );
 
 
-#define makePhaseChangeModelType(SS, CloudType, ParcelType)                   \
+#define makePhaseChangeModelThermoType(SS, CloudType, ParcelType, ThermoType) \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
                                                                               \
-    PhaseChangeModel<CloudType<ParcelType> >::                                \
-        adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
-            add##SS##CloudType##ParcelType##ConstructorToTable_;
+    PhaseChangeModel<CloudType<ParcelType<ThermoType> > >::                   \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
index bb4e7ddc637f9212e466f011136e66667c73e55e..dd80ba9fd23e73fcefa611fe63914402f38a79aa 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
@@ -160,13 +160,18 @@ public:
     );
 
 
-#define makeDevolatilisationModelType(SS, CloudType, ParcelType)              \
+#define makeDevolatilisationModelThermoType(SS, CloudType, ParcelType, ThermoType)\
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
                                                                               \
-    DevolatilisationModel<CloudType<ParcelType> >::                           \
-        adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
-            add##SS##CloudType##ParcelType##ConstructorToTable_;
+    DevolatilisationModel<CloudType<ParcelType<ThermoType> > >::              \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
index 8f1657f47a497003d8883539756c2a59133987e5..ba1d41825fd5defde8fd7c5facfc902e07a258da 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
@@ -190,6 +190,19 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeSurfaceReactionModelThermoTypeNew(SS, CloudType, ParcelType, ThermoType)\
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    SurfaceReactionModel<CloudType<ParcelType<ThermoType> > >::               \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
index af5a43679c9ad341d4a7cffcdfde19894b845729..9e6ccdc4af2aef0ad1068834081e58768c7439e3 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
@@ -189,6 +189,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeHeatTransferModelThermoType(SS, CloudType, ParcelType, ThermoType)\
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    HeatTransferModel<CloudType<ParcelType<ThermoType> > >::                  \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository