diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C
index fca5698857084279638ba7eae000bf23956e4e9f..cca5a8e9506516411e40149ccdaefdf06241e89c 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C
@@ -31,8 +31,10 @@ template<class Type>
 Foam::Constant<Type>::Constant(const word& entryName, Istream& is)
 :
     DataEntry<Type>(entryName),
-    value_(is)
-{}
+    value_(pTraits<Type>::zero)
+{
+    is  >> value_;
+}
 
 
 template<class Type>
@@ -43,22 +45,6 @@ Foam::Constant<Type>::Constant(const Constant<Type>& cnst)
 {}
 
 
-template<>
-Foam::Constant<Foam::label>::Constant(const word& entryName, Istream& is)
-:
-    DataEntry<label>(entryName),
-    value_(readLabel(is))
-{}
-
-
-template<>
-Foam::Constant<Foam::scalar>::Constant(const word& entryName, Istream& is)
-:
-    DataEntry<scalar>(entryName),
-    value_(readScalar(is))
-{}
-
-
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class Type>
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H
index 3a36935c111705a21eb3b62577c7c3599df490d2..ef15f0f0c57e2720708b7da21dff567230016d2f 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H
@@ -51,11 +51,7 @@ template<class Type>
 class Constant;
 
 template<class Type>
-Ostream& operator<<
-(
-    Ostream&,
-    const Constant<Type>&
-);
+Ostream& operator<<(Ostream&, const Constant<Type>&);
 
 /*---------------------------------------------------------------------------*\
                            Class Constant Declaration
@@ -92,6 +88,12 @@ public:
         //- Copy constructor
         Constant(const Constant<Type>& cnst);
 
+        //- Construct and return a clone
+        virtual tmp<DataEntry<Type> > clone() const
+        {
+            return tmp<DataEntry<Type> >(new Constant<Type>(*this));
+        }
+
 
     //- Destructor
     virtual ~Constant();
@@ -107,23 +109,12 @@ public:
 
 
     //- Ostream Operator
-    friend Ostream& operator<< <Type>
-    (
-        Ostream&,
-        const Constant<Type>&
-    );
+    friend Ostream& operator<< <Type>(Ostream&, const Constant<Type>&);
 };
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-template<>
-Constant<label>::Constant(const word& entryName, Istream& is);
-
-template<>
-Constant<scalar>::Constant(const word& entryName, Istream& is);
-
-
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C
index cd9f3a4b0c7276fd2ad0ba7a492df0bcd3bddb50..2ebcd67bd34d22ba8d55b051efaf4d42a4c08acd 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C
@@ -30,6 +30,7 @@ License
 template<class Type>
 Foam::DataEntry<Type>::DataEntry(const word& entryName)
 :
+    refCount(),
     name_(entryName)
 {}
 
@@ -37,6 +38,7 @@ Foam::DataEntry<Type>::DataEntry(const word& entryName)
 template<class Type>
 Foam::DataEntry<Type>::DataEntry(const DataEntry<Type>& de)
 :
+    refCount(),
     name_(de.name_)
 {}
 
@@ -57,6 +59,31 @@ const Foam::word& Foam::DataEntry<Type>::name() const
 }
 
 
+template<class Type>
+Type Foam::DataEntry<Type>::value(const scalar x) const
+{
+    notImplemented("Type Foam::DataEntry<Type>::value(const scalar) const");
+
+    return pTraits<Type>::zero;
+}
+
+
+template<class Type>
+Type Foam::DataEntry<Type>::integrate(const scalar x1, const scalar x2) const
+{
+    notImplemented
+    (
+        "Type Foam::DataEntry<Type>::integrate"
+        "("
+            "const scalar, "
+            "const scalar"
+        ") const"
+    );
+
+    return pTraits<Type>::zero;
+}
+
+
 // * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * * * //
 
 #include "DataEntryIO.C"
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H
index c2048c25d30a29c850bfc39f836e6123b0c99de3..03c1b7b417df2dacfdb10d3212a792e1381b7106 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H
@@ -62,6 +62,8 @@ Ostream& operator<<
 
 template<class Type>
 class DataEntry
+:
+    public refCount
 {
     // Private Member Functions
 
@@ -104,6 +106,12 @@ public:
         //- Copy constructor
         DataEntry(const DataEntry<Type>& de);
 
+        //- Construct and return a clone
+        virtual tmp<DataEntry<Type> > clone() const
+        {
+            return tmp<DataEntry<Type> >(new DataEntry<Type>(*this));
+        }
+
 
     //- Selector
     static autoPtr<DataEntry<Type> > New
@@ -128,10 +136,10 @@ public:
         // Evaluation
 
             //- Return value as a function of (scalar) independent variable
-            virtual Type value(const scalar x) const = 0;
+            virtual Type value(const scalar x) const;
 
             //- Integrate between two (scalar) values
-            virtual Type integrate(const scalar x1, const scalar x2) const = 0;
+            virtual Type integrate(const scalar x1, const scalar x2) const;
 
 
     //- Ostream Operator
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H
index bdb84e87eec213a4498e47a91e799f682cf24441..61a3596fd71351b325dcb5ba4deff5fc41060e88 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H
@@ -98,6 +98,12 @@ public:
         //- Copy constructor
         Table(const Table<Type>& tbl);
 
+        //- Construct and return a clone
+        virtual tmp<DataEntry<Type> > clone() const
+        {
+            return tmp<DataEntry<Type> >(new Table<Type>(*this));
+        }
+
 
     //- Destructor
     virtual ~Table();
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
index 47fc1fd30faef55bd113281f422e2685ceda0636..78c55c7870446b4df6cd4d7830c937a34908d245 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
@@ -91,12 +91,17 @@ public:
 
     // Constructors
 
-        //- Construct from entry name and Istream
         polynomial(const word& entryName, Istream& is);
 
         //- Copy constructor
         polynomial(const polynomial& poly);
 
+        //- Construct and return a clone
+        virtual tmp<DataEntry<scalar> > clone() const
+        {
+            return tmp<DataEntry<scalar> >(new polynomial(*this));
+        }
+
 
     //- Destructor
     virtual ~polynomial();
@@ -112,11 +117,7 @@ public:
 
 
     //- Ostream Operator
-    friend Ostream& operator<<
-    (
-        Ostream&,
-        const polynomial&
-    );
+    friend Ostream& operator<<(Ostream&, const polynomial&);
 };