diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H b/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
index b4ec5e40569b90994c4575e1faae10cd304d1c78..cdec69355e36ad1304538c588803e4036c0bb103 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
@@ -29,7 +29,7 @@ forAll(gasProperties, i)
 }
 
 Info<< "\nConstructing reacting cloud" << endl;
-basicReactingCloud parcels
+BasicReactingCloud<specieReactingProperties> parcels
 (
     "reactingCloud1",
     rho,
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index ea57f0da0e3e5bc2155fd8288dd44e71d1af4cf5..89a2e815f3bf7a7f2f83d1df9234d681380ad3f5 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -34,7 +34,7 @@ Description
 #include "fvCFD.H"
 #include "hCombustionThermo.H"
 #include "turbulenceModel.H"
-#include "basicReactingCloud.H"
+#include "BasicReactingCloud.H"
 #include "chemistryModel.H"
 #include "chemistrySolver.H"
 #include "ReactingCloudThermoTypes.H"
diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files
index 350aca8d4629810eecd30f813552d9f14a40c17d..2d8790fd763766c60294bb5f92f6af3764f755ba 100644
--- a/src/lagrangian/intermediate/Make/files
+++ b/src/lagrangian/intermediate/Make/files
@@ -1,13 +1,15 @@
 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
+/* $(DERIVEDPARCELS)/basicReactingParcel/basicReactingParcel.C */
+/* $(DERIVEDPARCELS)/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C */
+/* $(DERIVEDPARCELS)/trackedReactingParcel/trackedReactingParcel.C */
 
+$(BASEPARCELS)/reactingParcel/reactingParcel.C
 
 /* Cloud base classes */
 clouds/baseClasses/kinematicCloud/kinematicCloud.C
@@ -19,9 +21,9 @@ clouds/baseClasses/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
+/* clouds/derived/basicReactingCloud/basicReactingCloud.C */
+/* clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.C */
+/* clouds/derived/trackedReactingCloud/trackedReactingCloud.C */
 
 
 /* kinematic parcel sub-models */
@@ -46,7 +48,7 @@ $(THERMOPARCEL)/submodels/makeBasicThermoParcelPostProcessingModels.C
 
 
 /* reacting parcel sub-models */
-REACTINGPARCEL=$(DERIVEDPARCELS)/basicReactingParcel
+REACTINGPARCEL=$(DERIVEDPARCELS)/BasicReactingParcel
 $(REACTINGPARCEL)/defineBasicReactingParcel.C
 $(REACTINGPARCEL)/submodels/makeBasicReactingParcelCompositionModels.C
 $(REACTINGPARCEL)/submodels/makeBasicReactingParcelDispersionModels.C
@@ -59,7 +61,7 @@ $(REACTINGPARCEL)/submodels/makeBasicReactingParcelPostProcessingModels.C
 
 
 /* reacting multiphase parcel sub-models */
-REACTINGMPPARCEL=$(DERIVEDPARCELS)/basicReactingMultiphaseParcel
+REACTINGMPPARCEL=$(DERIVEDPARCELS)/BasicReactingMultiphaseParcel
 $(REACTINGMPPARCEL)/defineBasicReactingMultiphaseParcel.C
 $(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
 $(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
@@ -74,7 +76,7 @@ $(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionMo
 
 
 /* tracked reacting parcel sub-models */
-TRACKEDREACTINGPARCEL=$(DERIVEDPARCELS)/trackedReactingParcel
+TRACKEDREACTINGPARCEL=$(DERIVEDPARCELS)/BasicTrackedReactingParcel
 $(TRACKEDREACTINGPARCEL)/defineTrackedReactingParcel.C
 $(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelCompositionModels.C
 $(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelDispersionModels.C
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
index cd1fdca7e99577abb71557d1a5e1311e153cdbb3..2252ad4b8be136c281e4bfbc098addff998c2609 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
@@ -68,7 +68,7 @@ Foam::ReactingCloud<ParcelType>::ReactingCloud
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<thermoType>& carrierSpecies
 )
 :
     ThermoCloud<ParcelType>(cloudName, rho, U, g, thermo),
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
index 9b78fbb5ad561cc6ada618dd840b01d1f8b3cf4e..1ac2fb9af5e33fc51182937ae945bf66ecbc7af3 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
@@ -72,6 +72,14 @@ class ReactingCloud
     public ThermoCloud<ParcelType>,
     public reactingCloud
 {
+public:
+
+    //- Type of thermodynamics the cloud was instantiated for
+    typedef typename ParcelType::thermoType thermoType;
+
+
+private:
+
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -92,7 +100,7 @@ protected:
         hCombustionThermo& carrierThermo_;
 
         //- Gas phase properties
-        PtrList<specieReactingProperties>& carrierSpecies_;
+        PtrList<thermoType>& carrierSpecies_;
 
 
         // References to the cloud sub-models
@@ -143,7 +151,7 @@ public:
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<thermoType>& carrierSpecies
         );
 
 
@@ -170,7 +178,7 @@ public:
             inline hCombustionThermo& carrierThermo();
 
             //- Gas phase properties
-            inline const PtrList<specieReactingProperties>& carrierSpecies() const;
+            inline const PtrList<thermoType>& carrierSpecies() const;
 
 
             // Sub-models
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
index d21df2f89d49aae6819d396941d1e23fba7a5049..8dbaf52bbcf81675641d903cc1be6b8e171bde5a 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
@@ -51,7 +51,7 @@ Foam::ReactingCloud<ParcelType>::carrierThermo()
 
 
 template<class ParcelType>
-inline const Foam::PtrList<Foam::specieReactingProperties>&
+inline const Foam::PtrList<typename ParcelType::thermoType>&
 Foam::ReactingCloud<ParcelType>::carrierSpecies() const
 {
     return carrierSpecies_;
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
index 2341e65aa027a792bc4c51e1a4063b0b39417398..015f00fb8b1bf8723b4e424ea192bdd840c1728c 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Typedefs
-    Foam::cloudThermoTypes
+    Foam::ReactingCloudThermoTypes
 
 Description
 
@@ -33,8 +33,6 @@ Description
 #define ReactingCloudThermoTypes_H
 
 #include "sutherlandTransport.H"
-#include "multiComponentMixture.H"
-#include "specie.H"
 #include "constTransport.H"
 #include "specieThermo.H"
 #include "hConstThermo.H"
@@ -45,12 +43,6 @@ Description
 
 namespace Foam
 {
-//    typedef multiComponentMixture<constTransport<specieThermo<hConstThermo<perfectGas> > > > specieProperties;
-//    typedef hConstThermo<perfectGas> specieProperties;
-
-//    typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
-//        specieProperties;
-
     typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
         specieReactingProperties;
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
index 241dfaa65a59b6028282abe60d5ceff1e6e75436..8f86c70859c39cac76ee9afba1332260470c81e0 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
@@ -39,7 +39,7 @@ Foam::ReactingMultiphaseCloud<ParcelType>::ReactingMultiphaseCloud
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<typename ReactingCloud<ParcelType>::thermoType>& carrierSpecies
 )
 :
     ReactingCloud<ParcelType>(cloudName, rho, U, g, thermo, carrierSpecies),
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
index 7d3bb60207f5503734c760e68bdb48c01c2441fd..f0396691b6e9ef33ae71e22a8630734778285fc5 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
@@ -124,7 +124,8 @@ public:
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<typename ReactingCloud<ParcelType>::thermoType>&
+                carrierSpecies
         );
 
 
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
index a27bf4edf18e8661a3cf506f717b5156832e5936..f35de5ffd69ebcabbc43a1651aff384b8382ed57 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
@@ -35,7 +35,7 @@ SourceFiles
 #ifndef reactingCloud_H
 #define reactingCloud_H
 
-#include "volFields.H"
+#include "typeInfo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
index ea2ef0da89d14d2acf1d82c99298938fdba4b7ad..0359018cfa0dee0f4b1cd2a60b43e727d34915dd 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
@@ -35,7 +35,7 @@ SourceFiles
 #ifndef reactingMultiphaseCloud_H
 #define reactingMultiphaseCloud_H
 
-#include "volFields.H"
+#include "typeInfo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
index 27c67a36ccd5826f674c38a7184643678b2fafbc..01de934df7841b715ee20830842180750b322eea 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
@@ -24,29 +24,22 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingCloud.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingCloud, 0);
-};
-
+#include "BasicReactingCloud.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingCloud::basicReactingCloud
+template<class ThermoType>
+Foam::BasicReactingCloud<ThermoType>::BasicReactingCloud
 (
     const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<ThermoType>& carrierSpecies
 )
 :
-    ReactingCloud<basicReactingParcel>
+    ReactingCloud<BasicReactingParcel<ThermoType> >
     (
         cloudName,
         rho,
@@ -56,21 +49,23 @@ Foam::basicReactingCloud::basicReactingCloud
         carrierSpecies
     )
 {
-    basicReactingParcel::readFields(*this);
+    BasicReactingParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::basicReactingCloud::~basicReactingCloud()
+template<class ThermoType>
+Foam::BasicReactingCloud<ThermoType>::~BasicReactingCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::basicReactingCloud::writeFields() const
+template<class ThermoType>
+void Foam::BasicReactingCloud<ThermoType>::writeFields() const
 {
-    basicReactingParcel::writeFields(*this);
+    BasicReactingParcel<ThermoType>::writeFields(*this);
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
index c6c6a625c0a860069e9f0286f5961481dc73260b..1123ada759f0a868fc01ed0f562b919fd8dc486c 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
@@ -23,66 +23,71 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingCloud
+    Foam::BasicReactingCloud
 
 Description
     Reacting cloud templated on the reacting parcel
 
 SourceFiles
-    basicReactingCloud.C
+    BasicReactingCloud.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingCloud_H
-#define basicReactingCloud_H
+#ifndef BasicReactingCloud_H
+#define BasicReactingCloud_H
 
 #include "ReactingCloud.H"
-#include "basicReactingParcel.H"
+#include "BasicReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingCloud;
+
 /*---------------------------------------------------------------------------*\
-                        Class basicReactingCloud Declaration
+                        Class BasicReactingCloud Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingCloud
+template<class ThermoType>
+class BasicReactingCloud
 :
-    public ReactingCloud<basicReactingParcel>
+    public ReactingCloud<BasicReactingParcel<ThermoType> >
 {
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        basicReactingCloud(const basicReactingCloud&);
+        BasicReactingCloud(const BasicReactingCloud&);
 
         //- Disallow default bitwise assignment
-        void operator=(const basicReactingCloud&);
+        void operator=(const BasicReactingCloud&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("basicReactingCloud");
+    TypeName("BasicReactingCloud");
 
 
     // Constructors
 
         //- Construct given carrier gas fields
-        basicReactingCloud
+        BasicReactingCloud
         (
             const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<ThermoType>& carrierSpecies
         );
 
 
     //- Destructor
-    ~basicReactingCloud();
+    ~BasicReactingCloud();
 
 
     // Member Functions
@@ -98,6 +103,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "BasicReactingCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
index 9bd8b9c772d7098a6660dd04a41535cab16f66be..2dce419cd2f9f86e15bc9da9e92c8d614f580279 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
@@ -24,29 +24,22 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseCloud.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingMultiphaseCloud, 0);
-};
-
+#include "BasicReactingMultiphaseCloud.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseCloud::basicReactingMultiphaseCloud
+template<class ThermoType>
+Foam::BasicReactingMultiphaseCloud<ThermoType>::BasicReactingMultiphaseCloud
 (
     const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<ThermoType>& carrierSpecies
 )
 :
-    ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >
     (
         cloudName,
         rho,
@@ -56,21 +49,23 @@ Foam::basicReactingMultiphaseCloud::basicReactingMultiphaseCloud
         carrierSpecies
     )
 {
-    basicReactingMultiphaseParcel::readFields(*this);
+    BasicReactingMultiphaseParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseCloud::~basicReactingMultiphaseCloud()
+template<class ThermoType>
+Foam::BasicReactingMultiphaseCloud<ThermoType>::~BasicReactingMultiphaseCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::basicReactingMultiphaseCloud::writeFields() const
+template<class ThermoType>
+void Foam::BasicReactingMultiphaseCloud<ThermoType>::writeFields() const
 {
-    basicReactingMultiphaseParcel::writeFields(*this);
+    BasicReactingMultiphaseParcel<ThermoType>::writeFields(*this);
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
index 540431bfd4149ff62bbd613513aad82432fc4622..f1d94e4d8c8d5aa2640b59294ac41d291b124eaf 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
@@ -23,66 +23,71 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingMultiphaseCloud
+    Foam::BasicReactingMultiphaseCloud
 
 Description
     Reacting multiphase cloud templated on the reacting multiphase parcel
 
 SourceFiles
-    basicReactingMultiphaseCloud.C
+    BasicReactingMultiphaseCloud.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingMultiphaseCloud_H
-#define basicReactingMultiphaseCloud_H
+#ifndef BasicReactingMultiphaseCloud_H
+#define BasicReactingMultiphaseCloud_H
 
 #include "ReactingMultiphaseCloud.H"
-#include "basicReactingMultiphaseParcel.H"
+#include "BasicReactingMultiphaseParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingMultiphaseCloud;
+
 /*---------------------------------------------------------------------------*\
-                Class basicReactingMultiphaseCloud Declaration
+                Class BasicReactingMultiphaseCloud Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingMultiphaseCloud
+template<class ThermoType>
+class BasicReactingMultiphaseCloud
 :
-    public ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+    public ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>
 {
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        basicReactingMultiphaseCloud(const basicReactingMultiphaseCloud&);
+        BasicReactingMultiphaseCloud(const BasicReactingMultiphaseCloud&);
 
         //- Disallow default bitwise assignment
-        void operator=(const basicReactingMultiphaseCloud&);
+        void operator=(const BasicReactingMultiphaseCloud&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("basicReactingMultiphaseCloud");
+    TypeName("BasicReactingMultiphaseCloud");
 
 
     // Constructors
 
         //- Construct given carrier gas fields
-        basicReactingMultiphaseCloud
+        BasicReactingMultiphaseCloud
         (
             const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<ThermoType>& carrierSpecies
         );
 
 
     //- Destructor
-    ~basicReactingMultiphaseCloud();
+    ~BasicReactingMultiphaseCloud();
 
 
     // Member Functions
@@ -98,6 +103,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "BasicReactingMultiphaseCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
index 24937a077358e32b87fb3b1109740c9ccb4e90cf..ecd0a267d846c0e01e03959730c1f798fce3de09 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
@@ -26,27 +26,20 @@ License
 
 #include "trackedReactingCloud.H"
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(trackedReactingCloud, 0);
-};
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::trackedReactingCloud::trackedReactingCloud
+template<class ThermoType>
+Foam::trackedReactingCloud<ThermoType>::trackedReactingCloud
 (
     const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& gases
+    PtrList<ThermoType>& gases
 )
 :
-    ReactingCloud<trackedReactingParcel>
+    ReactingCloud<BasicTrackedReactingParcel<ThermoType> >
     (
         cloudName,
         rho,
@@ -56,21 +49,23 @@ Foam::trackedReactingCloud::trackedReactingCloud
         gases
     )
 {
-    trackedReactingParcel::readFields(*this);
+    BasicTrackedReactingParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::trackedReactingCloud::~trackedReactingCloud()
+template<class ThermoType>
+Foam::trackedReactingCloud<ThermoType>::~trackedReactingCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::trackedReactingCloud::writeFields() const
+template<class ThermoType>
+void Foam::trackedReactingCloud<ThermoType>::writeFields() const
 {
-    trackedReactingParcel::writeFields(*this);
+    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 490b918800052ec9122e4835bbdaa5f987c05f28..87d22a9647368c3bbf64118fcfe63810f6f682f0 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
@@ -37,20 +37,25 @@ SourceFiles
 #define trackedReactingCloud_H
 
 #include "ReactingCloud.H"
-#include "trackedReactingParcel.H"
+#include "BasicTrackedReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class trackedReactingCloud;
+
 /*---------------------------------------------------------------------------*\
                     Class trackedReactingCloud Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class ThermoType>
 class trackedReactingCloud
 :
-    public ReactingCloud<trackedReactingParcel>
+    public ReactingCloud<BasicTrackedReactingParcel<ThermoType> >
 {
     // Private Member Functions
 
@@ -77,7 +82,7 @@ public:
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& gases
+            PtrList<ThermoType>& gases
         );
 
 
@@ -98,6 +103,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "trackedReactingCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..45fc561ab8ae5647e92b32c4e5978a133d92290a
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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 "reactingParcel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(reactingParcel, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::reactingParcel::reactingParcel()
+{}
+
+
+// * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
+
+Foam::reactingParcel::~reactingParcel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H
new file mode 100644
index 0000000000000000000000000000000000000000..5dcc2a38deb5be0be6ef1260a73ce050decc7898
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H
@@ -0,0 +1,81 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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
+
+Class
+    Foam::basicReactingParcel
+
+Description
+    Base class for reacting parcel - simply used to set the contiguous flag
+
+SourceFiles
+    reactingParcel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef reactingParcel_H
+#define reactingParcel_H
+
+#include "typeInfo.H"
+#include "contiguous.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class reactingParcel Declaration
+\*---------------------------------------------------------------------------*/
+
+class reactingParcel
+{
+public:
+
+    //- Run-time type information
+    TypeName("reactingParcel");
+
+    //- Construct null
+    reactingParcel();
+
+    //- Destructor
+    virtual ~reactingParcel();
+};
+
+
+template<>
+inline bool contiguous<reactingParcel>()
+{
+    return false; // Derived classes include scalar lists/fields
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
index 45e68e1dbe911d1e0bf6b8cd74435d86c253050b..f24bd313d6d9b323338f0c7909cc45ae2a8104e1 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
@@ -24,28 +24,19 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingMultiphaseParcel, 0);
-    defineParticleTypeNameAndDebug(basicReactingMultiphaseParcel, 0);
-    defineParcelTypeNameAndDebug(basicReactingMultiphaseParcel, 0);
-};
-
+#include "BasicReactingMultiphaseParcel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
     (
         owner,
         position,
@@ -54,9 +45,10 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
 {}
 
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI,
     const label typeId,
@@ -67,10 +59,12 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
     const scalarField& YLiquid0,
     const scalarField& YSolid0,
     const scalarField& Y0,
-    const constantProperties& constProps
+    const typename
+        ReactingMultiphaseParcel<BasicReactingMultiphaseParcel>::
+        constantProperties& constProps
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
     (
         owner,
         position,
@@ -88,14 +82,15 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
 {}
 
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    const Cloud<basicReactingMultiphaseParcel>& cloud,
+    const Cloud<BasicReactingMultiphaseParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
     (
         cloud,
         is,
@@ -104,18 +99,21 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
 {}
 
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    const basicReactingMultiphaseParcel& p
+    const BasicReactingMultiphaseParcel<ThermoType>& p
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>(p)
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >(p)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseParcel::~basicReactingMultiphaseParcel()
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::
+~BasicReactingMultiphaseParcel()
 {}
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
index 9f3cc3aa41b79f975b52cfe3be8aa992c274910b..2d79c9a1b74403103b7bb60eb142cbddd7b32a38 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
@@ -23,56 +23,67 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingMultiphaseParcel
+    Foam::BasicReactingMultiphaseParcel
 
 Description
 
 
 SourceFiles
-    basicReactingMultiphaseParcel.C
-    basicReactingMultiphaseParcelIO.C
+    BasicReactingMultiphaseParcel.C
+    BasicReactingMultiphaseParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingMultiphaseParcel_H
-#define basicReactingMultiphaseParcel_H
+#ifndef BasicReactingMultiphaseParcel_H
+#define BasicReactingMultiphaseParcel_H
 
 #include "ReactingMultiphaseParcel.H"
+#include "reactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingMultiphaseParcel;
+
 /*---------------------------------------------------------------------------*\
-               Class basicReactingMultiphaseParcel Declaration
+               Class BasicReactingMultiphaseParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingMultiphaseParcel
+template<class ThermoType>
+class BasicReactingMultiphaseParcel
 :
-    public ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    public reactingParcel,
+    public ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
 {
 
 public:
 
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
     //- Run-time type information
-    TypeName("basicReactingMultiphaseParcel");
+    TypeName("BasicReactingMultiphaseParcel");
 
     // Constructors
 
         //- Construct from owner, position, and cloud owner
         //  Other properties initialised as null
-        basicReactingMultiphaseParcel
+        BasicReactingMultiphaseParcel
         (
-             ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+             ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>& owner,
              const vector& position,
              const label cellI
         );
 
         //- Construct from components
-        basicReactingMultiphaseParcel
+        BasicReactingMultiphaseParcel
         (
-             ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+             ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>& owner,
              const vector& position,
              const label cellI,
              const label typeId,
@@ -83,46 +94,47 @@ public:
              const scalarField& YLiquid0,
              const scalarField& YSolid0,
              const scalarField& Y0,
-             const constantProperties& constProps
+             const typename
+                ReactingMultiphaseParcel<BasicReactingMultiphaseParcel>::
+                constantProperties& constProps
         );
 
         //- Construct from Istream
-        basicReactingMultiphaseParcel
+        BasicReactingMultiphaseParcel
         (
-            const Cloud<basicReactingMultiphaseParcel>& c,
+            const Cloud<BasicReactingMultiphaseParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct as a copy
-        basicReactingMultiphaseParcel(const basicReactingMultiphaseParcel& p);
+        BasicReactingMultiphaseParcel(const BasicReactingMultiphaseParcel& p);
 
         //- Construct and return a clone
-        autoPtr<basicReactingMultiphaseParcel> clone() const
+        autoPtr<BasicReactingMultiphaseParcel> clone() const
         {
             return
-                autoPtr<basicReactingMultiphaseParcel>
+                autoPtr<BasicReactingMultiphaseParcel>
                 (
-                    new basicReactingMultiphaseParcel(*this)
+                    new BasicReactingMultiphaseParcel(*this)
                 );
         }
 
 
     //- Destructor
-    virtual ~basicReactingMultiphaseParcel();
+    virtual ~BasicReactingMultiphaseParcel();
 };
 
 
-template<>
-inline bool contiguous<basicReactingMultiphaseParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "BasicReactingMultiphaseParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..d693682796b74c5143bd8f6c87d8df9240222375
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H
@@ -0,0 +1,45 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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 basicReactingMultiphaseParcelTypes_H
+#define basicReactingMultiphaseParcelTypes_H
+
+#include "BasicReactingMultiphaseParcel.H"
+#include "ReactingCloudThermoTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef BasicReactingMultiphaseParcel<specieReactingProperties>
+        bReactingMultiphaseParcel;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
index 5278c5e0f5a27a944b69207ea4c543473016b80e..d022f38f20ab544dbe8dcbb723f2232ad878c526 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
@@ -24,72 +24,76 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingMultiphaseCloud.H"
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(Cloud<basicReactingMultiphaseParcel>, 0);
+    defineTemplateTypeNameAndDebug(bReactingMultiphaseParcel, 0);
+
+    defineTemplateTypeNameAndDebug(Particle<bReactingMultiphaseParcel>, 0);
+
+    defineTemplateTypeNameAndDebug(Cloud<bReactingMultiphaseParcel>, 0);
 
     defineParcelTypeNameAndDebug
     (
-        KinematicParcel<basicReactingMultiphaseParcel>,
+        KinematicParcel<bReactingMultiphaseParcel>,
+        0
+    );
+    defineTemplateTypeNameAndDebug
+    (
+        KinematicParcel<bReactingMultiphaseParcel>,
         0
     );
-//    defineTemplateTypeNameAndDebug
-//    (
-//        KinematicParcel<basicReactingMultiphaseParcel>,
-//        0
-//    );
     defineParcelTypeNameAndDebug
     (
-        ThermoParcel<basicReactingMultiphaseParcel>,
+        ThermoParcel<bReactingMultiphaseParcel>,
         0
     );
     defineTemplateTypeNameAndDebug
     (
-        ThermoParcel<basicReactingMultiphaseParcel>,
+        ThermoParcel<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingParcel<basicReactingMultiphaseParcel>,
+        ReactingParcel<bReactingMultiphaseParcel>,
         0
     );
     defineTemplateTypeNameAndDebug
     (
-        ReactingParcel<basicReactingMultiphaseParcel>,
+        ReactingParcel<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingMultiphaseParcel<basicReactingMultiphaseParcel>,
+        ReactingMultiphaseParcel<bReactingMultiphaseParcel>,
         0
     );
     defineTemplateTypeNameAndDebug
     (
-        ReactingMultiphaseParcel<basicReactingMultiphaseParcel>,
+        ReactingMultiphaseParcel<bReactingMultiphaseParcel>,
         0
     );
 
     defineParcelTypeNameAndDebug
     (
-        KinematicCloud<basicReactingMultiphaseParcel>,
+        KinematicCloud<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ThermoCloud<basicReactingMultiphaseParcel>,
+        ThermoCloud<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingCloud<basicReactingMultiphaseParcel>,
+        ReactingCloud<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingMultiphaseCloud<basicReactingMultiphaseParcel>,
+        ReactingMultiphaseCloud<bReactingMultiphaseParcel>,
         0
     );
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
index 4dd31ffb585177c7b2655b86d44ec288c03e32af..c15640979320be5de510ed227c457516aea957b8 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "SingleMixtureFraction.H"
@@ -35,7 +35,7 @@ namespace Foam
 {
     makeCompositionModel
     (
-        ReactingCloud<basicReactingMultiphaseParcel>
+        ReactingCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of composition model to the table
@@ -43,7 +43,7 @@ namespace Foam
     (
         SingleMixtureFraction,
         ReactingCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
index 8704e48d801561ce3c543afc7e09d47090e50323..8bd2d5b9610e7d07c91edf8f3a261425a4faf9a2 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingMultiphaseCloud.H"
 
 #include "NoDevolatilisation.H"
@@ -37,7 +37,7 @@ namespace Foam
 {
     makeDevolatilisationModel
     (
-        ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+        ReactingMultiphaseCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of devolatilisation model to the table
@@ -45,19 +45,19 @@ namespace Foam
     (
         NoDevolatilisation,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDevolatilisationModelType
     (
         ConstantRateDevolatilisation,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDevolatilisationModelType
     (
         SingleKineticRateDevolatilisation,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
index 8e4a77d5e3038ad65a0bf05d3ead1451bf64a6f9..6de7b5da1adee0c7375baf90d444b1aa03234749 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDispersion.H"
@@ -35,11 +35,11 @@ License
 
 namespace Foam
 {
-    makeDispersionModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makeDispersionModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     defineNamedTemplateTypeNameAndDebug
     (
-        DispersionRASModel<KinematicCloud<basicReactingMultiphaseParcel> >,
+        DispersionRASModel<KinematicCloud<bReactingMultiphaseParcel> >,
         0
     );
 
@@ -48,19 +48,19 @@ namespace Foam
     (
         NoDispersion,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDispersionModelType
     (
         GradientDispersionRAS,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDispersionModelType
     (
         StochasticDispersionRAS,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
index 5e56985952fa0a004e1b4d7d38a1cebe9445ec76..9cda16d3f4b21eddd7fac850466b2cff66f4c9af 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDrag.H"
@@ -34,15 +34,15 @@ License
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makeDragModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, basicReactingMultiphaseParcel);
+    makeDragModelType(NoDrag, KinematicCloud, bReactingMultiphaseParcel);
     makeDragModelType
     (
         SphereDrag,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
index f501421d8bb869808909eb53cad995167a36543f..53051b08dab9081f3487abd0e30a38ac848a7cac 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ThermoCloud.H"
 
 #include "NoHeatTransfer.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makeHeatTransferModel(ThermoCloud<basicReactingMultiphaseParcel>);
+    makeHeatTransferModel(ThermoCloud<bReactingMultiphaseParcel>);
 
     // Add instances of heat transfer model to the table
     makeHeatTransferModelType
     (
         NoHeatTransfer,
         ThermoCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeHeatTransferModelType
     (
         RanzMarshall,
         ThermoCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
index 6b427ae7c2427bd5edb50d76734d3b0124c25a95..03ebbf29f55b5a2f73f319291e0e9d0b068220d7 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "ConeInjection.H"
@@ -36,32 +36,32 @@ License
 
 namespace Foam
 {
-    makeInjectionModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makeInjectionModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of injection model to the table
     makeInjectionModelType
     (
         ConeInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeInjectionModelType
     (
         FieldActivatedInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeInjectionModelType
     (
         ManualInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeInjectionModelType
     (
         NoInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
index f4a3047d770618efd2b68d8d64b49ab699858dfc..67f00c34e6c5977ed5de6d5a4587d4a6c189455c 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "LocalInteraction.H"
@@ -35,26 +35,26 @@ License
 
 namespace Foam
 {
-    makePatchInteractionModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makePatchInteractionModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of patch interaction model to the table
     makePatchInteractionModelType
     (
         LocalInteraction,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePatchInteractionModelType
     (
         Rebound,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePatchInteractionModelType
     (
         StandardWallInteraction,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
index 99e9dfb89ba8eec740fd62e73fc72616fd62305b..2fb67a6f83109f39c7406651e16e363613ff5aa6 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "NoPhaseChange.H"
@@ -36,7 +36,7 @@ namespace Foam
 {
     makePhaseChangeModel
     (
-        ReactingCloud<basicReactingMultiphaseParcel>
+        ReactingCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of phase change model to the table
@@ -44,13 +44,13 @@ namespace Foam
     (
         NoPhaseChange,
         ReactingCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePhaseChangeModelType
     (
         LiquidEvaporation,
         ReactingCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
index 1cc61af67047c418a9ad79796c492681b010718d..96dfb6c6106c437f79dee3367f04e81f6c13d239 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoPostProcessing.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePostProcessingModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makePostProcessingModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of post-processing model to the table
     makePostProcessingModelType
     (
         NoPostProcessing,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePostProcessingModelType
     (
         StandardPostProcessing,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
index d0478807400a41a0d301e19faaffcc0be0bfa3a0..779a90c43f6cfb843c988e82f25464ec4b73a541 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingMultiphaseCloud.H"
 
 #include "NoSurfaceReaction.H"
@@ -35,7 +35,7 @@ namespace Foam
 {
     makeSurfaceReactionModel
     (
-        ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+        ReactingMultiphaseCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of surface reaction model to the table
@@ -43,7 +43,7 @@ namespace Foam
     (
         NoSurfaceReaction,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
index 480f4d6b1957ec5ebf921daba40c5be5e448b8a2..d2b00fdf73f3b6aef58d7d53fbe37a79f4f16f51 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
@@ -24,34 +24,26 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingParcel, 0);
-    defineParticleTypeNameAndDebug(basicReactingParcel, 0);
-    defineParcelTypeNameAndDebug(basicReactingParcel, 0);
-};
-
+#include "BasicReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    ReactingCloud<basicReactingParcel>& owner,
+    ReactingCloud<BasicReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI
 )
 :
-    ReactingParcel<basicReactingParcel>(owner, position, cellI)
+    ReactingParcel<BasicReactingParcel<ThermoType> >(owner, position, cellI)
 {}
 
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    ReactingCloud<basicReactingParcel>& owner,
+    ReactingCloud<BasicReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI,
     const label typeId,
@@ -59,10 +51,11 @@ Foam::basicReactingParcel::basicReactingParcel
     const scalar d0,
     const vector& U0,
     const scalarField& Y0,
-    const constantProperties& constProps
+    const typename ReactingParcel<BasicReactingParcel<ThermoType> >::
+        constantProperties& constProps
 )
 :
-    ReactingParcel<basicReactingParcel>
+    ReactingParcel<BasicReactingParcel<ThermoType> >
     (
         owner,
         position,
@@ -77,29 +70,32 @@ Foam::basicReactingParcel::basicReactingParcel
 {}
 
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    const Cloud<basicReactingParcel>& cloud,
+    const Cloud<BasicReactingParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    ReactingParcel<basicReactingParcel>(cloud, is, readFields)
+    ReactingParcel<BasicReactingParcel<ThermoType> >(cloud, is, readFields)
 {}
 
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    const basicReactingParcel& p
+    const BasicReactingParcel<ThermoType>& p
 )
 :
-    ReactingParcel<basicReactingParcel>(p)
+    ReactingParcel<BasicReactingParcel>(p)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingParcel::~basicReactingParcel()
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::~BasicReactingParcel()
 {}
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
index 432199e5320c2a0909f1a94e2c52aa4844923323..64301a263bffa066e07c5f63fd457f1334b4db1a 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
@@ -23,56 +23,66 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingParcel
+    Foam::BasicReactingParcel
 
 Description
 
 
 SourceFiles
-    basicReactingParcel.C
-    basicReactingParcelIO.C
+    BasicReactingParcel.C
+    BasicReactingParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingParcel_H
-#define basicReactingParcel_H
+#ifndef BasicReactingParcel_H
+#define BasicReactingParcel_H
 
 #include "ReactingParcel.H"
+#include "reactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingParcel;
+
 /*---------------------------------------------------------------------------*\
-                    Class basicReactingParcel Declaration
+                    Class BasicReactingParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingParcel
+template<class ThermoType>
+class BasicReactingParcel
 :
-    public ReactingParcel<basicReactingParcel>
+    public reactingParcel,
+    public ReactingParcel<BasicReactingParcel<ThermoType> >
 {
 
 public:
 
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
     //- Run-time type information
-    TypeName("basicReactingParcel");
+    TypeName("BasicReactingParcel");
 
     // Constructors
 
         //- Construct from owner, position, and cloud owner
         //  Other properties initialised as null
-        basicReactingParcel
+        BasicReactingParcel
         (
-            ReactingCloud<basicReactingParcel>& owner,
+            ReactingCloud<BasicReactingParcel>& owner,
             const vector& position,
             const label cellI
         );
 
         //- Construct from components
-        basicReactingParcel
+        BasicReactingParcel
         (
-            ReactingCloud<basicReactingParcel>& owner,
+            ReactingCloud<BasicReactingParcel>& owner,
             const vector& position,
             const label cellI,
             const label typeId,
@@ -80,46 +90,46 @@ public:
             const scalar d0,
             const vector& U0,
             const scalarField& Y0,
-            const constantProperties& constProps
+            const typename ReactingParcel<BasicReactingParcel>::
+                constantProperties& constProps
         );
 
         //- Construct from Istream
-        basicReactingParcel
+        BasicReactingParcel
         (
-            const Cloud<basicReactingParcel>& c,
+            const Cloud<BasicReactingParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct as a copy
-        basicReactingParcel(const basicReactingParcel& p);
+        BasicReactingParcel(const BasicReactingParcel& p);
 
         //- Construct and return a clone
-        autoPtr<basicReactingParcel> clone() const
+        autoPtr<BasicReactingParcel> clone() const
         {
             return
-                autoPtr<basicReactingParcel>
+                autoPtr<BasicReactingParcel>
                 (
-                    new basicReactingParcel(*this)
+                    new BasicReactingParcel(*this)
                 );
         }
 
 
     //- Destructor
-    virtual ~basicReactingParcel();
+    virtual ~BasicReactingParcel();
 };
 
 
-template<>
-inline bool contiguous<basicReactingParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "BasicReactingParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..c64bfc94735430aeb33ed70de005a6c23c0bfac2
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H
@@ -0,0 +1,83 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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 basicReactingParcelTypes_H
+#define basicReactingParcelTypes_H
+
+#include "BasicReactingParcel.H"
+#include "BasicReactingCloud.H"
+
+#include "ReactingCloudThermoTypes.H"
+#include "makeParcelIOList.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef BasicReactingParcel<specieReactingProperties> bReactingParcel;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingParcelType(ParcelType)                                  \
+                                                                              \
+    createReactingParcelThermoType(ParcelType, specieConstProperties);        \
+    createReactingParcelThermoType(ParcelType, specieReactingProperties);
+
+
+#define createReactingParcelThermoType(ParcelType, ThermoType)                \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    makeParcelIOList(ParcelType##ThermoType);                                 \
+                                                                              \
+    defineTemplateTypeNameAndDebug(BasicReactingCloud<ThermoType>, 0);        \
+                                                                              \
+    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(KinematicCloud<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0);     \
+    defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
index 5c45881ccf773ea0a287385acc024160d90dcacf..6e64dd43ceb95e3eb7df961aad43f260eed5c886 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
@@ -24,29 +24,13 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
-#include "ReactingCloud.H"
+#include "basicReactingParcelTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(Cloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0);
-
+    createReactingParcelType(BasicReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
index 7010ab4f2cd60f267c18f9181262d873ce58453f..ef686198d6a9095c89f562ace36f59c72339769d 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "SinglePhaseMixture.H"
@@ -33,14 +33,14 @@ License
 
 namespace Foam
 {
-    makeCompositionModel(ReactingCloud<basicReactingParcel>);
+    makeCompositionModel(ReactingCloud<bReactingParcel>);
 
     // Add instances of composition model to the table
     makeCompositionModelType
     (
         SinglePhaseMixture,
         ReactingCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
index d2b6132bcaa1d945630db56ed4d49c2c952433ae..81c8562f507713e41094ecda00e04fc1d7234ea9 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDispersion.H"
@@ -35,11 +35,11 @@ License
 
 namespace Foam
 {
-    makeDispersionModel(KinematicCloud<basicReactingParcel>);
+    makeDispersionModel(KinematicCloud<bReactingParcel>);
 
     defineNamedTemplateTypeNameAndDebug
     (
-        DispersionRASModel<KinematicCloud<basicReactingParcel> >,
+        DispersionRASModel<KinematicCloud<bReactingParcel> >,
         0
     );
 
@@ -48,19 +48,19 @@ namespace Foam
     (
         NoDispersion,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeDispersionModelType
     (
         GradientDispersionRAS,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeDispersionModelType
     (
         StochasticDispersionRAS,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
index 0c43e221b1a42eeb12dd8f5afc8505dcb6626ff0..6d51de8d7d062079f05dcf8f79b36fe08f3e4844 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDrag.H"
@@ -34,11 +34,11 @@ License
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<basicReactingParcel>);
+    makeDragModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, basicReactingParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, basicReactingParcel);
+    makeDragModelType(NoDrag, KinematicCloud, bReactingParcel);
+    makeDragModelType(SphereDrag, KinematicCloud, bReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
index 5bc2ea33a89138eae638d916392690bb8ba1b1b3..fbb32db8e4aab95014bbc016a215b24420912d67 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ThermoCloud.H"
 
 #include "NoHeatTransfer.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makeHeatTransferModel(ThermoCloud<basicReactingParcel>);
+    makeHeatTransferModel(ThermoCloud<bReactingParcel>);
 
     // Add instances of heat transfer model to the table
     makeHeatTransferModelType
     (
         NoHeatTransfer,
         ThermoCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeHeatTransferModelType
     (
         RanzMarshall,
         ThermoCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
index 28355e9f67538bec38d3a07ea46711b6a3d71b37..7402b25ecc90b1bad5eae4710d529ff0f82eee31 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "ConeInjection.H"
@@ -37,38 +37,38 @@ License
 
 namespace Foam
 {
-    makeInjectionModel(KinematicCloud<basicReactingParcel>);
+    makeInjectionModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of injection model to the table
     makeInjectionModelType
     (
         ConeInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         FieldActivatedInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         ManualInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         NoInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         ReactingLookupTableInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
index e596670663ab3417a6de3a060329bb9a0c45f778..f0abeae98b160540ff12f96f1a240d0cde3e7ec3 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "LocalInteraction.H"
@@ -35,26 +35,26 @@ License
 
 namespace Foam
 {
-    makePatchInteractionModel(KinematicCloud<basicReactingParcel>);
+    makePatchInteractionModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of patch interaction model to the table
     makePatchInteractionModelType
     (
         LocalInteraction,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePatchInteractionModelType
     (
         Rebound,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePatchInteractionModelType
     (
         StandardWallInteraction,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
index f8ce035ada1133bee9bed0f3517eeb6b6b9202a1..c0190acefae1ede56e42897dc739a4bf3ab7baf8 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "NoPhaseChange.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePhaseChangeModel(ReactingCloud<basicReactingParcel>);
+    makePhaseChangeModel(ReactingCloud<bReactingParcel>);
 
     // Add instances of phase change model to the table
     makePhaseChangeModelType
     (
         NoPhaseChange,
         ReactingCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePhaseChangeModelType
     (
         LiquidEvaporation,
         ReactingCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
index ca9a3dba6c61761c52710d8aaa4b382b54575c40..cd8bd46b23409eb31426c216be0a436d2eeca76c 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoPostProcessing.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePostProcessingModel(KinematicCloud<basicReactingParcel>);
+    makePostProcessingModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of post-processing model to the table
     makePostProcessingModelType
     (
         NoPostProcessing,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePostProcessingModelType
     (
         StandardPostProcessing,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C
index 156953a80454a7f42c698a188dd9a5abdaf49c24..ae828896e9aab2d523e6f0aa1dc9677b243c8234 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C
@@ -24,34 +24,31 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(trackedReactingParcel, 0);
-    defineParticleTypeNameAndDebug(trackedReactingParcel, 0);
-    defineParcelTypeNameAndDebug(trackedReactingParcel, 0);
-}
-
+#include "BasicTrackedReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    ReactingCloud<trackedReactingParcel>& owner,
+    ReactingCloud<BasicTrackedReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>(owner, position, cellI)
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
+    (
+        owner,
+        position,
+        cellI
+    )
 {}
 
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    ReactingCloud<trackedReactingParcel>& owner,
+    ReactingCloud<BasicTrackedReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI,
     const label typeId,
@@ -59,10 +56,12 @@ Foam::trackedReactingParcel::trackedReactingParcel
     const scalar d0,
     const vector& U0,
     const scalarField& Y0,
-    const constantProperties& constProps
+    const typename
+        TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >::
+        constantProperties& constProps
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
     (
         owner,
         position,
@@ -77,29 +76,37 @@ Foam::trackedReactingParcel::trackedReactingParcel
 {}
 
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    const Cloud<trackedReactingParcel>& cloud,
+    const Cloud<BasicTrackedReactingParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>(cloud, is, readFields)
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
+    (
+        cloud,
+        is,
+        readFields
+    )
 {}
 
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    const trackedReactingParcel& p
+    const BasicTrackedReactingParcel<ThermoType>& p
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>(p)
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >(p)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::trackedReactingParcel::~trackedReactingParcel()
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::~BasicTrackedReactingParcel()
 {}
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H
index 47e0291a65fda5e2ca100a22c95299263e31a643..ef9ebda34db092ec47e3f074770a722a7c189542 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H
@@ -23,56 +23,66 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::trackedReactingParcel
+    Foam::BasicTrackedReactingParcel
 
 Description
 
 
 SourceFiles
-    trackedReactingParcel.C
-    trackedReactingParcelIO.C
+    BasicTrackedReactingParcel.C
+    BasicTrackedReactingParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef trackedReactingParcel_H
-#define trackedReactingParcel_H
+#ifndef BasicTrackedReactingParcel_H
+#define BasicTrackedReactingParcel_H
 
 #include "TrackedReactingParcel.H"
+#include "reactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicTrackedReactingParcel;
+
 /*---------------------------------------------------------------------------*\
-                    Class trackedReactingParcel Declaration
+                 Class BasicTrackedReactingParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class trackedReactingParcel
+template<class ThermoType>
+class BasicTrackedReactingParcel
 :
-    public TrackedReactingParcel<trackedReactingParcel>
+    public reactingParcel,
+    public TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
 {
 
 public:
 
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
     //- Run-time type information
-    TypeName("trackedReactingParcel");
+    TypeName("BasicTrackedReactingParcel");
 
     // Constructors
 
         //- Construct from owner, position, and cloud owner
         //  Other properties initialised as null
-        trackedReactingParcel
+        BasicTrackedReactingParcel
         (
-            ReactingCloud<trackedReactingParcel>& owner,
+            ReactingCloud<BasicTrackedReactingParcel>& owner,
             const vector& position,
             const label cellI
         );
 
         //- Construct from components
-        trackedReactingParcel
+        BasicTrackedReactingParcel
         (
-            ReactingCloud<trackedReactingParcel>& owner,
+            ReactingCloud<BasicTrackedReactingParcel>& owner,
             const vector& position,
             const label cellI,
             const label typeId,
@@ -80,46 +90,47 @@ public:
             const scalar d0,
             const vector& U0,
             const scalarField& Y0,
-            const constantProperties& constProps
+            const typename
+                TrackedReactingParcel<BasicTrackedReactingParcel>::
+                constantProperties& constProps
         );
 
         //- Construct from Istream
-        trackedReactingParcel
+        BasicTrackedReactingParcel
         (
-            const Cloud<trackedReactingParcel>& c,
+            const Cloud<BasicTrackedReactingParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct as a copy
-        trackedReactingParcel(const trackedReactingParcel& p);
+        BasicTrackedReactingParcel(const BasicTrackedReactingParcel& p);
 
         //- Construct and return a clone
-        autoPtr<trackedReactingParcel> clone() const
+        autoPtr<BasicTrackedReactingParcel> clone() const
         {
             return
-                autoPtr<trackedReactingParcel>
+                autoPtr<BasicTrackedReactingParcel>
                 (
-                    new trackedReactingParcel(*this)
+                    new BasicTrackedReactingParcel(*this)
                 );
         }
 
 
     //- Destructor
-    virtual ~trackedReactingParcel();
+    virtual ~BasicTrackedReactingParcel();
 };
 
 
-template<>
-inline bool contiguous<trackedReactingParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "BasicTrackedReactingParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..9a30c248c7739fd3e9edf86785001940a9da79b2
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H
@@ -0,0 +1,45 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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 basicTrackedReactingParcelTypes_H
+#define basicTrackedReactingParcelTypes_H
+
+#include "BasicTrackedReactingParcel.H"
+#include "ReactingCloudThermoTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef BasicTrackedReactingParcel<specieReactingProperties>
+        bTrackedReactingParcel;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
index 0d050351efcbb7ce39887ad242e4f584ae8e3515..9d7660fab74cea1ba93b7388c9e81d81f1d7e3e0 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
@@ -24,33 +24,35 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
-#include "ReactingCloud.H"
+#include "basicTrackedReactingParcelTypes.H"
+#include "BasicReactingCloud.H"
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(Cloud<trackedReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicParcel<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicParcel<trackedReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoParcel<trackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ThermoParcel<trackedReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingParcel<trackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingParcel<trackedReactingParcel>, 0);
+    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<trackedReactingParcel>,
+        TrackedReactingParcel<bTrackedReactingParcel>,
         0
     );
 
-    defineParcelTypeNameAndDebug(KinematicCloud<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<trackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(KinematicCloud<bTrackedReactingParcel>, 0);
+//    defineTemplateTypeNameAndDebug(KinematicCloud<bTrackedReactingParcel>, 0);
 
-    defineParcelTypeNameAndDebug(ThermoCloud<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ThermoCloud<trackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(ThermoCloud<bTrackedReactingParcel>, 0);
+//    defineTemplateTypeNameAndDebug(ThermoCloud<bTrackedReactingParcel>, 0);
 
-    defineParcelTypeNameAndDebug(ReactingCloud<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ReactingCloud<trackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(ReactingCloud<bTrackedReactingParcel>, 0);
+//    defineTemplateTypeNameAndDebug(ReactingCloud<bTrackedReactingParcel>, 0);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
index 342c3b6db57ef3690d9d07acd928a7a18849af1d..e573e7ca36c939359031b8a2138318a249bb7b25 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "SinglePhaseMixture.H"
@@ -33,14 +33,14 @@ License
 
 namespace Foam
 {
-    makeCompositionModel(ReactingCloud<trackedReactingParcel>);
+    makeCompositionModel(ReactingCloud<bTrackedReactingParcel>);
 
     // Add instances of composition model to the table
     makeCompositionModelType
     (
         SinglePhaseMixture,
         ReactingCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
index ce1a1dd90dc999e36887f52447212663273ba181..1858335ca957ec2e1c869ef3336ae43e24d76c28 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDispersion.H"
@@ -35,11 +35,11 @@ License
 
 namespace Foam
 {
-    makeDispersionModel(KinematicCloud<trackedReactingParcel>);
+    makeDispersionModel(KinematicCloud<bTrackedReactingParcel>);
 
     defineNamedTemplateTypeNameAndDebug
     (
-        DispersionRASModel<KinematicCloud<trackedReactingParcel> >,
+        DispersionRASModel<KinematicCloud<bTrackedReactingParcel> >,
         0
     );
 
@@ -48,19 +48,19 @@ namespace Foam
     (
         NoDispersion,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeDispersionModelType
     (
         GradientDispersionRAS,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeDispersionModelType
     (
         StochasticDispersionRAS,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
index a148878048183ac745ff436477cc2657294929ae..358da8e2e2116a6afea515cd0bc2bb07b258b65f 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDrag.H"
@@ -34,11 +34,11 @@ License
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<trackedReactingParcel>);
+    makeDragModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, trackedReactingParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, trackedReactingParcel);
+    makeDragModelType(NoDrag, KinematicCloud, bTrackedReactingParcel);
+    makeDragModelType(SphereDrag, KinematicCloud, bTrackedReactingParcel);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
index 56843b48621942fdfb22c5beab1ddacbf4e5ef5b..7dfe9a3131ee71290fbe0174a99d897662c1e0c7 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ThermoCloud.H"
 
 #include "NoHeatTransfer.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makeHeatTransferModel(ThermoCloud<trackedReactingParcel>);
+    makeHeatTransferModel(ThermoCloud<bTrackedReactingParcel>);
 
     // Add instances of heat transfer model to the table
     makeHeatTransferModelType
     (
         NoHeatTransfer,
         ThermoCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeHeatTransferModelType
     (
         RanzMarshall,
         ThermoCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
index 480652141b24f6bf91f2fbb3468fad61c7d2d0c0..28083e2973aa85387b358be680ab26da49421252 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "ConeInjection.H"
@@ -37,38 +37,38 @@ License
 
 namespace Foam
 {
-    makeInjectionModel(KinematicCloud<trackedReactingParcel>);
+    makeInjectionModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of injection model to the table
     makeInjectionModelType
     (
         ConeInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         FieldActivatedInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         ManualInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         NoInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         ReactingLookupTableInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
index 4205bcc28186952b7eb63ef5298cfab12f439c2a..15dd56ee3dae685911697f6ea870795247b34144 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "LocalInteraction.H"
@@ -35,26 +35,26 @@ License
 
 namespace Foam
 {
-    makePatchInteractionModel(KinematicCloud<trackedReactingParcel>);
+    makePatchInteractionModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of patch interaction model to the table
     makePatchInteractionModelType
     (
         LocalInteraction,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePatchInteractionModelType
     (
         Rebound,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePatchInteractionModelType
     (
         StandardWallInteraction,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
index 2c5d08bd9422fe59717fb00e4521827d5c3e00c3..533cf64dc9c9967047d544c23860e58b5b159800 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "NoPhaseChange.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePhaseChangeModel(ReactingCloud<trackedReactingParcel>);
+    makePhaseChangeModel(ReactingCloud<bTrackedReactingParcel>);
 
     // Add instances of phase change model to the table
     makePhaseChangeModelType
     (
         NoPhaseChange,
         ReactingCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePhaseChangeModelType
     (
         LiquidEvaporation,
         ReactingCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
index b4e25f1beae40a094569d50d357cf8afc8d54ed8..c67cd52a6adeecdb0d1abd2baa013179b4e5ec66 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoPostProcessing.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePostProcessingModel(KinematicCloud<trackedReactingParcel>);
+    makePostProcessingModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of post-processing model to the table
     makePostProcessingModelType
     (
         NoPostProcessing,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePostProcessingModelType
     (
         StandardPostProcessing,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
index ebf246f6d807dab2d7836568a8887a20a56eaf63..04ff69a9c6a948ead0ae2b43e25adf601aaefba3 100644
--- a/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
+++ b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
@@ -28,10 +28,9 @@ License
 
 #include "basicKinematicParcel.H"
 #include "basicThermoParcel.H"
-#include "basicReactingParcel.H"
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -39,10 +38,9 @@ namespace Foam
 {
     makeParcelIOList(basicKinematicParcel);
     makeParcelIOList(basicThermoParcel);
-    makeParcelIOList(basicReactingParcel);
-    makeParcelIOList(basicReactingMultiphaseParcel);
+    makeParcelIOList(bReactingMultiphaseParcel);
 
-    makeParcelIOList(trackedReactingParcel);
+    makeParcelIOList(bTrackedReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
index ddcd74beb452d6e8cba4f0ed8845fcf5706464e5..6acefb6ec8afd20f4fa97f05c302138cace89f74 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
@@ -110,7 +110,7 @@ Foam::CompositionModel<CloudType>::carrierThermo() const
 
 
 template<class CloudType>
-const Foam::PtrList<Foam::specieReactingProperties>&
+const Foam::PtrList<typename CloudType::thermoType>&
 Foam::CompositionModel<CloudType>::carrierSpecies() const
 {
     return carrierSpecies_;
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index 8fb8762cf02c970feb4db9dceb8ca9e6b8050af9..2dac578982bcc000e25e924f4acd99206a7b91b6 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -78,7 +78,7 @@ class CompositionModel
         hCombustionThermo& carrierThermo_;
 
         //- Reference to the carrier phase species
-        const PtrList<specieReactingProperties>& carrierSpecies_;
+        const PtrList<typename CloudType::thermoType>& carrierSpecies_;
 
         //- Global (additional) liquid properties data
         autoPtr<liquidMixture> liquids_;
@@ -152,7 +152,8 @@ public:
             // Composition lists
 
                 //- Return the carrier species
-                const PtrList<specieReactingProperties>& carrierSpecies() const;
+                const PtrList<typename CloudType::thermoType>&
+                    carrierSpecies() const;
 
                 //- Return the global (additional) liquids
                 const liquidMixture& liquids() const;