diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
index 80aa0221310db50aa49241003a57069794f571d0..a5f090cc154d4a420ae5330aa8fa9ab6ca071195 100644
--- a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
@@ -117,7 +117,7 @@ Foam::DispersionRASModel<CloudType>::DispersionRASModel
 template<class CloudType>
 Foam::DispersionRASModel<CloudType>::DispersionRASModel
 (
-    DispersionRASModel<CloudType>& dm
+    const DispersionRASModel<CloudType>& dm
 )
 :
     DispersionModel<CloudType>(dm),
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
index 8496766376cce6c0ca896df8baba206228de0b4e..a80775549a959f84b0663ed6e33c343906991c56 100644
--- a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -59,13 +59,13 @@ protected:
             const volScalarField* kPtr_;
 
             //- Take ownership of the k field
-            bool ownK_;
+            mutable bool ownK_;
 
             //- Turbulence epsilon
             const volScalarField* epsilonPtr_;
 
             //- Take ownership of the epsilon field
-            bool ownEpsilon_;
+            mutable bool ownEpsilon_;
 
 
     // Protected Functions
@@ -89,10 +89,10 @@ public:
         DispersionRASModel(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        DispersionRASModel(DispersionRASModel<CloudType>& dm);
+        DispersionRASModel(const DispersionRASModel<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
+        virtual autoPtr<DispersionModel<CloudType> > clone() const
         {
             return autoPtr<DispersionModel<CloudType> >
             (
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
index 06fa810ac998e4a023a584533c0a4e304e152237..1b7b3c19511934b6032684e2d466e64ffca7d00a 100644
--- a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,7 +45,7 @@ Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
 template<class CloudType>
 Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
 (
-    GradientDispersionRAS<CloudType>& dm
+    const GradientDispersionRAS<CloudType>& dm
 )
 :
     DispersionRASModel<CloudType>(dm),
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
index b9ccfac5190d37435eb9f229a571dfc433502113..829c8fcfd3ddeb8a9040783bf03a1e2a158c33d5 100644
--- a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -75,10 +75,10 @@ public:
         GradientDispersionRAS(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        GradientDispersionRAS(GradientDispersionRAS<CloudType>& dm);
+        GradientDispersionRAS(const GradientDispersionRAS<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
+        virtual autoPtr<DispersionModel<CloudType> > clone() const
         {
             return autoPtr<DispersionModel<CloudType> >
             (
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
index badebbc110d84baa28e94692ba73a2b1cbcc9e5f..e5586285053d40c3865d6691e79b4c6cf0b6ffd5 100644
--- a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -41,7 +41,7 @@ Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
 template<class CloudType>
 Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
 (
-    StochasticDispersionRAS<CloudType>& dm
+    const StochasticDispersionRAS<CloudType>& dm
 )
 :
     DispersionRASModel<CloudType>(dm)
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
index d1c87d0485a659593643bdb742ac1c01f1d6cc50..fe6acc7ae00f897161a990a1390bcd8c75c4d95c 100644
--- a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -62,10 +62,10 @@ public:
         StochasticDispersionRAS(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        StochasticDispersionRAS(StochasticDispersionRAS<CloudType>& dm);
+        StochasticDispersionRAS(const StochasticDispersionRAS<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
+        virtual autoPtr<DispersionModel<CloudType> > clone() const
         {
             return autoPtr<DispersionModel<CloudType> >
             (
diff --git a/src/lagrangian/distributionModels/distributionModel/distributionModel.C b/src/lagrangian/distributionModels/distributionModel/distributionModel.C
index 83772fc77bda3ae7268ea0e184343d838e85b120..c04856d3aed77b5520ee51dc34ed74fd19ba2c4a 100644
--- a/src/lagrangian/distributionModels/distributionModel/distributionModel.C
+++ b/src/lagrangian/distributionModels/distributionModel/distributionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,6 +36,7 @@ namespace Foam
     }
 }
 
+
 // * * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * //
 
 void Foam::distributionModels::distributionModel::check() const
@@ -89,50 +90,4 @@ Foam::distributionModels::distributionModel::~distributionModel()
 {}
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-Foam::scalar Foam::distributionModels::distributionModel::sample() const
-{
-    notImplemented
-    (
-        "Foam::scalar "
-        "Foam::distributionModels::distributionModel::sample() const"
-    );
-    return 0.0;
-}
-
-
-Foam::scalar Foam::distributionModels::distributionModel::minValue() const
-{
-    notImplemented
-    (
-        "Foam::scalar "
-        "Foam::distributionModels::distributionModel::minValue() const"
-    );
-    return 0.0;
-}
-
-
-Foam::scalar Foam::distributionModels::distributionModel::maxValue() const
-{
-    notImplemented
-    (
-        "Foam::scalar "
-        "Foam::distributionModels::distributionModel::maxValue() const"
-    );
-    return 0.0;
-}
-
-
-Foam::scalar Foam::distributionModels::distributionModel::meanValue() const
-{
-    notImplemented
-    (
-        "Foam::scalar "
-        "Foam::distributionModels::distributionModel::meanValue() const"
-    );
-    return 0.0;
-}
-
-
 // ************************************************************************* //
diff --git a/src/lagrangian/distributionModels/distributionModel/distributionModel.H b/src/lagrangian/distributionModels/distributionModel/distributionModel.H
index efc7f2b1add643c4f083ef087360e847a5df9d89..fe5e876544984ceed14a32e2605f79f619ccd8a7 100644
--- a/src/lagrangian/distributionModels/distributionModel/distributionModel.H
+++ b/src/lagrangian/distributionModels/distributionModel/distributionModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -121,10 +121,7 @@ public:
         distributionModel(const distributionModel& p);
 
         //- Construct and return a clone
-        virtual autoPtr<distributionModel> clone() const
-        {
-            return autoPtr<distributionModel>(new distributionModel(*this));
-        }
+        virtual autoPtr<distributionModel> clone() const = 0;
 
 
     //- Selector
@@ -142,16 +139,16 @@ public:
     // Member Functions
 
         //- Sample the distributionModel
-        virtual scalar sample() const;
+        virtual scalar sample() const = 0;
 
         //- Return the minimum value
-        virtual scalar minValue() const;
+        virtual scalar minValue() const = 0;
 
         //- Return the maximum value
-        virtual scalar maxValue() const;
+        virtual scalar maxValue() const = 0;
 
         //- Return the maximum value
-        virtual scalar meanValue() const;
+        virtual scalar meanValue() const = 0;
 };
 
 
diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C
index 1fa257a56f4a29a54f5df94966ba17ddb658a003..50d05a2ee3157d10a3faeb1dff95ecff941e3430 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C
+++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,38 +54,6 @@ Foam::IntegrationScheme<Type>::~IntegrationScheme()
 {}
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-template<class Type>
-typename Foam::IntegrationScheme<Type>::integrationResult
-Foam::IntegrationScheme<Type>::integrate
-(
-    const Type& phi,
-    const scalar dt,
-    const Type& alphaBeta,
-    const scalar beta
-) const
-{
-    notImplemented
-    (
-        "Foam::IntegrationScheme<Type>::integrationResult"
-        "Foam::IntegrationScheme<Type>::integrate"
-        "("
-            "const Type&, "
-            "const scalar, "
-            "const Type&, "
-            "const scalar"
-        ") const"
-    );
-
-    typename IntegrationScheme<Type>::integrationResult retValue;
-    retValue.average() = pTraits<Type>::zero;
-    retValue.value() = pTraits<Type>::zero;
-
-    return retValue;
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "IntegrationSchemeNew.C"
diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
index 068f7e8c861ae3d3aebcff5eb0d31ff6811cf4f2..836371dcddaf13527b4add90c9093b9ce819da08 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
+++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -154,13 +154,7 @@ public:
         IntegrationScheme(const IntegrationScheme& is);
 
         //- Construct and return clone
-        virtual autoPtr<IntegrationScheme<Type> > clone() const
-        {
-            return autoPtr<IntegrationScheme<Type> >
-            (
-                new IntegrationScheme<Type>(*this)
-            );
-        }
+        virtual autoPtr<IntegrationScheme<Type> > clone() const = 0;
 
 
     // Selectors
@@ -186,7 +180,7 @@ public:
             const scalar dt,
             const Type& alphaBeta,
             const scalar beta
-        ) const;
+        ) const = 0;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C
index 865f359cf43003e1fe4bcb1d8067cd1eb4805578..1294e352358ec918b14aae750463bf5f7c123746 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -47,7 +47,10 @@ Foam::CollisionModel<CloudType>::CollisionModel
 
 
 template<class CloudType>
-Foam::CollisionModel<CloudType>::CollisionModel(CollisionModel<CloudType>& cm)
+Foam::CollisionModel<CloudType>::CollisionModel
+(
+    const CollisionModel<CloudType>& cm
+)
 :
     CloudSubModelBase<CloudType>(cm)
 {}
@@ -60,36 +63,6 @@ Foam::CollisionModel<CloudType>::~CollisionModel()
 {}
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-template<class CloudType>
-Foam::label Foam::CollisionModel<CloudType>::nSubCycles() const
-{
-    notImplemented
-    (
-        "Foam::label Foam::CollisionModel<CloudType>::nSubCycles() const"
-    );
-    return 0;
-}
-
-
-template<class CloudType>
-bool Foam::CollisionModel<CloudType>::controlsWallInteraction() const
-{
-    notImplemented
-    (
-        "bool Foam::CollisionModel<CloudType>::controlsWallInteraction()"
-    );
-    return false;
-}
-
-template<class CloudType>
-void Foam::CollisionModel<CloudType>::collide()
-{
-    notImplemented("void Foam::CollisionModel<CloudType>::collide()");
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "CollisionModelNew.C"
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
index ff92ce44c873a39b3ccee61342779638c2c0ee32..9134745f62c004f092d0e7ba3bb4cd2111ed98f9 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
@@ -94,16 +94,10 @@ public:
         );
 
         //- Construct copy
-        CollisionModel(CollisionModel<CloudType>& cm);
+        CollisionModel(const CollisionModel<CloudType>& cm);
 
         //- Construct and return a clone
-        virtual autoPtr<CollisionModel<CloudType> > clone()
-        {
-            return autoPtr<CollisionModel<CloudType> >
-            (
-                new CollisionModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<CollisionModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -122,14 +116,14 @@ public:
 
         //- Return the number of times to subcycle the current
         //  timestep to meet the criteria of the collision model
-        virtual label nSubCycles() const;
+        virtual label nSubCycles() const = 0;
 
         //- Indicates whether model determines wall collisions or not,
         //  used to determine what value to use for wallImpactDistance
-        virtual bool controlsWallInteraction() const;
+        virtual bool controlsWallInteraction() const = 0;
 
         // Collision function
-        virtual void collide();
+        virtual void collide() = 0;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.C
index 48f213e005267f67fcdd7f8369f7a298bbc69a6b..98ba1969572f7e9dba6de999feae87e2a15df979 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -41,7 +41,7 @@ Foam::NoCollision<CloudType>::NoCollision
 template<class CloudType>
 Foam::NoCollision<CloudType>::NoCollision
 (
-    NoCollision<CloudType>& cm
+    const NoCollision<CloudType>& cm
 )
 :
     CollisionModel<CloudType>(cm)
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.H b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.H
index b31c4b9f6065df5fc58279e870afb36f260a3162..95b029f6d8e73b8f104e58a3cf6eeb722b29a67e 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/NoCollision/NoCollision.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -64,10 +64,10 @@ public:
         NoCollision(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        NoCollision(NoCollision<CloudType>& cm);
+        NoCollision(const NoCollision<CloudType>& cm);
 
         //- Construct and return a clone
-        virtual autoPtr<CollisionModel<CloudType> > clone()
+        virtual autoPtr<CollisionModel<CloudType> > clone() const
         {
             return autoPtr<CollisionModel<CloudType> >
             (
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C
index 47c952db9e48d9eaa0886cf13c42e06dca560550..9a5e1994166083f1a22fc4f5b8d16c26aa1011cb 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -597,13 +597,17 @@ Foam::PairCollision<CloudType>::PairCollision
 
 
 template<class CloudType>
-Foam::PairCollision<CloudType>::PairCollision(PairCollision<CloudType>& cm)
+Foam::PairCollision<CloudType>::PairCollision
+(
+    const PairCollision<CloudType>& cm
+)
 :
     CollisionModel<CloudType>(cm),
     pairModel_(NULL),
     wallModel_(NULL),
     il_(cm.owner().mesh())
 {
+    // Need to clone to PairModel and WallModel
     notImplemented
     (
         "Foam::PairCollision<CloudType>::PairCollision"
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.H b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.H
index 638619c58af413ee9a55d8b75732fee5e1774c53..d17e0af9c71f4859ae64eed0fe9e6e6bfdc07130 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -151,10 +151,10 @@ public:
         PairCollision(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        PairCollision(PairCollision<CloudType>& cm);
+        PairCollision(const PairCollision<CloudType>& cm);
 
         //- Construct and return a clone
-        virtual autoPtr<CollisionModel<CloudType> > clone()
+        virtual autoPtr<CollisionModel<CloudType> > clone() const
         {
             return autoPtr<CollisionModel<CloudType> >
             (
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C
index 3f6288aa18622b03af75b1bd607ba3e9df5e450d..64508504a26fa3287ee13e9719445544f83e6839 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -49,7 +49,7 @@ Foam::DispersionModel<CloudType>::DispersionModel
 template<class CloudType>
 Foam::DispersionModel<CloudType>::DispersionModel
 (
-    DispersionModel<CloudType>& dm
+    const DispersionModel<CloudType>& dm
 )
 :
     CloudSubModelBase<CloudType>(dm)
@@ -63,36 +63,6 @@ Foam::DispersionModel<CloudType>::~DispersionModel()
 {}
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-template<class CloudType>
-Foam::vector Foam::DispersionModel<CloudType>::update
-(
-    const scalar,
-    const label,
-    const vector&,
-    const vector& Uc,
-    vector&,
-    scalar&
-)
-{
-    notImplemented
-    (
-        "Foam::vector Foam::DispersionModel<CloudType>::update"
-        "("
-            "const scalar, "
-            "const label, "
-            "const vector&, "
-            "const vector&, "
-            "vector&, "
-            "scalar&"
-        ")"
-    );
-
-    return Uc;
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "DispersionModelNew.C"
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
index 7e85e0eb26e28979ba3a85017ec61c0da308e16e..1af0caeb511bbfe7f463b01eba9b09f64356a593 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
@@ -85,16 +85,10 @@ public:
         );
 
         //- Construct copy
-        DispersionModel(DispersionModel<CloudType>& dm);
+        DispersionModel(const DispersionModel<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
-        {
-            return autoPtr<DispersionModel<CloudType> >
-            (
-                new DispersionModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<DispersionModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -120,7 +114,7 @@ public:
             const vector& Uc,
             vector& UTurb,
             scalar& tTurb
-        );
+        ) = 0;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C
index 49e4ab25fcdc513ef727e140f216b134e56ca5e4..eec313925fb99c033e2eaced3fb73f188e71f300 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,7 +35,7 @@ Foam::NoDispersion<CloudType>::NoDispersion(const dictionary&, CloudType& owner)
 
 
 template<class CloudType>
-Foam::NoDispersion<CloudType>::NoDispersion(NoDispersion<CloudType>& dm)
+Foam::NoDispersion<CloudType>::NoDispersion(const NoDispersion<CloudType>& dm)
 :
     DispersionModel<CloudType>(dm.owner_)
 {}
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H
index bb879e1afecf71d3885fb9e9f7b06a3eebaf83f5..887c1b02f9640850399ae7098c3e0b1186d0fe5a 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -60,10 +60,10 @@ public:
         NoDispersion(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        NoDispersion(NoDispersion<CloudType>& dm);
+        NoDispersion(const NoDispersion<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
+        virtual autoPtr<DispersionModel<CloudType> > clone() const
         {
             return autoPtr<DispersionModel<CloudType> >
             (
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
index ef82846c8b17fdae133162c0685e0b222d1266f6..5be9e15ebfd371e3615b6467f61c00d40df4f45b 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
@@ -32,18 +32,6 @@ using namespace Foam::constant::mathematical;
 
 // * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * * //
 
-template<class CloudType>
-bool Foam::InjectionModel<CloudType>::validInjection(const label parcelI)
-{
-    notImplemented
-    (
-        "bool Foam::InjectionModel<CloudType>::validInjection(const label)"
-    );
-
-    return false;
-}
-
-
 template<class CloudType>
 bool Foam::InjectionModel<CloudType>::prepareForNextTimeStep
 (
@@ -419,58 +407,6 @@ void Foam::InjectionModel<CloudType>::updateMesh()
 }
 
 
-template<class CloudType>
-Foam::scalar Foam::InjectionModel<CloudType>::timeEnd() const
-{
-    notImplemented
-    (
-        "Foam::scalar Foam::InjectionModel<CloudType>::timeEnd() const"
-    );
-
-    return 0.0;
-}
-
-
-template<class CloudType>
-Foam::label Foam::InjectionModel<CloudType>::parcelsToInject
-(
-    const scalar time0,
-    const scalar time1
-)
-{
-    notImplemented
-    (
-        "Foam::label Foam::InjectionModel<CloudType>::parcelsToInject"
-        "("
-            "const scalar, "
-            "const scalar"
-        ")"
-    );
-
-    return 0;
-}
-
-
-template<class CloudType>
-Foam::scalar Foam::InjectionModel<CloudType>::volumeToInject
-(
-    const scalar time0,
-    const scalar time1
-)
-{
-    notImplemented
-    (
-        "Foam::scalar Foam::InjectionModel<CloudType>::volumeToInject"
-        "("
-            "const scalar, "
-            "const scalar"
-        ")"
-    );
-
-    return 0.0;
-}
-
-
 template<class CloudType>
 Foam::scalar Foam::InjectionModel<CloudType>::averageParcelMass()
 {
@@ -710,68 +646,6 @@ void Foam::InjectionModel<CloudType>::injectSteadyState
 }
 
 
-template<class CloudType>
-void Foam::InjectionModel<CloudType>::setPositionAndCell
-(
-    const label parcelI,
-    const label nParcels,
-    const scalar time,
-    vector& position,
-    label& cellOwner,
-    label& tetFaceI,
-    label& tetPtI
-)
-{
-    notImplemented
-    (
-        "void Foam::InjectionModel<CloudType>::setPositionAndCell"
-        "("
-            "const label, "
-            "const label, "
-            "const scalar, "
-            "vector&, "
-            "label&, "
-            "label&, "
-            "label&"
-        ")"
-    );
-}
-
-
-template<class CloudType>
-void Foam::InjectionModel<CloudType>::setProperties
-(
-    const label parcelI,
-    const label nParcels,
-    const scalar time,
-    typename CloudType::parcelType& parcel
-)
-{
-    notImplemented
-    (
-        "void Foam::InjectionModel<CloudType>::setProperties"
-        "("
-            "const label, "
-            "const label, "
-            "const scalar, "
-            "typename CloudType::parcelType&"
-        ")"
-    );
-}
-
-
-template<class CloudType>
-bool Foam::InjectionModel<CloudType>::fullyDescribed() const
-{
-    notImplemented
-    (
-        "bool Foam::InjectionModel<CloudType>::fullyDescribed() const"
-    );
-
-    return false;
-}
-
-
 template<class CloudType>
 void Foam::InjectionModel<CloudType>::info(Ostream& os)
 {
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
index b44039633c5e08cabfb70803e3e038473e805bf3..b570a6bf4ab5080201b4fe68fef246df7a9c555e 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
@@ -143,7 +143,7 @@ protected:
 
         //- Additional flag to identify whether or not injection of parcelI is
         //  permitted
-        virtual bool validInjection(const label parcelI);
+        virtual bool validInjection(const label parcelI) = 0;
 
         //- Determine properties for next time step/injection interval
         virtual bool prepareForNextTimeStep
@@ -220,13 +220,7 @@ public:
         InjectionModel(const InjectionModel<CloudType>& im);
 
         //- Construct and return a clone
-        virtual autoPtr<InjectionModel<CloudType> > clone() const
-        {
-            return autoPtr<InjectionModel<CloudType> >
-            (
-                new InjectionModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<InjectionModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -275,21 +269,21 @@ public:
             inline scalar massInjected() const;
 
             //- Return the end-of-injection time
-            virtual scalar timeEnd() const;
+            virtual scalar timeEnd() const = 0;
 
             //- Number of parcels to introduce relative to SOI
             virtual label parcelsToInject
             (
                 const scalar time0,
                 const scalar time1
-            );
+            ) = 0;
 
             //- Volume of parcels to introduce relative to SOI
             virtual scalar volumeToInject
             (
                 const scalar time0,
                 const scalar time1
-            );
+            ) = 0;
 
             //- Return the average parcel mass over the injection period
             virtual scalar averageParcelMass();
@@ -327,7 +321,7 @@ public:
                 label& cellOwner,
                 label& tetFaceI,
                 label& tetPtI
-            );
+            ) = 0;
 
             //- Set the parcel properties
             virtual void setProperties
@@ -336,10 +330,10 @@ public:
                 const label nParcels,
                 const scalar time,
                 parcelType& parcel
-            );
+            ) = 0;
 
             //- Flag to identify whether model fully describes the parcel
-            virtual bool fullyDescribed() const;
+            virtual bool fullyDescribed() const = 0;
 
 
         // I-O
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionData.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionData.H
index 977d6e24e80601cc7cfd9f0a9585c9b65c5b70fc..ee76e3b806a2ad0b0273a4b86046b128dcb0f80f 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionData.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/kinematicParcelInjectionData.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -144,59 +144,60 @@ public:
         inline scalar& mDot();
 
 
-    // I-O
-
-        // Friend Operators
+    // Friend Operators
 
-            friend bool operator==
-            (
-                const kinematicParcelInjectionData& a,
-                const kinematicParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const kinematicParcelInjectionData&, "
-                        "const kinematicParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            friend bool operator!=
+        friend bool operator==
+        (
+            const kinematicParcelInjectionData& a,
+            const kinematicParcelInjectionData& b
+        )
+        {
+            notImplemented
             (
-                const kinematicParcelInjectionData& a,
-                const kinematicParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const kinematicParcelInjectionData&, "
-                        "const kinematicParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            //- Ostream operator
-            friend Ostream& operator<<
-            (
-                Ostream& os,
-                const kinematicParcelInjectionData& data
+                "operator=="
+                "("
+                    "const kinematicParcelInjectionData&, "
+                    "const kinematicParcelInjectionData&"
+                ")"
             );
 
-            //- Istream operator
-            friend Istream& operator>>
+            return false;
+        }
+
+        friend bool operator!=
+        (
+            const kinematicParcelInjectionData& a,
+            const kinematicParcelInjectionData& b
+        )
+        {
+            notImplemented
             (
-                Istream& is,
-                kinematicParcelInjectionData& data
+                "operator=="
+                "("
+                    "const kinematicParcelInjectionData&, "
+                    "const kinematicParcelInjectionData&"
+                ")"
             );
+
+            return false;
+        }
+
+
+    // I-O
+
+        //- Ostream operator
+        friend Ostream& operator<<
+        (
+            Ostream& os,
+            const kinematicParcelInjectionData& data
+        );
+
+        //- Istream operator
+        friend Istream& operator>>
+        (
+            Istream& is,
+            kinematicParcelInjectionData& data
+        );
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.C
index 550e12121937ca17c0ef59bf48c071052dfd8783..0ed36fac1bb34672774e8722cac056e7e46a6ea1 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,18 +25,6 @@ License
 
 #include "StochasticCollisionModel.H"
 
-// * * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * //
-
-template<class CloudType>
-void Foam::StochasticCollisionModel<CloudType>::collide(const scalar dt)
-{
-    notImplemented
-    (
-        "void Foam::NoStochasticCollision<CloudType>::collide(const scalar)"
-    );
-}
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class CloudType>
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.H
index 823a458aee77ae7f5c8b9dcb15750d9bd3fd7939..140c9d310d26fc80491202edcd337c0db0eb842d 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/StochasticCollision/StochasticCollisionModel/StochasticCollisionModel.H
@@ -58,7 +58,7 @@ class StochasticCollisionModel
 protected:
 
     //- Main collision routine
-    virtual void collide(const scalar dt);
+    virtual void collide(const scalar dt) = 0;
 
 
 public:
@@ -97,13 +97,7 @@ public:
         StochasticCollisionModel(const StochasticCollisionModel<CloudType>& cm);
 
         //- Construct and return a clone
-        virtual autoPtr<StochasticCollisionModel<CloudType> > clone() const
-        {
-            return autoPtr<StochasticCollisionModel<CloudType> >
-            (
-                new StochasticCollisionModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<StochasticCollisionModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C
index 51272f3560ed8d25a0899d74885e6818e7ba7c17..d2dbb92d6c5a401956d6f49affb97d0b3a9f0135 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -99,28 +99,6 @@ Foam::SurfaceFilmModel<CloudType>::~SurfaceFilmModel()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class CloudType>
-bool Foam::SurfaceFilmModel<CloudType>::transferParcel
-(
-    parcelType& p,
-    const polyPatch& pp,
-    bool& keepParticle
-)
-{
-    notImplemented
-    (
-        "bool Foam::SurfaceFilmModel<CloudType>::transferParcel"
-        "("
-            "parcelType&, "
-            "const polyPatch&, "
-            "bool&"
-        ")"
-    );
-
-    return false;
-}
-
-
 template<class CloudType>
 template<class TrackData>
 void Foam::SurfaceFilmModel<CloudType>::inject(TrackData& td)
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
index 65a2506928401bf963591f219dd7a119459b5105..4f93dde5274a0b8c6a982b3df31632636ce41989 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
@@ -161,13 +161,7 @@ public:
         SurfaceFilmModel(const SurfaceFilmModel<CloudType>& sfm);
 
         //- Construct and return a clone
-        virtual autoPtr<SurfaceFilmModel<CloudType> > clone() const
-        {
-            return autoPtr<SurfaceFilmModel<CloudType> >
-            (
-                new SurfaceFilmModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<SurfaceFilmModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -215,7 +209,7 @@ public:
                 parcelType& p,
                 const polyPatch& pp,
                 bool& keepParticle
-            );
+            ) = 0;
 
             //- Inject parcels into the cloud
             template<class TrackData>
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
index f18ad8bb5a5c40b9644f31e6f735c63c17f028dc..7cb6e81bf68daef0f08b96abb4244735266e7a1c 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
@@ -298,55 +298,6 @@ Foam::scalarField Foam::CompositionModel<CloudType>::X
 }
 
 
-template<class CloudType>
-const Foam::scalarField& Foam::CompositionModel<CloudType>::YMixture0() const
-{
-    notImplemented
-    (
-        "const scalarField& Foam::CompositionModel<CloudType>::YMixture0() "
-        "const"
-    );
-
-    return scalarField::null();
-}
-
-
-template<class CloudType>
-Foam::label Foam::CompositionModel<CloudType>::idGas() const
-{
-    notImplemented
-    (
-        "Foam::label Foam::CompositionModel<CloudType>::idGas() const"
-    );
-
-    return -1;
-}
-
-
-template<class CloudType>
-Foam::label Foam::CompositionModel<CloudType>::idLiquid() const
-{
-    notImplemented
-    (
-        "Foam::label Foam::CompositionModel<CloudType>::idLiquid() const"
-    );
-
-    return -1;
-}
-
-
-template<class CloudType>
-Foam::label Foam::CompositionModel<CloudType>::idSolid() const
-{
-    notImplemented
-    (
-        "Foam::label Foam::CompositionModel<CloudType>::idSolid() const"
-    );
-
-    return -1;
-}
-
-
 template<class CloudType>
 Foam::scalar Foam::CompositionModel<CloudType>::H
 (
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index 7938b702c4df6fec9ac515a885084e3b306808bb..b57da79fde10eb441b90fa5160882b48ba820d53 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -107,13 +107,7 @@ public:
         CompositionModel(const CompositionModel<CloudType>& cm);
 
         //- Construct and return a clone
-        virtual autoPtr<CompositionModel<CloudType> > clone() const
-        {
-            return autoPtr<CompositionModel<CloudType> >
-            (
-                new CompositionModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<CompositionModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -201,19 +195,19 @@ public:
 
                 //- Return the list of mixture mass fractions
                 //  If only 1 phase, return component fractions of that phase
-                virtual const scalarField& YMixture0() const;
+                virtual const scalarField& YMixture0() const = 0;
 
                 // Indices of gas, liquid and solid phases in phase properties
                 // list - returns -1 if not applicable
 
                     //- Gas id
-                    virtual label idGas() const;
+                    virtual label idGas() const = 0;
 
                     //- Liquid id
-                    virtual label idLiquid() const;
+                    virtual label idLiquid() const = 0;
 
                     //- Solid id
-                    virtual label idSolid() const;
+                    virtual label idSolid() const = 0;
 
 
         // Evaluation
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.C
index 5327feacd0a47c1a9dfb940d24a40c348ca19352..e80a061c6c70ecc48a40cf58245d815ebaa24a84 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -55,5 +55,34 @@ Foam::NoComposition<CloudType>::~NoComposition()
 {}
 
 
-// ************************************************************************* //
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+const Foam::scalarField& Foam::NoComposition<CloudType>::YMixture0() const
+{
+    return scalarField::null();
+}
+
+
+template<class CloudType>
+Foam::label Foam::NoComposition<CloudType>::idGas() const
+{
+    return -1;
+}
+
 
+template<class CloudType>
+Foam::label Foam::NoComposition<CloudType>::idLiquid() const
+{
+    return -1;
+}
+
+
+template<class CloudType>
+Foam::label Foam::NoComposition<CloudType>::idSolid() const
+{
+    return -1;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.H
index 3ee6b1b0ae0751d54c2bf886df27d8fa3eb6342e..716352dc74f5e213f6f635dc3e4e407e56c059f5 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/NoComposition/NoComposition.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -78,6 +78,29 @@ public:
 
     //- Destructor
     virtual ~NoComposition();
+
+
+    // Member Functions
+
+        // Access
+
+            // Mixture properties
+
+                //- Return the list of mixture mass fractions
+                //  If only 1 phase, return component fractions of that phase
+                virtual const scalarField& YMixture0() const;
+
+                // Indices of gas, liquid and solid phases in phase properties
+                // list
+
+                    //- Gas id
+                    virtual label idGas() const;
+
+                    //- Liquid id
+                    virtual label idLiquid() const;
+
+                    //- Solid id
+                    virtual label idSolid() const;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C
index e30594c305971132495e66661e3a849bd56d4304..3209c04fa51b76a25d270d0535654d7da2916769 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -158,30 +158,6 @@ Foam::SingleMixtureFraction<CloudType>::~SingleMixtureFraction()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class CloudType>
-const Foam::scalarField&
-Foam::SingleMixtureFraction<CloudType>::YGas0() const
-{
-    return this->phaseProps()[idGas_].Y();
-}
-
-
-template<class CloudType>
-const Foam::scalarField&
-Foam::SingleMixtureFraction<CloudType>::YLiquid0() const
-{
-    return this->phaseProps()[idLiquid_].Y();
-}
-
-
-template<class CloudType>
-const Foam::scalarField&
-Foam::SingleMixtureFraction<CloudType>::YSolid0() const
-{
-    return this->phaseProps()[idSolid_].Y();
-}
-
-
 template<class CloudType>
 const Foam::scalarField&
 Foam::SingleMixtureFraction<CloudType>::YMixture0() const
@@ -212,4 +188,3 @@ Foam::label Foam::SingleMixtureFraction<CloudType>::idSolid() const
 
 
 // ************************************************************************* //
-
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H
index 1bdc130ab7ec794e1d5cdbf24df64aa0bf1da6cb..1f2e1f8104d41d75dba2984cfe1aa188de5c3ca5 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -110,33 +110,6 @@ public:
 
         // Access
 
-            // Gas properties
-
-                //- Return the list of gas mass fractions
-                const scalarField& YGas0() const;
-
-                //- Return the total gas mass fraction
-                scalar YGasTot0() const;
-
-
-            // Liquid properties
-
-                //- Return the list of liquid mass fractions
-                const scalarField& YLiquid0() const;
-
-                //- Return the total liquid mass fraction
-                scalar YLiquidTot0() const;
-
-
-            // Solid properties
-
-                //- Return the list of solid mass fractions
-                const scalarField& YSolid0() const;
-
-                //- Return the total solid mass fraction
-                scalar YSolidTot0() const;
-
-
             // Mixture properties
 
                 //- Return the list of mixture mass fractions
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.C
index d80de18e590582cede56ba743bccd9cec23fc7b5..1fe61169cb838aba40925c71477dbf4710c97978 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -113,45 +113,6 @@ Foam::SinglePhaseMixture<CloudType>::~SinglePhaseMixture()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class CloudType>
-const Foam::scalarField&
-Foam::SinglePhaseMixture<CloudType>::YGas0() const
-{
-    notImplemented
-    (
-        "const Foam::scalarField& "
-        "Foam::SinglePhaseMixture<CloudType>::YGas0() const"
-    );
-    return this->phaseProps()[0].Y();
-}
-
-
-template<class CloudType>
-const Foam::scalarField&
-Foam::SinglePhaseMixture<CloudType>::YLiquid0() const
-{
-    notImplemented
-    (
-        "const Foam::scalarField& "
-        "Foam::SinglePhaseMixture<CloudType>::YLiquid0() const"
-    );
-    return this->phaseProps()[0].Y();
-}
-
-
-template<class CloudType>
-const Foam::scalarField&
-Foam::SinglePhaseMixture<CloudType>::YSolid0() const
-{
-    notImplemented
-    (
-        "const Foam::scalarField& "
-        "Foam::SinglePhaseMixture<CloudType>::YSolid0() const"
-    );
-    return this->phaseProps()[0].Y();
-}
-
-
 template<class CloudType>
 const Foam::scalarField&
 Foam::SinglePhaseMixture<CloudType>::YMixture0() const
@@ -182,4 +143,3 @@ Foam::label Foam::SinglePhaseMixture<CloudType>::idSolid() const
 
 
 // ************************************************************************* //
-
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
index ed9b78f6d6f71d417c684395d2cb5ee9b7aee942..239384cfb2a948f9f63814bb878e2023e914a252 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -104,33 +104,6 @@ public:
 
         // Access
 
-            // Gas properties
-
-                //- Return the list of gas mass fractions
-                const scalarField& YGas0() const;
-
-                //- Return the total gas mass fraction
-                scalar YGasTot0() const;
-
-
-            // Liquid properties
-
-                //- Return the list of liquid mass fractions
-                const scalarField& YLiquid0() const;
-
-                //- Return the total liquid mass fraction
-                scalar YLiquidTot0() const;
-
-
-            // Solid properties
-
-                //- Return the list of solid mass fractions
-                const scalarField& YSolid0() const;
-
-                //- Return the total solid mass fraction
-                scalar YSolidTot0() const;
-
-
             // Mixture properties
 
                 //- Return the list of mixture mass fractions
diff --git a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionData.H b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionData.H
index c1174a4e8f61af2bf596a217a8fc4b5feceed3a7..af582909dca96444ce474f1b1083eb1903b048e4 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionData.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/reactingParcelInjectionData.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -111,57 +111,19 @@ public:
 
     // I-O
 
-        // Friend Operators
-
-            friend bool operator==
-            (
-                const reactingParcelInjectionData& a,
-                const reactingParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const reactingParcelInjectionData&, "
-                        "const reactingParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            friend bool operator!=
-            (
-                const reactingParcelInjectionData& a,
-                const reactingParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const reactingParcelInjectionData&, "
-                        "const reactingParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            //- Ostream operator
-            friend Ostream& operator<<
-            (
-                Ostream& os,
-                const reactingParcelInjectionData& data
-            );
-
-            //- Istream operator
-            friend Istream& operator>>
-            (
-                Istream& is,
-                reactingParcelInjectionData& data
-            );
+        //- Ostream operator
+        friend Ostream& operator<<
+        (
+            Ostream& os,
+            const reactingParcelInjectionData& data
+        );
+
+        //- Istream operator
+        friend Istream& operator>>
+        (
+            Istream& is,
+            reactingParcelInjectionData& data
+        );
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.C
index 3ea746b88493705c67ca1ff72ce6c1ee119e9e05..7d388ce119c40ecef0b878e5c702b047d1bc743f 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -71,40 +71,6 @@ Foam::DevolatilisationModel<CloudType>::~DevolatilisationModel()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class CloudType>
-void Foam::DevolatilisationModel<CloudType>::calculate
-(
-    const scalar,
-    const scalar,
-    const scalar,
-    const scalar,
-    const scalar,
-    const scalarField&,
-    const scalarField&,
-    const scalarField&,
-    label&,
-    scalarField&
-) const
-{
-    notImplemented
-    (
-        "void Foam::DevolatilisationModel<CloudType>::calculate"
-        "("
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalarField&, "
-            "const scalarField&, "
-            "const scalarField&, "
-            "label&, "
-            "scalarField&"
-        ") const"
-    );
-}
-
-
 template<class CloudType>
 void Foam::DevolatilisationModel<CloudType>::addToDevolatilisationMass
 (
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
index 41d0403cdd70028db92178dff1a550f1cfba9cc8..334d757b92a9358e4d1ff63a785abb8eeeef47bb 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
@@ -99,13 +99,7 @@ public:
         DevolatilisationModel(const DevolatilisationModel<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DevolatilisationModel<CloudType> > clone() const
-        {
-            return autoPtr<DevolatilisationModel<CloudType> >
-            (
-                new DevolatilisationModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<DevolatilisationModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -135,7 +129,7 @@ public:
             const scalarField& YSolidEff,
             label& canCombust,
             scalarField& dMassDV
-        ) const;
+        ) const = 0;
 
         //- Add to devolatilisation mass
         void addToDevolatilisationMass(const scalar dMass);
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.C
index 238cb4a02ed59e253ac3ba433327b5d55b5fa576..1665c224c88610f9fdae99388833ce59c02fec69 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -75,7 +75,7 @@ void Foam::NoDevolatilisation<CloudType>::calculate
     const scalarField&,
     const scalarField&,
     const scalarField&,
-    bool& canCombust,
+    label& canCombust,
     scalarField&
 ) const
 {
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.H
index b3a617ba86850aaec06e90381104ab5a5f2d8f55..dab9b47dab16c65885196d50d76fc35ab5d5b90b 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -92,7 +92,7 @@ public:
             const scalarField& YGasEff,
             const scalarField& YLiquidEff,
             const scalarField& YSolidEff,
-            bool& canCombust,
+            label& canCombust,
             scalarField& dMassDV
         ) const;
 };
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionData.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionData.H
index 4875a68d1f6f322e28534d8a1118dad8bdeac045..43c7eacf466ad43cdb1a64ad86bb346a0e216593 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionData.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionData.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -128,57 +128,19 @@ public:
 
     // I-O
 
-        // Friend Operators
-
-            friend bool operator==
-            (
-                const reactingMultiphaseParcelInjectionData& a,
-                const reactingMultiphaseParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const reactingMultiphaseParcelInjectionData&, "
-                        "const reactingMultiphaseParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            friend bool operator!=
-            (
-                const reactingMultiphaseParcelInjectionData& a,
-                const reactingMultiphaseParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const reactingMultiphaseParcelInjectionData&, "
-                        "const reactingMultiphaseParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            //- Ostream operator
-            friend Ostream& operator<<
-            (
-                Ostream& os,
-                const reactingMultiphaseParcelInjectionData& data
-            );
-
-            //- Istream operator
-            friend Istream& operator>>
-            (
-                Istream& is,
-                reactingMultiphaseParcelInjectionData& data
-            );
+        //- Ostream operator
+        friend Ostream& operator<<
+        (
+            Ostream& os,
+            const reactingMultiphaseParcelInjectionData& data
+        );
+
+        //- Istream operator
+        friend Istream& operator>>
+        (
+            Istream& is,
+            reactingMultiphaseParcelInjectionData& data
+        );
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
index 3beee0747fdf3afea1c175f2aa186baeb46c38c1..5a890c7b63802a4ed5ff753f58e2afe6d646f4f4 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -71,56 +71,6 @@ Foam::SurfaceReactionModel<CloudType>::~SurfaceReactionModel()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class CloudType>
-Foam::scalar Foam::SurfaceReactionModel<CloudType>::calculate
-(
-    const scalar,
-    const label,
-    const scalar,
-    const scalar,
-    const scalar,
-    const scalar,
-    const scalar,
-    const scalar,
-    const scalarField&,
-    const scalarField&,
-    const scalarField&,
-    const scalarField&,
-    const scalar,
-    scalarField&,
-    scalarField&,
-    scalarField&,
-    scalarField&
-) const
-{
-    notImplemented
-    (
-        "Foam::scalar Foam::SurfaceReactionModel<CloudType>::calculate"
-        "("
-            "const scalar, "
-            "const label, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalarField&, "
-            "const scalarField&, "
-            "const scalarField&, "
-            "const scalarField&, "
-            "const scalar, "
-            "scalarField&, "
-            "scalarField&, "
-            "scalarField&, "
-            "scalarField&"
-        ") const"
-    );
-
-    return 0.0;
-}
-
-
 template<class CloudType>
 void Foam::SurfaceReactionModel<CloudType>::addToSurfaceReactionMass
 (
@@ -152,4 +102,3 @@ void Foam::SurfaceReactionModel<CloudType>::info(Ostream& os)
 #include "SurfaceReactionModelNew.C"
 
 // ************************************************************************* //
-
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
index 54892c4ba7d2192bbd3bfb2462213864dbf573cd..a490a243238301a57183859011ad82406d9b4625 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
@@ -101,13 +101,7 @@ public:
         SurfaceReactionModel(const SurfaceReactionModel<CloudType>& srm);
 
         //- Construct and return a clone
-        virtual autoPtr<SurfaceReactionModel<CloudType> > clone() const
-        {
-            return autoPtr<SurfaceReactionModel<CloudType> >
-            (
-                new SurfaceReactionModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<SurfaceReactionModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -145,7 +139,7 @@ public:
             scalarField& dMassLiquid,
             scalarField& dMassSolid,
             scalarField& dMassSRCarrier
-        ) const;
+        ) const = 0;
 
         //- Add to devolatilisation mass
         void addToSurfaceReactionMass(const scalar dMass);
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C
index 2f7dfbc0e0c9a57c82f6f871ba66f6f0c8d90b09..a3119cb266b28ed757a34d41d296aaa15527adeb 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -75,26 +75,6 @@ const Foam::Switch& Foam::HeatTransferModel<CloudType>::BirdCorrection() const
 }
 
 
-template<class CloudType>
-Foam::scalar Foam::HeatTransferModel<CloudType>::Nu
-(
-    const scalar Re,
-    const scalar Pr
-) const
-{
-    notImplemented
-    (
-        "Foam::scalar Foam::HeatTransferModel<CloudType>::Nu"
-        "("
-            "const scalar, "
-            "const scalar"
-        ") const"
-    );
-
-    return 0.0;
-}
-
-
 template<class CloudType>
 Foam::scalar Foam::HeatTransferModel<CloudType>::htc
 (
@@ -126,6 +106,4 @@ Foam::scalar Foam::HeatTransferModel<CloudType>::htc
 
 #include "HeatTransferModelNew.C"
 
-
 // ************************************************************************* //
-
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
index 70500e7e58ded0ff94ed8ff1d6c27a98a377ab21..b2dc21c5282b2440bff6582d56c492ca67d9d9c4 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
@@ -97,13 +97,7 @@ public:
         HeatTransferModel(const HeatTransferModel<CloudType>& htm);
 
         //- Construct and return a clone
-        virtual autoPtr<HeatTransferModel<CloudType> > clone() const
-        {
-            return autoPtr<HeatTransferModel<CloudType> >
-            (
-                new HeatTransferModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<HeatTransferModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -133,7 +127,7 @@ public:
             (
                 const scalar Re,
                 const scalar Pr
-            ) const;
+            ) const = 0;
 
             //- Return heat transfer coefficient
             virtual scalar htc
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionData.H b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionData.H
index 98f8170beccce854091fa1e1a7807f318e445972..84df957be466afb5107a694c5f2cc2cb8cc7161c 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionData.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/thermoParcelInjectionData.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -119,57 +119,19 @@ public:
 
     // I-O
 
-        // Friend Operators
-
-            friend bool operator==
-            (
-                const thermoParcelInjectionData& a,
-                const thermoParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const thermoParcelInjectionData&, "
-                        "const thermoParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            friend bool operator!=
-            (
-                const thermoParcelInjectionData& a,
-                const thermoParcelInjectionData& b
-            )
-            {
-                notImplemented
-                (
-                    "operator=="
-                    "("
-                        "const thermoParcelInjectionData&, "
-                        "const thermoParcelInjectionData&"
-                    ")"
-                );
-
-                return false;
-            }
-
-            //- Ostream operator
-            friend Ostream& operator<<
-            (
-                Ostream& os,
-                const thermoParcelInjectionData& data
-            );
-
-            //- Istream operator
-            friend Istream& operator>>
-            (
-                Istream& is,
-                thermoParcelInjectionData& data
-            );
+        //- Ostream operator
+        friend Ostream& operator<<
+        (
+            Ostream& os,
+            const thermoParcelInjectionData& data
+        );
+
+        //- Istream operator
+        friend Istream& operator>>
+        (
+            Istream& is,
+            thermoParcelInjectionData& data
+        );
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H
index 7b0bd547d6d3dc84fe8255bd8ec39ee1599e0c73..dd434f1b36e92e95060e3f310d001f00bc286404 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -254,7 +254,7 @@ public:
         ThermoSurfaceFilm(const ThermoSurfaceFilm<CloudType>& sfm);
 
         //- Construct and return a clone using supplied owner cloud
-        virtual autoPtr<SurfaceFilmModel<CloudType> > clone()
+        virtual autoPtr<SurfaceFilmModel<CloudType> > clone() const
         {
             return autoPtr<SurfaceFilmModel<CloudType> >
             (
diff --git a/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.C b/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.C
index d406b6bd29d0dc1520b60135f48b29af7f66b0ee..36ebedd639c43d19b0ee44533b5eb9acb7302607 100644
--- a/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.C
+++ b/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -68,19 +68,6 @@ Foam::AtomizationModel<CloudType>::~AtomizationModel()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class CloudType>
-Foam::scalar Foam::AtomizationModel<CloudType>::initLiquidCore() const
-{
-    notImplemented
-    (
-        "Foam::scalar "
-        "Foam::AtomizationModel<CloudType>::initLiquidCore() const"
-    );
-
-    return 0.0;
-}
-
-
 template<class CloudType>
 Foam::scalar Foam::AtomizationModel<CloudType>::Taverage
 (
@@ -92,62 +79,8 @@ Foam::scalar Foam::AtomizationModel<CloudType>::Taverage
 }
 
 
-template<class CloudType>
-bool Foam::AtomizationModel<CloudType>::calcChi() const
-{
-    notImplemented("bool Foam::AtomizationModel<CloudType>::calcChi()");
-
-    return false;
-}
-
-
-template<class CloudType>
-void Foam::AtomizationModel<CloudType>::update
-(
-    const scalar dt,
-    scalar& d,
-    scalar& liquidCore,
-    scalar& tc,
-    const scalar rho,
-    const scalar mu,
-    const scalar sigma,
-    const scalar volFlowRate,
-    const scalar rhoAv,
-    const scalar Urel,
-    const vector& pos,
-    const vector& injectionPos,
-    const scalar pAmbient,
-    const scalar chi,
-    cachedRandom& rndGen
-) const
-{
-    notImplemented
-    (
-        "void Foam::AtomizationModel<CloudType>::update"
-        "("
-            "const scalar, "
-            "scalar&, "
-            "scalar&, "
-            "scalar&, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const vector&, "
-            "const vector&, "
-            "const scalar, "
-            "const scalar, "
-            "cachedRandom&"
-        ") const"
-    );
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "AtomizationModelNew.C"
 
 // ************************************************************************* //
-
diff --git a/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.H b/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.H
index c344b2b59024c944e6ee9493ca5683f040f1e602..d0e8ecacbfd3d174320776cbe650941faa170547 100644
--- a/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.H
+++ b/src/lagrangian/spray/submodels/AtomizationModel/AtomizationModel/AtomizationModel.H
@@ -91,13 +91,7 @@ public:
         AtomizationModel(const AtomizationModel<CloudType>& am);
 
         //- Construct and return a clone
-        virtual autoPtr<AtomizationModel<CloudType> > clone() const
-        {
-            return autoPtr<AtomizationModel<CloudType> >
-            (
-                new AtomizationModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<AtomizationModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -114,14 +108,14 @@ public:
 
     // Member Functions
 
-        //- Initial value of liquidCore
-        virtual scalar initLiquidCore() const;
-
         //- Average temperature calculation
         scalar Taverage(const scalar& Tliq, const scalar& Tc) const;
 
+        //- Initial value of liquidCore
+        virtual scalar initLiquidCore() const = 0;
+
         //- Flag to indicate if chi needs to be calculated
-        virtual bool calcChi() const;
+        virtual bool calcChi() const = 0;
 
         virtual void update
         (
@@ -140,7 +134,7 @@ public:
             const scalar pAmbient,
             const scalar chi,
             cachedRandom& rndGen
-        ) const;
+        ) const = 0;
 };
 
 
diff --git a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C
index 60047fd32fd0963a8d088b38fd1ead39216312b8..ff89670dc6178296631a8d42d09fb8e0e35c8fa6 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C
+++ b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -94,66 +94,6 @@ Foam::BreakupModel<CloudType>::~BreakupModel()
 {}
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-template<class CloudType>
-bool Foam::BreakupModel<CloudType>::update
-(
-    const scalar dt,
-    const vector& g,
-    scalar& d,
-    scalar& tc,
-    scalar& ms,
-    scalar& nParticle,
-    scalar& KHindex,
-    scalar& y,
-    scalar& yDot,
-    const scalar d0,
-    const scalar rho,
-    const scalar mu,
-    const scalar sigma,
-    const vector& U,
-    const scalar rhoc,
-    const scalar muc,
-    const vector& Urel,
-    const scalar Urmag,
-    const scalar tMom,
-    scalar& dChild,
-    scalar& massChild
-)
-{
-    notImplemented
-    (
-        "bool Foam::BreakupModel<CloudType>::update"
-        "("
-            "const scalar, "
-            "const vector&, "
-            "scalar&, "
-            "scalar&, "
-            "scalar&, "
-            "scalar&, "
-            "scalar&, "
-            "scalar&, "
-            "scalar&, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const scalar, "
-            "const vector&, "
-            "const scalar, "
-            "const scalar, "
-            "const vector&, "
-            "const scalar, "
-            "const scalar, "
-            "scalar&, "
-            "scalar&"
-        ");"
-    );
-
-    return false;
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "BreakupModelNew.C"
diff --git a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H
index d0f57e7d56e72b85ece773217faf8fe793c5c15e..6300a8fcfa5424d49dc618f6107d7824e7ec7874 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H
+++ b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H
@@ -106,13 +106,7 @@ public:
         BreakupModel(const BreakupModel<CloudType>& bum);
 
         //- Construct and return a clone
-        virtual autoPtr<BreakupModel<CloudType> > clone() const
-        {
-            return autoPtr<BreakupModel<CloudType> >
-            (
-                new BreakupModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<BreakupModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -187,7 +181,7 @@ public:
             const scalar tMom,
             scalar& dChild,
             scalar& massChild
-        );
+        ) = 0;
 };
 
 
diff --git a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
index cb314e5af977735ba968358ac3494a482000438f..e34759e3ed1689abcf91cc6b957801bf29a2dd7e 100644
--- a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
+++ b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
@@ -120,7 +120,7 @@ Foam::DispersionRASModel<CloudType>::DispersionRASModel
 template<class CloudType>
 Foam::DispersionRASModel<CloudType>::DispersionRASModel
 (
-    DispersionRASModel<CloudType>& dm
+    const DispersionRASModel<CloudType>& dm
 )
 :
     DispersionModel<CloudType>(dm),
diff --git a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
index c105035c21a556924d2f716c0f69ac52fd8505d2..278192e5062c0990c4774e07b58d1b7fd23a2c12 100644
--- a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
+++ b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -59,13 +59,13 @@ protected:
             const volScalarField* kPtr_;
 
             //- Take ownership of the k field
-            bool ownK_;
+            mutable bool ownK_;
 
             //- Turbulence epsilon
             const volScalarField* epsilonPtr_;
 
             //- Take ownership of the epsilon field
-            bool ownEpsilon_;
+            mutable bool ownEpsilon_;
 
 
     // Protected Functions
@@ -89,16 +89,10 @@ public:
         DispersionRASModel(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        DispersionRASModel(DispersionRASModel<CloudType>& dm);
+        DispersionRASModel(const DispersionRASModel<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
-        {
-            return autoPtr<DispersionModel<CloudType> >
-            (
-                new DispersionRASModel<CloudType>(*this)
-            );
-        }
+        virtual autoPtr<DispersionModel<CloudType> > clone() const = 0;
 
 
     //- Destructor
@@ -107,6 +101,17 @@ public:
 
     // Member Functions
 
+        //- Update (disperse particles)
+        virtual vector update
+        (
+            const scalar dt,
+            const label cellI,
+            const vector& U,
+            const vector& Uc,
+            vector& UTurb,
+            scalar& tTurb
+        ) = 0;
+
         //- Cache carrier fields
         virtual void cacheFields(const bool store);
 
diff --git a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
index 06fa810ac998e4a023a584533c0a4e304e152237..1b7b3c19511934b6032684e2d466e64ffca7d00a 100644
--- a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
+++ b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,7 +45,7 @@ Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
 template<class CloudType>
 Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
 (
-    GradientDispersionRAS<CloudType>& dm
+    const GradientDispersionRAS<CloudType>& dm
 )
 :
     DispersionRASModel<CloudType>(dm),
diff --git a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
index c00db907c92caf76ce5a0229eaa0006906f2bbdf..c48025d41b7059fe0836d787365ef337361002cf 100644
--- a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
+++ b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -60,7 +60,7 @@ protected:
             const volVectorField* gradkPtr_;
 
             //- Take ownership of the grad(k)
-            bool ownGradK_;
+            mutable bool ownGradK_;
 
 
 public:
@@ -75,10 +75,10 @@ public:
         GradientDispersionRAS(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        GradientDispersionRAS(GradientDispersionRAS<CloudType>& dm);
+        GradientDispersionRAS(const GradientDispersionRAS<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
+        virtual autoPtr<DispersionModel<CloudType> > clone() const
         {
             return autoPtr<DispersionModel<CloudType> >
             (
diff --git a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
index d3c6c5b739b4ca85bb6f8a7682159e6e37a08033..e5586285053d40c3865d6691e79b4c6cf0b6ffd5 100644
--- a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
+++ b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -41,7 +41,7 @@ Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
 template<class CloudType>
 Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
 (
-    StochasticDispersionRAS<CloudType>& dm
+    const StochasticDispersionRAS<CloudType>& dm
 )
 :
     DispersionRASModel<CloudType>(dm)
diff --git a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
index 5707690233c616d3265c702e0ffd6412005a8e04..fe6acc7ae00f897161a990a1390bcd8c75c4d95c 100644
--- a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
+++ b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -62,10 +62,10 @@ public:
         StochasticDispersionRAS(const dictionary& dict, CloudType& owner);
 
         //- Construct copy
-        StochasticDispersionRAS(StochasticDispersionRAS<CloudType>& dm);
+        StochasticDispersionRAS(const StochasticDispersionRAS<CloudType>& dm);
 
         //- Construct and return a clone
-        virtual autoPtr<DispersionModel<CloudType> > clone()
+        virtual autoPtr<DispersionModel<CloudType> > clone() const
         {
             return autoPtr<DispersionModel<CloudType> >
             (