diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.C
index c879832630993d87c4ed591d73df453af8a0785c..99ffbedb2cdd7b7534d3724f7a3b608997347d86 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.C
@@ -69,8 +69,6 @@ void Foam::functionObjects::fieldAverage::initialize()
 {
     resetFields();
 
-    Info<< type() << " " << name() << ":" << nl;
-
     // Add mean fields to the field lists
     forAll(faItems_, fieldi)
     {
@@ -91,15 +89,14 @@ void Foam::functionObjects::fieldAverage::initialize()
     // ensure first averaging works unconditionally
     prevTimeIndex_ = -1;
 
-    Info<< endl;
-
     initialised_ = true;
 }
 
 
 void Foam::functionObjects::fieldAverage::restart()
 {
-    Info<< "    Restarting averaging at time " << obr_.time().timeName()
+    if (log_) Info
+        << "    Restarting averaging at time " << obr_.time().timeName()
         << nl << endl;
 
     totalIter_.clear();
@@ -137,9 +134,9 @@ void Foam::functionObjects::fieldAverage::calcAverages()
         periodIndex_++;
     }
 
-    Info<< type() << " " << name() << " output:" << nl;
-
-    Info<< "    Calculating averages" << nl;
+    if (log_) Info
+        << type() << " " << name() << " output:" << nl
+        << "    Calculating averages" << nl;
 
     addMeanSqrToPrime2Mean<scalar, scalar>();
     addMeanSqrToPrime2Mean<vector, symmTensor>();
@@ -158,18 +155,22 @@ void Foam::functionObjects::fieldAverage::calcAverages()
         totalIter_[fieldi]++;
         totalTime_[fieldi] += obr_.time().deltaTValue();
     }
+
+    if (log_) Info<< endl;
 }
 
 
 void Foam::functionObjects::fieldAverage::writeAverages() const
 {
-    Info<< "    Writing average fields" << endl;
+    if (log_) Info<< "    Writing average fields" << endl;
 
     writeFields<scalar>();
     writeFields<vector>();
     writeFields<sphericalTensor>();
     writeFields<symmTensor>();
     writeFields<tensor>();
+
+    if (log_) Info<< endl;
 }
 
 
@@ -198,6 +199,8 @@ void Foam::functionObjects::fieldAverage::writeAveragingProperties() const
     }
 
     propsDict.regIOobject::write();
+
+    if (log_) Info<< endl;
 }
 
 
@@ -209,7 +212,7 @@ void Foam::functionObjects::fieldAverage::readAveragingProperties()
     totalTime_.clear();
     totalTime_.setSize(faItems_.size(), obr_.time().deltaTValue());
 
-    if (restartOnRestart_ || restartOnOutput_)
+    if ((restartOnRestart_ || restartOnOutput_) && log_)
     {
         Info<< "    Starting averaging at time " << obr_.time().timeName()
             << nl;
@@ -229,14 +232,17 @@ void Foam::functionObjects::fieldAverage::readAveragingProperties()
 
         if (!propsDictHeader.headerOk())
         {
-            Info<< "    Starting averaging at time " << obr_.time().timeName()
-                << nl;
+            if (log_) Info
+                << "    Starting averaging at time "
+                << obr_.time().timeName() << nl;
+
             return;
         }
 
         IOdictionary propsDict(propsDictHeader);
 
-        Info<< "    Restarting averaging for fields:" << nl;
+        if (log_) Info<< "    Restarting averaging for fields:" << nl;
+
         forAll(faItems_, fieldi)
         {
             const word& fieldName = faItems_[fieldi].fieldName();
@@ -246,7 +252,9 @@ void Foam::functionObjects::fieldAverage::readAveragingProperties()
 
                 totalIter_[fieldi] = readLabel(fieldDict.lookup("totalIter"));
                 totalTime_[fieldi] = readScalar(fieldDict.lookup("totalTime"));
-                Info<< "        " << fieldName
+
+                if (log_) Info
+                    << "        " << fieldName
                     << " iters = " << totalIter_[fieldi]
                     << " time = " << totalTime_[fieldi] << nl;
             }
@@ -260,18 +268,11 @@ void Foam::functionObjects::fieldAverage::readAveragingProperties()
 Foam::functionObjects::fieldAverage::fieldAverage
 (
     const word& name,
-    const Time& t,
+    const Time& runTime,
     const dictionary& dict
 )
 :
-    functionObject(name),
-    obr_
-    (
-        t.lookupObject<objectRegistry>
-        (
-            dict.lookupOrDefault("region", polyMesh::defaultRegion)
-        )
-    ),
+    fvMeshFunctionObject(name, runTime, dict),
     prevTimeIndex_(-1),
     restartOnRestart_(false),
     restartOnOutput_(false),
@@ -283,12 +284,6 @@ Foam::functionObjects::fieldAverage::fieldAverage
     totalTime_(),
     periodIndex_(1)
 {
-    if (!isA<fvMesh>(obr_))
-    {
-        FatalErrorInFunction
-            << "objectRegistry is not an fvMesh" << exit(FatalError);
-    }
-
     read(dict);
 }
 
@@ -303,9 +298,11 @@ Foam::functionObjects::fieldAverage::~fieldAverage()
 
 bool Foam::functionObjects::fieldAverage::read(const dictionary& dict)
 {
+    fvMeshFunctionObject::read(dict);
+
     initialised_ = false;
 
-    Info<< type() << " " << name() << ":" << nl;
+    if (log_) Info<< type() << " " << name() << ":" << nl;
 
     dict.readIfPresent("restartOnRestart", restartOnRestart_);
     dict.readIfPresent("restartOnOutput", restartOnOutput_);
@@ -319,7 +316,7 @@ bool Foam::functionObjects::fieldAverage::read(const dictionary& dict)
 
     readAveragingProperties();
 
-    Info<< endl;
+    if (log_) Info<< endl;
 
     return true;
 }
@@ -328,7 +325,6 @@ bool Foam::functionObjects::fieldAverage::read(const dictionary& dict)
 bool Foam::functionObjects::fieldAverage::execute(const bool postProcess)
 {
     calcAverages();
-    Info<< endl;
 
     return true;
 }
@@ -344,8 +340,6 @@ bool Foam::functionObjects::fieldAverage::write(const bool postProcess)
         restart();
     }
 
-    Info<< endl;
-
     return true;
 }
 
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.H
index d89247a80c41d88aa9166c58691d323e55bd2760..21405d61b1f665868c431778b32a8184c0d5f987 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.H
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage.H
@@ -109,6 +109,7 @@ Note
     To employ the \c prime2Mean option, the \c mean option must be selecetd.
 
 SeeAlso
+    Foam::functionObjects::fvMeshFunctionObject
     Foam::functionObject
 
 SourceFiles
@@ -121,17 +122,12 @@ SourceFiles
 #ifndef functionObjects_fieldAverage_H
 #define functionObjects_fieldAverage_H
 
-#include "functionObject.H"
-#include "Switch.H"
+#include "fvMeshFunctionObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// Forward declaration of classes
-class objectRegistry;
-
 namespace functionObjects
 {
 
@@ -144,15 +140,12 @@ class fieldAverageItem;
 
 class fieldAverage
 :
-    public functionObject
+    public fvMeshFunctionObject
 {
 protected:
 
     // Protected data
 
-        //- Reference to the objectRegistry
-        const objectRegistry& obr_;
-
         //- Time at last call, prevents repeated averaging
         label prevTimeIndex_;
 
@@ -288,7 +281,7 @@ public:
         fieldAverage
         (
             const word& name,
-            const Time& t,
+            const Time& runTime,
             const dictionary&
         );
 
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageTemplates.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageTemplates.C
index d6c9166ad3b26ef70824144cf3ddbedd375996fa..8ab915cb650a17e0cb5c67f3082f70d9826feaea 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageTemplates.C
@@ -36,7 +36,7 @@ void Foam::functionObjects::fieldAverage::addMeanFieldType(const label fieldi)
     const word& fieldName = faItems_[fieldi].fieldName();
     const word& meanFieldName = faItems_[fieldi].meanFieldName();
 
-    Info<< "    Reading/initialising field " << meanFieldName << endl;
+    if (log_) Info<< "    Reading/initialising field " << meanFieldName << endl;
 
     if (obr_.foundObject<Type>(meanFieldName))
     {
@@ -44,7 +44,8 @@ void Foam::functionObjects::fieldAverage::addMeanFieldType(const label fieldi)
     }
     else if (obr_.found(meanFieldName))
     {
-        Info<< "    Cannot allocate average field " << meanFieldName
+        if (log_) Info
+            << "    Cannot allocate average field " << meanFieldName
             << " since an object with that name already exists."
             << " Disabling averaging for field." << endl;
 
@@ -111,7 +112,8 @@ void Foam::functionObjects::fieldAverage::addPrime2MeanFieldType
     const word& meanFieldName = faItems_[fieldi].meanFieldName();
     const word& prime2MeanFieldName = faItems_[fieldi].prime2MeanFieldName();
 
-    Info<< "    Reading/initialising field " << prime2MeanFieldName << nl;
+    if (log_) Info
+        << "    Reading/initialising field " << prime2MeanFieldName << nl;
 
     if (obr_.foundObject<Type2>(prime2MeanFieldName))
     {
@@ -119,7 +121,8 @@ void Foam::functionObjects::fieldAverage::addPrime2MeanFieldType
     }
     else if (obr_.found(prime2MeanFieldName))
     {
-        Info<< "    Cannot allocate average field " << prime2MeanFieldName
+        if (log_) Info
+            << "    Cannot allocate average field " << prime2MeanFieldName
             << " since an object with that name already exists."
             << " Disabling averaging for field." << nl;
 
diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H
index 13eaac0a90ba31fb2d9ff7dae88aa71560f19469..5ea80124ecab26653bd3c9481fd54e37fbb93dbb 100644
--- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H
+++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H
@@ -76,7 +76,7 @@ Description
     \endplaintable
 
 SeeAlso
-    Foam::functionObject
+    Foam::functionObjects::fvMeshFunctionObject
     Foam::functionObjects::timeControl
 
 SourceFiles
@@ -87,7 +87,7 @@ SourceFiles
 #ifndef functionObjects_turbulenceFields_H
 #define functionObjects_turbulenceFields_H
 
-#include "functionObject.H"
+#include "fvMeshFunctionObject.H"
 #include "HashSet.H"
 #include "NamedEnum.H"
 #include "volFieldsFwd.H"
@@ -96,10 +96,6 @@ SourceFiles
 
 namespace Foam
 {
-
-// Forward declaration of classes
-class objectRegistry;
-
 namespace functionObjects
 {
 
@@ -109,7 +105,7 @@ namespace functionObjects
 
 class turbulenceFields
 :
-    public functionObject
+    public fvMeshFunctionObject
 {
 public:
 
@@ -144,9 +140,6 @@ protected:
 
     // Protected data
 
-        //- Reference to the objectRegistry
-        const objectRegistry& obr_;
-
         //- Fields to load
         wordHashSet fieldSet_;