diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H
index a74b4e80221b08df8743866215c7ef8c5311362c..25e2a9817fbe680f3b52b91b5a7fc187d52a3643 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H
@@ -5,10 +5,13 @@
     U = rUA*UEqn().H();
     UEqn.clear();
 
-    phi =
+    surfaceScalarField phiU
+    (
         (fvc::interpolate(U) & mesh.Sf())
       + fvc::ddtPhiCorr(rUA, U, phi)
-      + betaghf*fvc::snGrad(T)*rUAf*mesh.magSf();
+    );
+
+    phi = phiU + betaghf*fvc::snGrad(T)*rUAf*mesh.magSf();
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
@@ -17,8 +20,7 @@
             fvm::laplacian(rUAf, pd) == fvc::div(phi)
         );
 
-        // retain the residual from the first iteration
-        if (nonOrth == 0)
+        if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
         {
             pdEqn.solve(mesh.solver(pd.name() + "Final"));
         }
@@ -29,17 +31,12 @@
 
         if (nonOrth == nNonOrthCorr)
         {
-            // Calculate the conservative fluxes
-            phi -= pdEqn.flux();
-
-            // Correct the momentum source with the pressure gradient flux
-            // calculated from the relaxed pressure
-            U -=
-                rUA
-               *fvc::reconstruct((pdEqn.flux() - betaghf*fvc::snGrad(T))/rUAf);
-            U.correctBoundaryConditions();
+            phi += pdEqn.flux();
         }
     }
 
+    U -= rUA*fvc::reconstruct((phi - phiU)/rUAf);
+    U.correctBoundaryConditions();
+
     #include "continuityErrs.H"
 }
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C
index 1e42d48ea3bd4cceb6c4c95ae23465084c56658d..19c08e5504fc895005d3d9047711721cb0d3b27e 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C
@@ -102,7 +102,9 @@ void Foam::cyclicPolyPatch::calcTransforms()
             ),
             points
         );
+
         pointField half0Ctrs(calcFaceCentres(half0, half0.points()));
+
         scalarField half0Tols(calcFaceTol(half0, half0.points(), half0Ctrs));
 
         primitivePatch half1
@@ -740,9 +742,7 @@ Foam::cyclicPolyPatch::cyclicPolyPatch
     rotationAxis_(vector::zero),
     rotationCentre_(point::zero),
     separationVector_(vector::zero)
-{
-    calcTransforms();
-}
+{}
 
 
 Foam::cyclicPolyPatch::cyclicPolyPatch
@@ -786,8 +786,6 @@ Foam::cyclicPolyPatch::cyclicPolyPatch
             }
         }
     }
-
-    calcTransforms();
 }
 
 
@@ -805,9 +803,7 @@ Foam::cyclicPolyPatch::cyclicPolyPatch
     rotationAxis_(pp.rotationAxis_),
     rotationCentre_(pp.rotationCentre_),
     separationVector_(pp.separationVector_)
-{
-    calcTransforms();
-}
+{}
 
 
 Foam::cyclicPolyPatch::cyclicPolyPatch
@@ -827,9 +823,7 @@ Foam::cyclicPolyPatch::cyclicPolyPatch
     rotationAxis_(pp.rotationAxis_),
     rotationCentre_(pp.rotationCentre_),
     separationVector_(pp.separationVector_)
-{
-    calcTransforms();
-}
+{}
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
@@ -852,6 +846,7 @@ void Foam::cyclicPolyPatch::initGeometry()
 void Foam::cyclicPolyPatch::calcGeometry()
 {
     polyPatch::calcGeometry();
+    calcTransforms();
 }
 
 void Foam::cyclicPolyPatch::initMovePoints(const pointField& p)
diff --git a/src/lagrangian/dieselSpray/spray/spray.C b/src/lagrangian/dieselSpray/spray/spray.C
index fbd26cd2107b08acf95401ed466b599db25470c8..1f4b1a242fc28027105b480f34d914f88886b12f 100644
--- a/src/lagrangian/dieselSpray/spray/spray.C
+++ b/src/lagrangian/dieselSpray/spray/spray.C
@@ -85,6 +85,9 @@ Foam::spray::spray
         )
     ),
 
+    ambientPressure_(p_.average().value()),
+    ambientTemperature_(T_.average().value()),
+
     injectors_
     (
         IOobject
@@ -204,10 +207,7 @@ Foam::spray::spray
     srhos_(fuels_->components().size()),
 
     totalInjectedLiquidMass_(0.0),
-    injectedLiquidKE_(0.0),
-
-    ambientPressure_(p_.average().value()),
-    ambientTemperature_(T_.average().value())
+    injectedLiquidKE_(0.0)
 
 {
     // create the evaporation source fields
diff --git a/src/lagrangian/dieselSpray/spray/spray.H b/src/lagrangian/dieselSpray/spray/spray.H
index 126f4d3f434f0d4ffd50d64862e4879c7598e83e..be9c49e67a437cf3abb729aa3d174a8c1b39e47f 100644
--- a/src/lagrangian/dieselSpray/spray/spray.H
+++ b/src/lagrangian/dieselSpray/spray/spray.H
@@ -92,8 +92,15 @@ class spray
         IOdictionary sprayProperties_;
 
 
+        //- Ambient Pressure
+            scalar ambientPressure_;
+
+        //- Ambient Temperature
+            scalar ambientTemperature_;
+
+
         //- The injectors
-        IOPtrList<injector> injectors_;
+            IOPtrList<injector> injectors_;
 
 
         // References to the spray sub-models
@@ -164,12 +171,6 @@ class spray
             //- The (total added) injected kinetic energy of the liquid
             scalar injectedLiquidKE_;
 
-            //- Ambient Pressure
-            scalar ambientPressure_;
-
-            //- Ambient Temperature
-            scalar ambientTemperature_;
-
 
     // Private Member Functions
 
diff --git a/src/meshTools/cellQuality/cellQuality.C b/src/meshTools/cellQuality/cellQuality.C
index cd4c7d4f47c2f37ae29dcd60b5a5deec5a6ba2c6..57e450dfe882353096e1caba631d68524e40f277 100644
--- a/src/meshTools/cellQuality/cellQuality.C
+++ b/src/meshTools/cellQuality/cellQuality.C
@@ -68,7 +68,7 @@ Foam::tmp<Foam::scalarField> Foam::cellQuality::nonOrthogonality() const
         scalar magS = mag(s);
 
         scalar cosDDotS =
-            Foam::acos((d & s)/(mag(d)*magS + VSMALL))
+            Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL)))
             *180.0/mathematicalConstant::pi;
 
         result[own[faceI]] = max(cosDDotS, result[own[faceI]]);
@@ -94,7 +94,7 @@ Foam::tmp<Foam::scalarField> Foam::cellQuality::nonOrthogonality() const
             scalar magS = mag(s);
 
             scalar cosDDotS =
-                Foam::acos((d & s)/(mag(d)*magS + VSMALL))
+                Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL)))
                *180.0/mathematicalConstant::pi;
 
             result[faceCells[faceI]] = max(cosDDotS, result[faceCells[faceI]]);
@@ -209,7 +209,7 @@ Foam::tmp<Foam::scalarField> Foam::cellQuality::faceNonOrthogonality() const
         scalar magS = mag(s);
 
         scalar cosDDotS =
-            Foam::acos((d & s)/(mag(d)*magS + VSMALL))
+            Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL)))
             *180.0/mathematicalConstant::pi;
 
         result[faceI] = cosDDotS;
@@ -235,7 +235,7 @@ Foam::tmp<Foam::scalarField> Foam::cellQuality::faceNonOrthogonality() const
             scalar magS = mag(s);
 
             scalar cosDDotS =
-                Foam::acos((d & s)/(mag(d)*magS + VSMALL))
+                Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL)))
                *180.0/mathematicalConstant::pi;
 
             result[globalFaceI++] = cosDDotS;
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
index b117112a539c207ed47f1d02e328021a47478842..b9c4023401a4fbcb744cacc684fc6e567aef531d 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
@@ -46,26 +46,45 @@ const Foam::word Foam::fieldAverage::EXT_PRIME2MEAN = "Prime2Mean";
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
+void Foam::fieldAverage::checkoutFields(const wordList& fieldNames) const
+{
+    forAll(fieldNames, i)
+    {
+        if (fieldNames[i] != word::null)
+        {
+            obr_.checkOut(*obr_[fieldNames[i]]);
+        }
+    }
+}
+
+
 void Foam::fieldAverage::resetLists(const label nItems)
 {
+    checkoutFields(meanScalarFields_);
     meanScalarFields_.clear();
     meanScalarFields_.setSize(nItems);
 
+    checkoutFields(meanVectorFields_);
     meanVectorFields_.clear();
     meanVectorFields_.setSize(nItems);
 
+    checkoutFields(meanSphericalTensorFields_);
     meanSphericalTensorFields_.clear();
     meanSphericalTensorFields_.setSize(nItems);
 
+    checkoutFields(meanSymmTensorFields_);
     meanSymmTensorFields_.clear();
     meanSymmTensorFields_.setSize(nItems);
 
+    checkoutFields(meanTensorFields_);
     meanTensorFields_.clear();
     meanTensorFields_.setSize(nItems);
 
+    checkoutFields(prime2MeanScalarFields_);
     prime2MeanScalarFields_.clear();
     prime2MeanScalarFields_.setSize(nItems);
 
+    checkoutFields(prime2MeanSymmTensorFields_);
     prime2MeanSymmTensorFields_.clear();
     prime2MeanSymmTensorFields_.setSize(nItems);
 
@@ -128,7 +147,7 @@ void Foam::fieldAverage::initialise()
 
             if (obr_.foundObject<volScalarField>(fieldName))
             {
-                addPrime2MeanField<scalar>
+                addPrime2MeanField<scalar, scalar>
                 (
                     i,
                     meanScalarFields_,
@@ -137,7 +156,7 @@ void Foam::fieldAverage::initialise()
             }
             else if (obr_.foundObject<volVectorField>(fieldName))
             {
-                addPrime2MeanField<vector>
+                addPrime2MeanField<vector, symmTensor>
                 (
                     i,
                     meanVectorFields_,
@@ -188,12 +207,12 @@ Foam::fieldAverage::fieldAverage
         active_ = false;
         WarningIn
         (
-            "fieldAverage::fieldAverage"
-            "("
-                "const word&,"
-                "const objectRegistry&,"
-                "const dictionary&,"
-                "const bool"
+            "fieldAverage::fieldAverage\n"
+            "(\n"
+                "const word&,\n"
+                "const objectRegistry&,\n"
+                "const dictionary&,\n"
+                "const bool\n"
             ")"
         )   << "No fvMesh available, deactivating."
             << nl << endl;
@@ -255,12 +274,12 @@ void Foam::fieldAverage::calcAverages()
         totalTime_[i] += obr_.time().deltaT().value();
     }
 
-    addMeanSqrToPrime2Mean<scalar>
+    addMeanSqrToPrime2Mean<scalar, scalar>
     (
         meanScalarFields_,
         prime2MeanScalarFields_
     );
-    addMeanSqrToPrime2Mean<vector>
+    addMeanSqrToPrime2Mean<vector, symmTensor>
     (
         meanVectorFields_,
         prime2MeanSymmTensorFields_
@@ -272,12 +291,12 @@ void Foam::fieldAverage::calcAverages()
     calculateMeanFields<symmTensor>(meanSymmTensorFields_);
     calculateMeanFields<tensor>(meanTensorFields_);
 
-    calculatePrime2MeanFields<scalar>
+    calculatePrime2MeanFields<scalar, scalar>
     (
         meanScalarFields_,
         prime2MeanScalarFields_
     );
-    calculatePrime2MeanFields<vector>
+    calculatePrime2MeanFields<vector, symmTensor>
     (
         meanVectorFields_,
         prime2MeanSymmTensorFields_
@@ -309,13 +328,14 @@ void Foam::fieldAverage::writeAveragingProperties() const
             "uniform",
             obr_,
             IOobject::NO_READ,
-            IOobject::NO_WRITE
+            IOobject::NO_WRITE,
+            false
         )
     );
 
     forAll(faItems_, i)
     {
-        const word fieldName = faItems_[i].fieldName();
+        const word& fieldName = faItems_[i].fieldName();
         propsDict.add(fieldName, dictionary());
         propsDict.subDict(fieldName).add("totalIter", totalIter_[i]);
         propsDict.subDict(fieldName).add("totalTime", totalTime_[i]);
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H
index 7d9c4db00f0c5480d41a5e1f98548e2a42626d8c..2cb245b14d0c387c9f1cbbf14bd13f50f079c646 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H
@@ -75,7 +75,6 @@ Description
 SourceFiles
     fieldAverage.C
     fieldAverageTemplates.C
-    IOfieldAverage.H
 
 \*---------------------------------------------------------------------------*/
 
@@ -122,7 +121,7 @@ protected:
         //- Clean restart flag
         Switch cleanRestart_;
 
-        //- List of field average items, describing waht averages to be
+        //- List of field average items, describing what averages to be
         //  calculated and output
         List<fieldAverageItem> faItems_;
 
@@ -138,15 +137,15 @@ protected:
         // Lists of averages
 
             // Arithmetic mean fields
-            PtrList<volScalarField> meanScalarFields_;
-            PtrList<volVectorField> meanVectorFields_;
-            PtrList<volSphericalTensorField> meanSphericalTensorFields_;
-            PtrList<volSymmTensorField> meanSymmTensorFields_;
-            PtrList<volTensorField> meanTensorFields_;
+            wordList meanScalarFields_;
+            wordList meanVectorFields_;
+            wordList meanSphericalTensorFields_;
+            wordList meanSymmTensorFields_;
+            wordList meanTensorFields_;
 
             // Prime-squared fields - applicable to volVectorFields only
-            PtrList<volScalarField> prime2MeanScalarFields_;
-            PtrList<volSymmTensorField> prime2MeanSymmTensorFields_;
+            wordList prime2MeanScalarFields_;
+            wordList prime2MeanSymmTensorFields_;
 
 
         // Counters
@@ -162,6 +161,9 @@ protected:
 
         // Initialisation routines
 
+            //- Checkout fields (causes deletion) from the database
+            void checkoutFields(const wordList&) const;
+
             //- Reset size of lists (clear existing values)
             void resetLists(const label nItems);
 
@@ -171,20 +173,16 @@ protected:
 
             //- Add mean average field to PtrList
             template<class Type>
-            void addMeanField
-            (
-                const label,
-                PtrList<GeometricField<Type, fvPatchField, volMesh> >&
-            );
+            void addMeanField(const label, wordList&) const;
 
             //- Add prime-squared average field to PtrList
             template<class Type1, class Type2>
             void addPrime2MeanField
             (
                 const label,
-                PtrList<GeometricField<Type1, fvPatchField, volMesh> >&,
-                PtrList<GeometricField<Type2, fvPatchField, volMesh> >&
-            );
+                const wordList&,
+                wordList&
+            ) const;
 
 
         // Calculation functions
@@ -194,26 +192,23 @@ protected:
 
             //- Calculate mean average fields
             template<class Type>
-            void calculateMeanFields
-            (
-                PtrList<GeometricField<Type, fvPatchField, volMesh> >&
-            );
+            void calculateMeanFields(const wordList&) const;
 
             //- Add mean-squared field value to prime-squared mean field
             template<class Type1, class Type2>
             void addMeanSqrToPrime2Mean
             (
-                PtrList<GeometricField<Type1, fvPatchField, volMesh> >&,
-                PtrList<GeometricField<Type2, fvPatchField, volMesh> >&
-            );
+                const wordList&,
+                const wordList&
+            ) const;
 
             //- Calculate prime-squared average fields
             template<class Type1, class Type2>
             void calculatePrime2MeanFields
             (
-                PtrList<GeometricField<Type1, fvPatchField, volMesh> >&,
-                PtrList<GeometricField<Type2, fvPatchField, volMesh> >&
-            );
+                const wordList&,
+                const wordList&
+            ) const;
 
 
         // I-O
@@ -223,11 +218,7 @@ protected:
 
             //- Write fields
             template<class Type>
-            void writeFieldList
-            (
-                const PtrList<GeometricField<Type, fvPatchField, volMesh> >&
-                    fieldList
-            ) const;
+            void writeFieldList(const wordList&) const;
 
             //- Write averaging properties - steps and time
             void writeAveragingProperties() const;
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C
index f024ac07406b3c9e6e0f88b3aaa8077c1d0ae5de..c6e57835a726bc85d4c37f1e0a13fda554137932 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C
@@ -34,22 +34,36 @@ template<class Type>
 void Foam::fieldAverage::addMeanField
 (
     const label fieldi,
-    PtrList<GeometricField<Type, fvPatchField, volMesh> >& meanFieldList
-)
+    wordList& meanFieldList
+) const
 {
     if (faItems_[fieldi].mean())
     {
         typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
 
         const word& fieldName = faItems_[fieldi].fieldName();
-        const fieldType& baseField = obr_.lookupObject<fieldType>(fieldName);
 
         const word meanFieldName = fieldName + EXT_MEAN;
+
         Info<< "Reading/calculating field " << meanFieldName << nl << endl;
-        meanFieldList.set
-        (
-            fieldi,
-            new fieldType
+
+        if (obr_.foundObject<fieldType>(meanFieldName))
+        {
+            meanFieldList[fieldi] = meanFieldName;
+        }
+        else if (obr_.found(meanFieldName))
+        {
+            Info<< "Cannot allocate average field " << meanFieldName
+                << " since an object with that name already exists."
+                << " Disabling averaging." << nl << endl;
+            meanFieldList[fieldi] = word::null;
+        }
+        else
+        {
+            const fieldType& baseField =
+                obr_.lookupObject<fieldType>(fieldName);
+
+            fieldType* fPtr = new fieldType
             (
                 IOobject
                 (
@@ -60,8 +74,13 @@ void Foam::fieldAverage::addMeanField
                     IOobject::NO_WRITE
                 ),
                 baseField
-            )
-        );
+            );
+
+            // Store on registry
+            fPtr->store();
+
+            meanFieldList[fieldi] = meanFieldName;
+        }
     }
 }
 
@@ -70,25 +89,39 @@ template<class Type1, class Type2>
 void Foam::fieldAverage::addPrime2MeanField
 (
     const label fieldi,
-    PtrList<GeometricField<Type1, fvPatchField, volMesh> >& meanFieldList,
-    PtrList<GeometricField<Type2, fvPatchField, volMesh> >& prime2MeanFieldList
-)
+    const wordList& meanFieldList,
+    wordList& prime2MeanFieldList
+) const
 {
-    if (faItems_[fieldi].mean() && meanFieldList.set(fieldi))
+    if (faItems_[fieldi].mean() && meanFieldList[fieldi] != word::null)
     {
         typedef GeometricField<Type1, fvPatchField, volMesh> fieldType1;
         typedef GeometricField<Type2, fvPatchField, volMesh> fieldType2;
 
         const word& fieldName = faItems_[fieldi].fieldName();
-        const fieldType1& baseField = obr_.lookupObject<fieldType1>(fieldName);
-        const fieldType1& meanField = meanFieldList[fieldi];
 
         const word meanFieldName = fieldName + EXT_PRIME2MEAN;
         Info<< "Reading/calculating field " << meanFieldName << nl << endl;
-        prime2MeanFieldList.set
-        (
-            fieldi,
-            new fieldType2
+
+        if (obr_.foundObject<fieldType2>(meanFieldName))
+        {
+            prime2MeanFieldList[fieldi] = meanFieldName;
+        }
+        else if (obr_.found(meanFieldName))
+        {
+            Info<< "Cannot allocate average field " << meanFieldName
+                << " since an object with that name already exists."
+                << " Disabling averaging." << nl << endl;
+            prime2MeanFieldList[fieldi] = word::null;
+        }
+        else
+        {
+            const fieldType1& baseField =
+                obr_.lookupObject<fieldType1>(fieldName);
+            const fieldType1& meanField =
+                obr_.lookupObject<fieldType1>(meanFieldList[fieldi]);
+
+            fieldType2* fPtr = new fieldType2
             (
                 IOobject
                 (
@@ -99,17 +132,20 @@ void Foam::fieldAverage::addPrime2MeanField
                     IOobject::NO_WRITE
                 ),
                 sqr(baseField) - sqr(meanField)
-            )
-        );
+            );
+
+            // Store on registry
+            fPtr->store();
+
+            prime2MeanFieldList[fieldi] = meanFieldName;
+        }
     }
 }
 
 
 template<class Type>
-void Foam::fieldAverage::calculateMeanFields
-(
-    PtrList<GeometricField<Type, fvPatchField, volMesh> >& meanFieldList
-)
+void Foam::fieldAverage::calculateMeanFields(const wordList& meanFieldList)
+const
 {
     typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
 
@@ -117,12 +153,15 @@ void Foam::fieldAverage::calculateMeanFields
 
     forAll(faItems_, i)
     {
-        if (faItems_[i].mean() && meanFieldList.set(i))
+        if (faItems_[i].mean() && meanFieldList[i] != word::null)
         {
             const word& fieldName = faItems_[i].fieldName();
             const fieldType& baseField =
                 obr_.lookupObject<fieldType>(fieldName);
-            fieldType& meanField = meanFieldList[i];
+            fieldType& meanField = const_cast<fieldType&>
+            (
+                obr_.lookupObject<fieldType>(meanFieldList[i])
+            );
 
             scalar alpha = 0.0;
             scalar beta = 0.0;
@@ -146,9 +185,9 @@ void Foam::fieldAverage::calculateMeanFields
 template<class Type1, class Type2>
 void Foam::fieldAverage::calculatePrime2MeanFields
 (
-    PtrList<GeometricField<Type1, fvPatchField, volMesh> >& meanFieldList,
-    PtrList<GeometricField<Type2, fvPatchField, volMesh> >& prime2MeanFieldList
-)
+    const wordList& meanFieldList,
+    const wordList& prime2MeanFieldList
+) const
 {
     typedef GeometricField<Type1, fvPatchField, volMesh> fieldType1;
     typedef GeometricField<Type2, fvPatchField, volMesh> fieldType2;
@@ -160,15 +199,19 @@ void Foam::fieldAverage::calculatePrime2MeanFields
         if
         (
             faItems_[i].prime2Mean()
-         && meanFieldList.set(i)
-         && prime2MeanFieldList.set(i)
+         && meanFieldList[i] != word::null
+         && prime2MeanFieldList[i] != word::null
         )
         {
             const word& fieldName = faItems_[i].fieldName();
             const fieldType1& baseField =
                 obr_.lookupObject<fieldType1>(fieldName);
-            const fieldType1& meanField = meanFieldList[i];
-            fieldType2& prime2MeanField = prime2MeanFieldList[i];
+            const fieldType1& meanField =
+                obr_.lookupObject<fieldType1>(meanFieldList[i]);
+            fieldType2& prime2MeanField = const_cast<fieldType2&>
+            (
+                obr_.lookupObject<fieldType2>(prime2MeanFieldList[i])
+            );
 
             scalar alpha = 0.0;
             scalar beta = 0.0;
@@ -195,9 +238,9 @@ void Foam::fieldAverage::calculatePrime2MeanFields
 template<class Type1, class Type2>
 void Foam::fieldAverage::addMeanSqrToPrime2Mean
 (
-    PtrList<GeometricField<Type1, fvPatchField, volMesh> >& meanFieldList,
-    PtrList<GeometricField<Type2, fvPatchField, volMesh> >& prime2MeanFieldList
-)
+    const wordList& meanFieldList,
+    const wordList& prime2MeanFieldList
+) const
 {
     typedef GeometricField<Type1, fvPatchField, volMesh> fieldType1;
     typedef GeometricField<Type2, fvPatchField, volMesh> fieldType2;
@@ -207,12 +250,16 @@ void Foam::fieldAverage::addMeanSqrToPrime2Mean
         if
         (
             faItems_[i].prime2Mean()
-         && meanFieldList.set(i)
-         && prime2MeanFieldList.set(i)
+         && meanFieldList[i] != word::null
+         && prime2MeanFieldList[i] != word::null
         )
         {
-            const fieldType1& meanField = meanFieldList[i];
-            fieldType2& prime2MeanField = prime2MeanFieldList[i];
+            const fieldType1& meanField =
+                obr_.lookupObject<fieldType1>(meanFieldList[i]);
+            fieldType2& prime2MeanField = const_cast<fieldType2&>
+            (
+                obr_.lookupObject<fieldType2>(prime2MeanFieldList[i])
+            );
 
             prime2MeanField += sqr(meanField);
         }
@@ -221,16 +268,16 @@ void Foam::fieldAverage::addMeanSqrToPrime2Mean
 
 
 template<class Type>
-void Foam::fieldAverage::writeFieldList
-(
-    const PtrList<GeometricField<Type, fvPatchField, volMesh> >& fieldList
-) const
+void Foam::fieldAverage::writeFieldList(const wordList& fieldList) const
 {
+    typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
+
     forAll(fieldList, i)
     {
-        if (fieldList.set(i))
+        if (fieldList[i] != word::null)
         {
-            fieldList[i].write();
+            const fieldType& f = obr_.lookupObject<fieldType>(fieldList[i]);
+            f.write();
         }
     }
 }
diff --git a/tutorials/simpleFoam/airFoil2D/Allrun b/tutorials/simpleFoam/airFoil2D/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..97fb4bc5910ab159dba94df18b53037f48d22637
--- /dev/null
+++ b/tutorials/simpleFoam/airFoil2D/Allrun
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="simpleFoam"
+
+runApplication $application