diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C
index e2f1f92e7775e837a9822f475258a001a9305332..bfb0ce9f128d21032c08b5bb3f73163bc73bf500 100644
--- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C
+++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C
@@ -26,40 +26,14 @@ License
 
 #include "interpolationTable.H"
 #include "IFstream.H"
-#include "objectRegistry.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
 
 template<class Type>
-Foam::interpolationTable<Type>::interpolationTable()
-:
-    List<Tuple2<scalar, Type> >(),
-    dict_(dictionary::null),
-    boundAction_(interpolationTable::WARN),
-    fileName_("undefined_fileName")
-{}
-
-
-template<class Type>
-Foam::interpolationTable<Type>::interpolationTable
-(
-    const objectRegistry& obr,
-    const dictionary& dict
-)
-:
-    List<Tuple2<scalar, Type> >(),
-    dict_(dict),
-    boundAction_(wordToBoundAction(dict.lookup("boundAction"))),
-    fileName_(dict.lookup("fileName"))
+void Foam::interpolationTable<Type>::readTable()
 {
     fileName_.expand();
 
-    // Correct for relative path
-    if (fileName_[0] != '/')
-    {
-        fileName_ = obr.db().path()/fileName_;
-    }
-
     // Read data from file
     IFstream(fileName_)() >> *this;
 
@@ -78,6 +52,39 @@ Foam::interpolationTable<Type>::interpolationTable
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::interpolationTable<Type>::interpolationTable()
+:
+    List<Tuple2<scalar, Type> >(),
+    boundAction_(interpolationTable::WARN),
+    fileName_("undefined_fileName")
+{}
+
+
+template<class Type>
+Foam::interpolationTable<Type>::interpolationTable(const fileName& fn)
+:
+    List<Tuple2<scalar, Type> >(),
+    boundAction_(interpolationTable::WARN),
+    fileName_(fn)
+{
+    readTable();
+}
+
+
+template<class Type>
+Foam::interpolationTable<Type>::interpolationTable(const dictionary& dict)
+:
+    List<Tuple2<scalar, Type> >(),
+    boundAction_(wordToBoundAction(dict.lookup("boundAction"))),
+    fileName_(dict.lookup("fileName"))
+{
+    readTable();
+}
+
+
 template<class Type>
 Foam::interpolationTable<Type>::interpolationTable
 (
@@ -85,18 +92,11 @@ Foam::interpolationTable<Type>::interpolationTable
 )
 :
     List<Tuple2<scalar, Type> >(interpTable),
-    dict_(interpTable.dict_),
     boundAction_(interpTable.boundAction_),
     fileName_(interpTable.fileName_)
 {}
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-template<class Type>
-Foam::interpolationTable<Type>::~interpolationTable()
-{}
-
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
@@ -174,7 +174,7 @@ Foam::interpolationTable<Type>::wordToBoundAction
 template<class Type>
 void Foam::interpolationTable<Type>::check() const
 {
-    label n = size();
+    label n = this->size();
     scalar prevValue = List<Tuple2<scalar, Type> >::operator[](0).first();
 
     for (label i=1; i<n; ++i)
@@ -227,7 +227,7 @@ const Foam::Tuple2<Foam::scalar, Type>&
 Foam::interpolationTable<Type>::operator[](const label i) const
 {
     label ii = i;
-    label n  = size();
+    label n  = this->size();
 
     if (n <= 1)
     {
@@ -321,7 +321,7 @@ Foam::interpolationTable<Type>::operator[](const label i) const
 template<class Type>
 Type Foam::interpolationTable<Type>::operator()(const scalar value) const
 {
-    label n = size();
+    label n = this->size();
 
     if (n <= 1)
     {
diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H
index 207e19f91cc34ac8abebadac796e36492069e2a2..77b944cda083f420ef5ff8ccf7b68080aae02345 100644
--- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H
+++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H
@@ -84,9 +84,6 @@ private:
 
     // Private data
 
-        //- Parent dictionary
-        const dictionary& dict_;
-
         //- Enumeration for handling out-of-bound values
         boundActions boundAction_;
 
@@ -94,6 +91,12 @@ private:
         fileName fileName_;
 
 
+    // Private Member Functions
+
+        //- Read the table of data from file
+        void readTable();
+
+
 public:
 
     // Constructors
@@ -101,61 +104,45 @@ public:
         //- Construct null
         interpolationTable();
 
-        //- Construct from objectRegistry and dictionary
-        interpolationTable(const objectRegistry& obr, const dictionary& dict);
+        //- Construct given the name of the file containing the table of data
+        interpolationTable(const fileName& fn);
+
+        //- Construct by reading the fileName and boundAction from dictionary
+        //  and read the table from that file.
+        //  This is a specialised constructor used by patchFields
+        interpolationTable(const dictionary& dict);
 
         //- Construct copy
         interpolationTable(const interpolationTable& interpTable);
 
 
-    //- Destructor
-    ~interpolationTable();
-
-
     // Member Functions
 
-        // Access
-
-            //- Return the size
-            label size() const
-            {
-                return List<Tuple2<scalar, Type> >::size();
-            }
-
-            //- Return the out-of-bounds treatment as a word
-            word boundActionToWord(const boundActions& bound) const;
+        //- Return the out-of-bounds treatment as a word
+        word boundActionToWord(const boundActions& bound) const;
 
-            //- Return the out-of-bounds treatment as an enumeration
-            boundActions wordToBoundAction(const word& bound) const;
+        //- Return the out-of-bounds treatment as an enumeration
+        boundActions wordToBoundAction(const word& bound) const;
 
+        //- Check that list is monotonically increasing
+        //  Exit with a FatalError if there is a problem
+        void check() const;
 
-        // Check
+        //- Set the out-of-bounds treatment from enum, return previous
+        //  setting
+        boundActions boundAction(const boundActions& bound);
 
-            //- Check that list is monotonically increasing
-            //  Exit with a FatalError if there is a problem
-            void check() const;
+        //- Write
+        void write(Ostream& os) const;
 
 
-        // Edit
+    // Member Operators
 
-            //- Set the out-of-bounds treatment from enum, return previous
-            //  setting
-            boundActions boundAction(const boundActions& bound);
+        //- Return an element of constant Tuple2<scalar, Type>
+        const Tuple2<scalar, Type>& operator[](const label) const;
 
-
-        // Member Operators
-
-            //- Return an element of constant Tuple2<scalar, Type>
-            const Tuple2<scalar, Type>& operator[](const label) const;
-
-            //- Return an interpolated value
-            Type operator()(const scalar) const;
-
-
-        // I-O
-
-            //- Write
-            void write(Ostream& os) const;
+        //- Return an interpolated value
+        Type operator()(const scalar) const;
 };
 
 
@@ -169,6 +156,8 @@ public:
 #   include "interpolationTable.C"
 #endif
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C
index f492d86c7769ee68c63572ab43e2de15b62d7ec7..ba27bdd6fadb8d40665a8ccbd2a7bb5ed4142afb 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C
@@ -30,12 +30,10 @@ License
 #include "fvPatchFieldMapper.H"
 #include "surfaceFields.H"
 #include "Time.H"
-#include "IFstream.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::
-timeVaryingFlowRateInletVelocityFvPatchVectorField::
+Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField::
 timeVaryingFlowRateInletVelocityFvPatchVectorField
 (
     const fvPatch& p,
@@ -47,8 +45,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField
 {}
 
 
-Foam::
-timeVaryingFlowRateInletVelocityFvPatchVectorField::
+Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField::
 timeVaryingFlowRateInletVelocityFvPatchVectorField
 (
     const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf,
@@ -62,8 +59,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField
 {}
 
 
-Foam::
-timeVaryingFlowRateInletVelocityFvPatchVectorField::
+Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField::
 timeVaryingFlowRateInletVelocityFvPatchVectorField
 (
     const fvPatch& p,
@@ -72,12 +68,11 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField
 )
 :
     flowRateInletVelocityFvPatchVectorField(p, iF, dict),
-    timeSeries_(this->db(), dict)
+    timeSeries_(dict)
 {}
 
 
-Foam::
-timeVaryingFlowRateInletVelocityFvPatchVectorField::
+Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField::
 timeVaryingFlowRateInletVelocityFvPatchVectorField
 (
     const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf
@@ -88,8 +83,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField
 {}
 
 
-Foam::
-timeVaryingFlowRateInletVelocityFvPatchVectorField::
+Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField::
 timeVaryingFlowRateInletVelocityFvPatchVectorField
 (
     const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf,
@@ -103,8 +97,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::
-timeVaryingFlowRateInletVelocityFvPatchVectorField::
+void Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField::
 updateCoeffs()
 {
     if (updated())
@@ -117,8 +110,7 @@ updateCoeffs()
 }
 
 
-void Foam::
-timeVaryingFlowRateInletVelocityFvPatchVectorField::
+void Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField::
 write(Ostream& os) const
 {
     flowRateInletVelocityFvPatchVectorField::write(os);
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C
index dc09d678b2257f5b5151228a9614e62833ffbe2a..28b13832a4c8f85c612dc621833cbc15a3631008 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C
@@ -26,7 +26,6 @@ License
 
 #include "timeVaryingUniformFixedValueFvPatchField.H"
 #include "Time.H"
-#include "IFstream.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -53,7 +52,7 @@ timeVaryingUniformFixedValueFvPatchField
 )
 :
     fixedValueFvPatchField<Type>(p, iF),
-    timeSeries_(this->db(), dict)
+    timeSeries_(dict)
 {
    if (dict.found("value"))
    {
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C
index 711fccdbc629b4ccdfa26f552bbd938e6e571286..897514ced587e33b14aca40a95e96cfd5be9be00 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C
@@ -29,7 +29,6 @@ License
 #include "fvPatchFieldMapper.H"
 #include "volFields.H"
 #include "surfaceFields.H"
-#include "IFstream.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -66,7 +65,7 @@ timeVaryingUniformTotalPressureFvPatchScalarField
     psiName_(dict.lookup("psi")),
     gamma_(readScalar(dict.lookup("gamma"))),
     p0_(readScalar(dict.lookup("p0"))),
-    totalPressureTimeSeries_(this->db(), dict)
+    totalPressureTimeSeries_(dict)
 {
     if (dict.found("value"))
     {
@@ -215,7 +214,8 @@ void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::updateCoeffs()
 }
 
 
-void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::write(Ostream& os) const
+void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::
+write(Ostream& os) const
 {
     fvPatchScalarField::write(os);
     os.writeKeyword("U") << UName_ << token::END_STATEMENT << nl;