diff --git a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C
index 6059ebf5aa5f185b6777409bbce50d9e06f157e3..ecd4b4f1edef681987239a87f71b10c42e53f38d 100644
--- a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C
+++ b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C
@@ -138,7 +138,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
         return;
     }
 
-    dsmcFields dF
+    functionObjects::dsmcFields dF
     (
         "dsmcFieldsUtility",
         mesh,
diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C b/etc/codeTemplates/dynamicCode/functionObjectTemplate.C
index 91b31dda2b3aaead0b902dfaedc5e69413f06c2a..cb256b9b93ece0ac874a1b7d8868c19413f8c7ae 100644
--- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C
+++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -76,6 +76,18 @@ ${typeName}FunctionObject::${typeName}FunctionObject
 }
 
 
+bool ${typeName}FunctionObject::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool
+)
+{
+    return true;
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 ${typeName}FunctionObject::~${typeName}FunctionObject()
diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H b/etc/codeTemplates/dynamicCode/functionObjectTemplate.H
index a139f25a8b4bf7f7c03f300c93c0571b446ba72e..b1f7e7af8e78f2e08a61099480eb1828a11bb419 100644
--- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H
+++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -102,6 +102,16 @@ public:
             const bool loadFromFilesUnused = false
         );
 
+        //- Construct for given objectRegistry and dictionary.
+        //  Allow the possibility to load fields from files
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry& unused,
+            const dictionary&,
+            const bool loadFromFilesUnused = false
+        );
+
 
     //- Destructor
     virtual ~${typeName}FunctionObject();
diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
index 68189c6d43f17084575ff2f575ebb6b987098e86..5c480baee4bd7fdbef7d91dd2371dc47754d3403 100644
--- a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
+++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
@@ -71,21 +71,15 @@ void Foam::FUNCTIONOBJECT::read(const dictionary& dict)
 
 
 void Foam::FUNCTIONOBJECT::execute()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::FUNCTIONOBJECT::end()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::FUNCTIONOBJECT::timeSet()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::FUNCTIONOBJECT::write()
diff --git a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.C b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.C
index 18b46f29af8e445d94ac97faf68c950e9f305792..e70e55a1bc88dd79e064d54e7c43b366e4fc5cb9 100644
--- a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.C
+++ b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -66,6 +66,32 @@ Foam::IOOutputFilter<OutputFilter>::IOOutputFilter
 {}
 
 
+template<class OutputFilter>
+bool Foam::IOOutputFilter<OutputFilter>::viable
+(
+    const word& outputFilterName,
+    const objectRegistry& obr,
+    const word& dictName,
+    const IOobject::readOption rOpt,
+    const bool readFromFiles
+)
+{
+    IOdictionary dict
+    (
+        IOobject
+        (
+            dictName,
+            obr.time().system(),
+            obr,
+            rOpt,
+            IOobject::NO_WRITE
+        )
+    );
+
+    return OutputFilter::viable(outputFilterName, obr, dict, readFromFiles);
+}
+
+
 template<class OutputFilter>
 Foam::IOOutputFilter<OutputFilter>::IOOutputFilter
 (
@@ -99,6 +125,13 @@ Foam::IOOutputFilter<OutputFilter>::~IOOutputFilter()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+template<class OutputFilter>
+const Foam::word& Foam::IOOutputFilter<OutputFilter>::name() const
+{
+    return IOdictionary::name();
+}
+
+
 template<class OutputFilter>
 bool Foam::IOOutputFilter<OutputFilter>::read()
 {
@@ -121,4 +154,20 @@ void Foam::IOOutputFilter<OutputFilter>::write()
 }
 
 
+template<class OutputFilter>
+void Foam::IOOutputFilter<OutputFilter>::updateMesh(const mapPolyMesh& mpm)
+{
+    read();
+    OutputFilter::updateMesh(mpm);
+}
+
+
+template<class OutputFilter>
+void Foam::IOOutputFilter<OutputFilter>::movePoints(const polyMesh& mesh)
+{
+    read();
+    OutputFilter::movePoints(mesh);
+}
+
+
 // ************************************************************************* //
diff --git a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H
index 77b248f7e86f4aa4c8616ff8b78f718547f426b8..6950b523f8fd5bfb1d39214c6294ab2028d5533d 100644
--- a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H
+++ b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H
@@ -94,6 +94,16 @@ public:
             const bool loadFromFile = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        static bool viable
+        (
+            const word& outputFilterName,
+            const objectRegistry&,
+            const word& dictName = OutputFilter::typeName() + "Dict",
+            const IOobject::readOption rOpt = IOobject::MUST_READ_IF_MODIFIED,
+            const bool loadFromFiles = false
+        );
+
         //- Construct for given objectRegistry and dictionary
         //  Dictionary read from full path.
         //  Allow the possibility to load fields from files
@@ -114,10 +124,7 @@ public:
     // Member Functions
 
         //- Return name
-        virtual const word& name() const
-        {
-            return IOdictionary::name();
-        }
+        virtual const word& name() const;
 
         //- Inherit read from OutputFilter
         using OutputFilter::read;
@@ -132,18 +139,10 @@ public:
         virtual void write();
 
         //- Update for changes of mesh
-        virtual void updateMesh(const mapPolyMesh& mpm)
-        {
-            read();
-            OutputFilter::updateMesh(mpm);
-        }
+        virtual void updateMesh(const mapPolyMesh& mpm);
 
         //- Update for changes of mesh
-        virtual void movePoints(const polyMesh& mesh)
-        {
-            read();
-            OutputFilter::movePoints(mesh);
-        }
+        virtual void movePoints(const polyMesh& mesh);
 };
 
 
diff --git a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C
index 100e88f27f12a63ec67232fffc6dded4c3e5ba1f..7c81faefc1e1e6ac397a58a3f7187983ebfbc17f 100644
--- a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C
+++ b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -55,32 +55,64 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::active() const
 
 
 template<class OutputFilter>
-void Foam::OutputFilterFunctionObject<OutputFilter>::allocateFilter()
+bool Foam::OutputFilterFunctionObject<OutputFilter>::allocateFilter()
 {
     if (dictName_.size())
     {
-        ptr_.reset
+        if
         (
-            new IOOutputFilter<OutputFilter>
+            IOOutputFilter<OutputFilter>::viable
             (
                 name(),
                 time_.lookupObject<objectRegistry>(regionName_),
                 dictName_
             )
-        );
+        )
+        {
+            ptr_.reset
+            (
+                new IOOutputFilter<OutputFilter>
+                (
+                    name(),
+                    time_.lookupObject<objectRegistry>(regionName_),
+                    dictName_
+                )
+            );
+        }
+        else
+        {
+            enabled_ = false;
+        }
     }
     else
     {
-        ptr_.reset
+        if
         (
-            new OutputFilter
+            OutputFilter::viable
             (
                 name(),
                 time_.lookupObject<objectRegistry>(regionName_),
                 dict_
             )
-        );
+        )
+        {
+            ptr_.reset
+            (
+                new OutputFilter
+                (
+                    name(),
+                    time_.lookupObject<objectRegistry>(regionName_),
+                    dict_
+                )
+            );
+        }
+        else
+        {
+            enabled_ = false;
+        }
     }
+
+    return enabled_;
 }
 
 
@@ -144,10 +176,12 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::start()
 
     if (enabled_ && storeFilter_)
     {
-        allocateFilter();
+        return allocateFilter();
+    }
+    else
+    {
+        return true;
     }
-
-    return true;
 }
 
 
@@ -159,9 +193,9 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::execute
 {
     if (active())
     {
-        if (!storeFilter_)
+        if (!storeFilter_ && !allocateFilter())
         {
-            allocateFilter();
+            return false;
         }
 
         if (evaluateControl_.output())
@@ -189,9 +223,9 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::end()
 {
     if (enabled_)
     {
-        if (!storeFilter_)
+        if (!storeFilter_ && !allocateFilter())
         {
-            allocateFilter();
+            return false;
         }
 
         ptr_->end();
diff --git a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
index cf97dc562936d2750544f5a9b1b751b0326df7d6..5cd592ee83948c54b2733d2041d2556a725fa630 100644
--- a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
+++ b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
@@ -111,7 +111,7 @@ class OutputFilterFunctionObject
         void readDict();
 
         //- Creates most of the data associated with this object.
-        void allocateFilter();
+        bool allocateFilter();
 
         //- Destroys most of the data associated with this object.
         void destroyFilter();
diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
index 33757db4201ae0822b153fb38d420ee01c3c6f4d..821a6cc019193bd049c2d2b3a69e417cf570690c 100644
--- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
+++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
@@ -96,7 +96,6 @@ void Foam::fv::rotorDiskSource::checkData()
                 }
                 case ifLocal:
                 {
-                    // Do nothing
                     break;
                 }
                 default:
diff --git a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C
index c04f6eca2d2afd91ac6d965d98552af0108ac443..3d5faaf9647775b5a1d503b32bad5aa7aa14243e 100644
--- a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C
+++ b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C
@@ -58,8 +58,7 @@ Foam::functionObjects::partialWrite::partialWrite
 }
 
 
-Foam::autoPtr<Foam::functionObjects::partialWrite>
-Foam::functionObjects::partialWrite::New
+bool Foam::functionObjects::partialWrite::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -67,17 +66,8 @@ Foam::functionObjects::partialWrite::New
     const bool loadFromFiles
 )
 {
-    if (isA<fvMesh>(obr))
-    {
-        return autoPtr<partialWrite>
-        (
-            new partialWrite(name, obr, dict, loadFromFiles)
-        );
-    }
-    else
-    {
-        return autoPtr<partialWrite>();
-    }
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
diff --git a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H
index a49aabc1293b01e45e535fe82a390d8f02932406..76a18f5fbced8218b2673e9c973ab3eca3441a02 100644
--- a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H
+++ b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::partialWrite
+    Foam::functionObjects::partialWrite
 
 Group
     grpIOFunctionObjects
@@ -171,9 +171,9 @@ public:
             const bool loadFromFiles = false
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<partialWrite> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C
index ea296544c3f70511af24527d0292c5bafcfcd9c5..9bd09cd0b665633e07a46b21c47b7656841c615b 100644
--- a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C
+++ b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C
@@ -56,8 +56,7 @@ Foam::functionObjects::removeRegisteredObject::removeRegisteredObject
 }
 
 
-Foam::autoPtr<Foam::functionObjects::removeRegisteredObject>
-Foam::functionObjects::removeRegisteredObject::New
+bool Foam::functionObjects::removeRegisteredObject::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -65,10 +64,7 @@ Foam::functionObjects::removeRegisteredObject::New
     const bool loadFromFiles
 )
 {
-    return autoPtr<removeRegisteredObject>
-    (
-        new removeRegisteredObject(name, obr, dict, loadFromFiles)
-    );
+    return true;
 }
 
 
diff --git a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H
index 860a2e98635b6790a28a9dbc5a0ec9c8efad9c85..5bbb16d923c38252989f09a917141bc5e4833ebb 100644
--- a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H
+++ b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::removeRegisteredObject
+    Foam::functionObjects::removeRegisteredObject
 
 Group
     grpIOFunctionObjects
@@ -128,9 +128,9 @@ public:
             const bool loadFromFiles = false
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<removeRegisteredObject> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C
index 7acd2abefbccaaea9dea27b031e021134bf52a27..afe37cf4a34ce07ac3baf3a3452a4ba044a913cd 100644
--- a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C
+++ b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C
@@ -107,8 +107,7 @@ Foam::functionObjects::writeDictionary::writeDictionary
 }
 
 
-Foam::autoPtr<Foam::functionObjects::writeDictionary>
-Foam::functionObjects::writeDictionary::New
+bool Foam::functionObjects::writeDictionary::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -116,10 +115,7 @@ Foam::functionObjects::writeDictionary::New
     const bool loadFromFiles
 )
 {
-    return autoPtr<writeDictionary>
-    (
-        new writeDictionary(name, obr, dict, loadFromFiles)
-    );
+    return true;
 }
 
 
diff --git a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H
index 19d42766efc9f7dfb9277fc61895959e69d70f2d..3f822fa89ac381cc76ca6c7064379b3c12235987 100644
--- a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H
+++ b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::writeDictionary
+    Foam::functionObjects::writeDictionary
 
 Group
     grpUtilitiesFunctionObjects
@@ -120,9 +120,9 @@ public:
             const bool loadFromFiles = false
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<writeDictionary> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
index ad68d6b9aea3c771c8ae29c566fca649473c5152..6385ad89b1f410d52d6fe87c10caa5d0128ee7e0 100644
--- a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
@@ -57,8 +57,7 @@ Foam::functionObjects::writeRegisteredObject::writeRegisteredObject
 }
 
 
-Foam::autoPtr<Foam::functionObjects::writeRegisteredObject>
-Foam::functionObjects::writeRegisteredObject::New
+bool Foam::functionObjects::writeRegisteredObject::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -66,10 +65,7 @@ Foam::functionObjects::writeRegisteredObject::New
     const bool loadFromFiles
 )
 {
-    return autoPtr<writeRegisteredObject>
-    (
-        new writeRegisteredObject(name, obr, dict, loadFromFiles)
-    );
+    return true;
 }
 
 
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
index 37bb625c4e8c491ec7bc41180803c16d7be8a082..8fb674a8831c01198256c28fa935cd346fa2cee6 100644
--- a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::writeRegisteredObject
+    Foam::functionObjects::writeRegisteredObject
 
 Group
     grpIOFunctionObjects
@@ -143,9 +143,9 @@ public:
             const bool loadFromFiles = false
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<writeRegisteredObject> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C
index f17f36684553d94a8090d63027a929e5ddd4a3b7..7641bf5c01a596b848ce26c8553ef6648ab3a68f 100644
--- a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C
@@ -62,15 +62,13 @@ Foam::functionObjects::cloudInfo::cloudInfo
 :
     functionObjectFiles(obr, name),
     name_(name),
-    obr_(obr),
-    active_(true)
+    obr_(obr)
 {
     read(dict);
 }
 
 
-Foam::autoPtr<Foam::functionObjects::cloudInfo>
-Foam::functionObjects::cloudInfo::New
+bool Foam::functionObjects::cloudInfo::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -78,10 +76,7 @@ Foam::functionObjects::cloudInfo::New
     const bool loadFromFiles
 )
 {
-    return autoPtr<cloudInfo>
-    (
-        new cloudInfo(name, obr, dict, loadFromFiles)
-    );
+    return true;
 }
 
 
@@ -95,24 +90,21 @@ Foam::functionObjects::cloudInfo::~cloudInfo()
 
 void Foam::functionObjects::cloudInfo::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        functionObjectFiles::resetNames(dict.lookup("clouds"));
+    functionObjectFiles::resetNames(dict.lookup("clouds"));
 
-        Info<< type() << " " << name_ << ": ";
-        if (names().size())
-        {
-            Info<< "applying to clouds:" << nl;
-            forAll(names(), i)
-            {
-                Info<< "    " << names()[i] << nl;
-            }
-            Info<< endl;
-        }
-        else
+    Info<< type() << " " << name_ << ": ";
+    if (names().size())
+    {
+        Info<< "applying to clouds:" << nl;
+        forAll(names(), i)
         {
-            Info<< "no clouds to be processed" << nl << endl;
+            Info<< "    " << names()[i] << nl;
         }
+        Info<< endl;
+    }
+    else
+    {
+        Info<< "no clouds to be processed" << nl << endl;
     }
 }
 
@@ -131,29 +123,26 @@ void Foam::functionObjects::cloudInfo::timeSet()
 
 void Foam::functionObjects::cloudInfo::write()
 {
-    if (active_)
+    functionObjectFiles::write();
+
+    forAll(names(), i)
     {
-        functionObjectFiles::write();
+        const word& cloudName = names()[i];
 
-        forAll(names(), i)
+        const kinematicCloud& cloud =
+            obr_.lookupObject<kinematicCloud>(cloudName);
+
+        label nParcels = returnReduce(cloud.nParcels(), sumOp<label>());
+        scalar massInSystem =
+            returnReduce(cloud.massInSystem(), sumOp<scalar>());
+
+        if (Pstream::master())
         {
-            const word& cloudName = names()[i];
-
-            const kinematicCloud& cloud =
-                obr_.lookupObject<kinematicCloud>(cloudName);
-
-            label nParcels = returnReduce(cloud.nParcels(), sumOp<label>());
-            scalar massInSystem =
-                returnReduce(cloud.massInSystem(), sumOp<scalar>());
-
-            if (Pstream::master())
-            {
-                writeTime(file(i));
-                file(i)
-                    << token::TAB
-                    << nParcels << token::TAB
-                    << massInSystem << endl;
-            }
+            writeTime(file(i));
+            file(i)
+                << token::TAB
+                << nParcels << token::TAB
+                << massInSystem << endl;
         }
     }
 }
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H
index 3af05b7d1043d5b326ae75a822a11661774a1c02..895dd4a2a8bcbd3aebab07d2d741b6253dd14ef1 100644
--- a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::cloudInfo
+    Foam::functionObjects::cloudInfo
 
 Group
     grpCloudFunctionObjects
@@ -109,9 +109,6 @@ protected:
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
 
     // Protected Member Functions
 
@@ -148,9 +145,9 @@ public:
             const bool loadFromFiles = false
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<cloudInfo> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.H
index f4b9ddf996de0833700607de3433e5f1e223475f..2fd0ea6b97a13ab018c3af435dcfac8aab200032 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.H
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<fieldAverage> IOFieldAverage;
+    typedef IOOutputFilter<functionObjects::fieldAverage> IOFieldAverage;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
index 9ec9ee60fa4da6f6ded50a7545a72264054aa875..0efc524823a73947820e02075524a1483c0e0f3e 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
@@ -26,20 +26,22 @@ License
 #include "fieldAverage.H"
 #include "volFields.H"
 #include "Time.H"
-
 #include "fieldAverageItem.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(fieldAverage, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::fieldAverage::resetFields()
+void Foam::functionObjects::fieldAverage::resetFields()
 {
     forAll(faItems_, i)
     {
@@ -62,7 +64,7 @@ void Foam::fieldAverage::resetFields()
 }
 
 
-void Foam::fieldAverage::initialize()
+void Foam::functionObjects::fieldAverage::initialize()
 {
     resetFields();
 
@@ -85,16 +87,6 @@ void Foam::fieldAverage::initialize()
         addPrime2MeanField<vector, symmTensor>(fieldI);
     }
 
-    forAll(faItems_, fieldI)
-    {
-        if (!faItems_[fieldI].active())
-        {
-            WarningInFunction
-                << "Field " << faItems_[fieldI].fieldName()
-                << " not found in database for averaging";
-        }
-    }
-
     // ensure first averaging works unconditionally
     prevTimeIndex_ = -1;
 
@@ -104,7 +96,7 @@ void Foam::fieldAverage::initialize()
 }
 
 
-void Foam::fieldAverage::restart()
+void Foam::functionObjects::fieldAverage::restart()
 {
     Info<< "    Restarting averaging at time " << obr_.time().timeName()
         << nl << endl;
@@ -119,7 +111,7 @@ void Foam::fieldAverage::restart()
 }
 
 
-void Foam::fieldAverage::calcAverages()
+void Foam::functionObjects::fieldAverage::calcAverages()
 {
     if (!initialised_)
     {
@@ -168,7 +160,7 @@ void Foam::fieldAverage::calcAverages()
 }
 
 
-void Foam::fieldAverage::writeAverages() const
+void Foam::functionObjects::fieldAverage::writeAverages() const
 {
     Info<< "    Writing average fields" << endl;
 
@@ -180,7 +172,7 @@ void Foam::fieldAverage::writeAverages() const
 }
 
 
-void Foam::fieldAverage::writeAveragingProperties() const
+void Foam::functionObjects::fieldAverage::writeAveragingProperties() const
 {
     IOdictionary propsDict
     (
@@ -208,7 +200,7 @@ void Foam::fieldAverage::writeAveragingProperties() const
 }
 
 
-void Foam::fieldAverage::readAveragingProperties()
+void Foam::functionObjects::fieldAverage::readAveragingProperties()
 {
     totalIter_.clear();
     totalIter_.setSize(faItems_.size(), 1);
@@ -264,7 +256,7 @@ void Foam::fieldAverage::readAveragingProperties()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fieldAverage::fieldAverage
+Foam::functionObjects::fieldAverage::fieldAverage
 (
     const word& name,
     const objectRegistry& obr,
@@ -274,7 +266,6 @@ Foam::fieldAverage::fieldAverage
 :
     name_(name),
     obr_(obr),
-    active_(true),
     prevTimeIndex_(-1),
     restartOnRestart_(false),
     restartOnOutput_(false),
@@ -286,105 +277,91 @@ Foam::fieldAverage::fieldAverage
     totalTime_(),
     periodIndex_(1)
 {
-    // Only active if a fvMesh is available
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
+    read(dict);
+}
+
+
+bool Foam::functionObjects::fieldAverage::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fieldAverage::~fieldAverage()
+Foam::functionObjects::fieldAverage::~fieldAverage()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::fieldAverage::read(const dictionary& dict)
+void Foam::functionObjects::fieldAverage::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        initialised_ = false;
+    initialised_ = false;
 
-        Info<< type() << " " << name_ << ":" << nl;
+    Info<< type() << " " << name_ << ":" << nl;
 
-        dict.readIfPresent("restartOnRestart", restartOnRestart_);
-        dict.readIfPresent("restartOnOutput", restartOnOutput_);
-        dict.readIfPresent("periodicRestart", periodicRestart_);
-        dict.lookup("fields") >> faItems_;
+    dict.readIfPresent("restartOnRestart", restartOnRestart_);
+    dict.readIfPresent("restartOnOutput", restartOnOutput_);
+    dict.readIfPresent("periodicRestart", periodicRestart_);
+    dict.lookup("fields") >> faItems_;
 
-        if (periodicRestart_)
-        {
-            dict.lookup("restartPeriod") >> restartPeriod_;
-        }
+    if (periodicRestart_)
+    {
+        dict.lookup("restartPeriod") >> restartPeriod_;
+    }
 
-        readAveragingProperties();
+    readAveragingProperties();
 
-        Info<< endl;
-    }
+    Info<< endl;
 }
 
 
-void Foam::fieldAverage::execute()
+void Foam::functionObjects::fieldAverage::execute()
 {
-    if (active_)
-    {
-        calcAverages();
-        Info<< endl;
-    }
+    calcAverages();
+    Info<< endl;
 }
 
 
-void Foam::fieldAverage::end()
+void Foam::functionObjects::fieldAverage::end()
 {
-    if (active_)
-    {
-        calcAverages();
-        Info<< endl;
-    }
+    calcAverages();
+    Info<< endl;
 }
 
 
-void Foam::fieldAverage::timeSet()
+void Foam::functionObjects::fieldAverage::timeSet()
 {}
 
 
-void Foam::fieldAverage::write()
+void Foam::functionObjects::fieldAverage::write()
 {
-    if (active_)
-    {
-        writeAverages();
-        writeAveragingProperties();
+    writeAverages();
+    writeAveragingProperties();
 
-        if (restartOnOutput_)
-        {
-            restart();
-        }
-
-        Info<< endl;
+    if (restartOnOutput_)
+    {
+        restart();
     }
+
+    Info<< endl;
 }
 
 
-void Foam::fieldAverage::updateMesh(const mapPolyMesh&)
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldAverage::updateMesh(const mapPolyMesh&)
+{}
 
 
-void Foam::fieldAverage::movePoints(const polyMesh&)
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldAverage::movePoints(const polyMesh&)
+{}
 
 
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H
index b78b10ad102bec20b439891fdd58a4ac009fd993..ec0403c53335d1197ddff0208ab4f3105443a0f2 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fieldAverage
+    Foam::functionObjects::fieldAverage
 
 Group
     grpFieldFunctionObjects
@@ -133,12 +133,17 @@ namespace Foam
 // Forward declaration of classes
 class objectRegistry;
 class dictionary;
-class fieldAverageItem;
 template<class Type>
 class List;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
+// Forward declaration of classes
+class fieldAverageItem;
+
 /*---------------------------------------------------------------------------*\
                         Class fieldAverage Declaration
 \*---------------------------------------------------------------------------*/
@@ -155,9 +160,6 @@ protected:
         //- Database this class is registered to
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Time at last call, prevents repeated averaging
         label prevTimeIndex_;
 
@@ -299,6 +301,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~fieldAverage();
@@ -337,6 +349,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C
index 6078b95b72b848c49cd22617f4c5737d3df04c5a..3995e81e8342a3aa6ff6e57068087393bd88223c 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C
@@ -31,10 +31,8 @@ License
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class Type>
-void Foam::fieldAverage::addMeanFieldType(const label fieldI)
+void Foam::functionObjects::fieldAverage::addMeanFieldType(const label fieldI)
 {
-    faItems_[fieldI].active() = true;
-
     const word& fieldName = faItems_[fieldI].fieldName();
     const word& meanFieldName = faItems_[fieldI].meanFieldName();
 
@@ -79,7 +77,7 @@ void Foam::fieldAverage::addMeanFieldType(const label fieldI)
 
 
 template<class Type>
-void Foam::fieldAverage::addMeanField(const label fieldI)
+void Foam::functionObjects::fieldAverage::addMeanField(const label fieldI)
 {
     if (faItems_[fieldI].mean())
     {
@@ -101,7 +99,10 @@ void Foam::fieldAverage::addMeanField(const label fieldI)
 
 
 template<class Type1, class Type2>
-void Foam::fieldAverage::addPrime2MeanFieldType(const label fieldI)
+void Foam::functionObjects::fieldAverage::addPrime2MeanFieldType
+(
+    const label fieldI
+)
 {
     const word& fieldName = faItems_[fieldI].fieldName();
     const word& meanFieldName = faItems_[fieldI].meanFieldName();
@@ -149,7 +150,7 @@ void Foam::fieldAverage::addPrime2MeanFieldType(const label fieldI)
 
 
 template<class Type1, class Type2>
-void Foam::fieldAverage::addPrime2MeanField(const label fieldI)
+void Foam::functionObjects::fieldAverage::addPrime2MeanField(const label fieldI)
 {
     typedef GeometricField<Type1, fvPatchField, volMesh> volFieldType1;
     typedef GeometricField<Type1, fvsPatchField, surfaceMesh> surfFieldType1;
@@ -182,7 +183,10 @@ void Foam::fieldAverage::addPrime2MeanField(const label fieldI)
 
 
 template<class Type>
-void Foam::fieldAverage::calculateMeanFieldType(const label fieldI) const
+void Foam::functionObjects::fieldAverage::calculateMeanFieldType
+(
+    const label fieldI
+) const
 {
     const word& fieldName = faItems_[fieldI].fieldName();
 
@@ -224,7 +228,7 @@ void Foam::fieldAverage::calculateMeanFieldType(const label fieldI) const
 
 
 template<class Type>
-void Foam::fieldAverage::calculateMeanFields() const
+void Foam::functionObjects::fieldAverage::calculateMeanFields() const
 {
     typedef GeometricField<Type, fvPatchField, volMesh> volFieldType;
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> surfFieldType;
@@ -241,7 +245,10 @@ void Foam::fieldAverage::calculateMeanFields() const
 
 
 template<class Type1, class Type2>
-void Foam::fieldAverage::calculatePrime2MeanFieldType(const label fieldI) const
+void Foam::functionObjects::fieldAverage::calculatePrime2MeanFieldType
+(
+    const label fieldI
+) const
 {
     const word& fieldName = faItems_[fieldI].fieldName();
 
@@ -288,7 +295,7 @@ void Foam::fieldAverage::calculatePrime2MeanFieldType(const label fieldI) const
 
 
 template<class Type1, class Type2>
-void Foam::fieldAverage::calculatePrime2MeanFields() const
+void Foam::functionObjects::fieldAverage::calculatePrime2MeanFields() const
 {
     typedef GeometricField<Type1, fvPatchField, volMesh> volFieldType1;
     typedef GeometricField<Type1, fvsPatchField, surfaceMesh> surfFieldType1;
@@ -308,7 +315,10 @@ void Foam::fieldAverage::calculatePrime2MeanFields() const
 
 
 template<class Type1, class Type2>
-void Foam::fieldAverage::addMeanSqrToPrime2MeanType(const label fieldI) const
+void Foam::functionObjects::fieldAverage::addMeanSqrToPrime2MeanType
+(
+    const label fieldI
+) const
 {
     const word& fieldName = faItems_[fieldI].fieldName();
 
@@ -328,7 +338,7 @@ void Foam::fieldAverage::addMeanSqrToPrime2MeanType(const label fieldI) const
 
 
 template<class Type1, class Type2>
-void Foam::fieldAverage::addMeanSqrToPrime2Mean() const
+void Foam::functionObjects::fieldAverage::addMeanSqrToPrime2Mean() const
 {
     typedef GeometricField<Type1, fvPatchField, volMesh> volFieldType1;
     typedef GeometricField<Type1, fvsPatchField, surfaceMesh> surfFieldType1;
@@ -348,7 +358,10 @@ void Foam::fieldAverage::addMeanSqrToPrime2Mean() const
 
 
 template<class Type>
-void Foam::fieldAverage::writeFieldType(const word& fieldName) const
+void Foam::functionObjects::fieldAverage::writeFieldType
+(
+    const word& fieldName
+) const
 {
     if (obr_.foundObject<Type>(fieldName))
     {
@@ -359,7 +372,7 @@ void Foam::fieldAverage::writeFieldType(const word& fieldName) const
 
 
 template<class Type>
-void Foam::fieldAverage::writeFields() const
+void Foam::functionObjects::fieldAverage::writeFields() const
 {
     typedef GeometricField<Type, fvPatchField, volMesh> volFieldType;
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> surfFieldType;
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.H
index 897537013cbf71f0013edd0d7f82b28f7ce0c66e..13e14917538d29381308e125f53d110169dd4ec6 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<fieldAverage>
+    typedef OutputFilterFunctionObject<functionObjects::fieldAverage>
         fieldAverageFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C
index da0d3f0021dbbfe7d864f93586111d0c6f8cc387..308bf1649ded14fc4820b5db216cb5dc89c11c54 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,33 +27,34 @@ License
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
-namespace Foam
-{
-    const word fieldAverageItem::EXT_MEAN = "Mean";
-    const word fieldAverageItem::EXT_PRIME2MEAN = "Prime2Mean";
-
-    template<>
-    const char* Foam::NamedEnum
-    <
-        Foam::fieldAverageItem::baseType,
-        2
-    >::names[] =
-    {
-        "iteration",
-        "time"
-    };
-}
+const Foam::word Foam::functionObjects::fieldAverageItem::EXT_MEAN
+(
+    "Mean"
+);
+
+const Foam::word Foam::functionObjects::fieldAverageItem::EXT_PRIME2MEAN
+(
+    "Prime2Mean"
+);
 
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::fieldAverageItem::baseType,
+    2
+>::names[] = { "iteration", "time"};
 
-const Foam::NamedEnum<Foam::fieldAverageItem::baseType, 2>
-    Foam::fieldAverageItem::baseTypeNames_;
+const Foam::NamedEnum
+<
+    Foam::functionObjects::fieldAverageItem::baseType,
+    2
+> Foam::functionObjects::fieldAverageItem::baseTypeNames_;
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fieldAverageItem::fieldAverageItem()
+Foam::functionObjects::fieldAverageItem::fieldAverageItem()
 :
-    active_(false),
     fieldName_("unknown"),
     mean_(0),
     meanFieldName_("unknown"),
@@ -65,9 +66,11 @@ Foam::fieldAverageItem::fieldAverageItem()
 {}
 
 
-Foam::fieldAverageItem::fieldAverageItem(const fieldAverageItem& faItem)
+Foam::functionObjects::fieldAverageItem::fieldAverageItem
+(
+    const fieldAverageItem& faItem
+)
 :
-    active_(faItem.active_),
     fieldName_(faItem.fieldName_),
     mean_(faItem.mean_),
     meanFieldName_(faItem.meanFieldName_),
@@ -81,13 +84,16 @@ Foam::fieldAverageItem::fieldAverageItem(const fieldAverageItem& faItem)
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fieldAverageItem::~fieldAverageItem()
+Foam::functionObjects::fieldAverageItem::~fieldAverageItem()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
-void Foam::fieldAverageItem::operator=(const fieldAverageItem& rhs)
+void Foam::functionObjects::fieldAverageItem::operator=
+(
+    const fieldAverageItem& rhs
+)
 {
     // Check for assignment to self
     if (this == &rhs)
@@ -98,7 +104,6 @@ void Foam::fieldAverageItem::operator=(const fieldAverageItem& rhs)
     }
 
     // Set updated values
-    active_ = rhs.active_;
     fieldName_ = rhs.fieldName_;
     mean_ = rhs.mean_;
     meanFieldName_ = rhs.meanFieldName_;
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H
index 0c40bac95ad99febcac2d5e1a78fd79a279e13c3..63e2b02c1fabcab2161b4fe0de908d9148fdae93 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fieldAverageItem
+    Foam::functionObjects::fieldAverageItem
 
 Description
     Helper class to describe what form of averaging to apply.  A set will be
@@ -62,12 +62,14 @@ namespace Foam
 class Istream;
 class Ostream;
 
+namespace functionObjects
+{
+
 // Forward declaration of friend functions and operators
 class fieldAverageItem;
 Istream& operator>>(Istream&, fieldAverageItem&);
 Ostream& operator<<(Ostream&, const fieldAverageItem&);
 
-
 /*---------------------------------------------------------------------------*\
                       Class fieldAverageItem Declaration
 \*---------------------------------------------------------------------------*/
@@ -98,9 +100,6 @@ private:
 
     // Private data
 
-        //- Active flag
-        Switch active_;
-
         //- Field name
         word fieldName_;
 
@@ -151,18 +150,6 @@ public:
 
         // Access
 
-            //- Return const access to the active flag
-            const Switch& active() const
-            {
-                return active_;
-            }
-
-            //- Return non-const access to the active flag
-            Switch& active()
-            {
-                return active_;
-            }
-
             //- Return const access to the field name
             const word& fieldName() const
             {
@@ -277,6 +264,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
index 7dfee8646d00b0a0f9517d9f59e1fc8b41152ede..f5fe50137bf8d39d0b416435cf041ed57176f295 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,9 +29,8 @@ License
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fieldAverageItem::fieldAverageItem(Istream& is)
+Foam::functionObjects::fieldAverageItem::fieldAverageItem(Istream& is)
 :
-    active_(false),
     fieldName_("unknown"),
     mean_(0),
     meanFieldName_("unknown"),
@@ -40,7 +39,11 @@ Foam::fieldAverageItem::fieldAverageItem(Istream& is)
     base_(ITER),
     window_(-1.0)
 {
-    is.check("Foam::fieldAverageItem::fieldAverageItem(Foam::Istream&)");
+    is.check
+    (
+        "Foam::functionObjects::fieldAverageItem::fieldAverageItem"
+        "(Foam::Istream&)"
+    );
 
     const dictionaryEntry entry(dictionary::null, is);
 
@@ -63,17 +66,20 @@ Foam::fieldAverageItem::fieldAverageItem(Istream& is)
 
 // * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
 
-Foam::Istream& Foam::operator>>(Istream& is, fieldAverageItem& faItem)
+Foam::Istream& Foam::functionObjects::operator>>
+(
+    Istream& is,
+    fieldAverageItem& faItem
+)
 {
     is.check
     (
         "Foam::Istream& Foam::operator>>"
-        "(Foam::Istream&, Foam::fieldAverageItem&)"
+        "(Foam::Istream&, Foam::functionObjects::fieldAverageItem&)"
     );
 
     const dictionaryEntry entry(dictionary::null, is);
 
-    faItem.active_ = false;
     faItem.fieldName_ = entry.keyword();
     entry.lookup("mean") >> faItem.mean_;
     entry.lookup("prime2Mean") >> faItem.prime2Mean_;
@@ -97,12 +103,16 @@ Foam::Istream& Foam::operator>>(Istream& is, fieldAverageItem& faItem)
 }
 
 
-Foam::Ostream& Foam::operator<<(Ostream& os, const fieldAverageItem& faItem)
+Foam::Ostream& Foam::functionObjects::operator<<
+(
+    Ostream& os,
+    const fieldAverageItem& faItem
+)
 {
     os.check
     (
         "Foam::Ostream& Foam::operator<<"
-        "(Foam::Ostream&, const Foam::fieldAverageItem&)"
+        "(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)"
     );
 
     os  << faItem.fieldName_ << nl << token::BEGIN_BLOCK << nl;
@@ -129,7 +139,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const fieldAverageItem& faItem)
     os.check
     (
         "Foam::Ostream& Foam::operator<<"
-        "(Foam::Ostream&, const Foam::fieldAverageItem&)"
+        "(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)"
     );
 
     return os;
diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C
index 44788eada95dc737f0e62bdd4c915c826287d429..3198b91cc663672bd3aecad4b05e003facdaf395 100644
--- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C
+++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,13 +30,17 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(fieldCoordinateSystemTransform, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(fieldCoordinateSystemTransform, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fieldCoordinateSystemTransform::fieldCoordinateSystemTransform
+Foam::functionObjects::fieldCoordinateSystemTransform::
+fieldCoordinateSystemTransform
 (
     const word& name,
     const objectRegistry& obr,
@@ -46,100 +50,91 @@ Foam::fieldCoordinateSystemTransform::fieldCoordinateSystemTransform
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldSet_(),
     coordSys_(obr, dict)
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
+    read(dict);
 
-        Info<< type() << " " << name_ << ":" << nl
-            << "   Applying transformation from global Cartesian to local "
-            << coordSys_ << nl << endl;
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
-    }
+    Info<< type() << " " << name_ << ":" << nl
+        << "   Applying transformation from global Cartesian to local "
+        << coordSys_ << nl << endl;
+}
+
+
+bool Foam::functionObjects::fieldCoordinateSystemTransform::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fieldCoordinateSystemTransform::~fieldCoordinateSystemTransform()
+Foam::functionObjects::fieldCoordinateSystemTransform::
+~fieldCoordinateSystemTransform()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::fieldCoordinateSystemTransform::read(const dictionary& dict)
+void Foam::functionObjects::fieldCoordinateSystemTransform::read
+(
+    const dictionary& dict
+)
 {
-    if (active_)
-    {
-        dict.lookup("fields") >> fieldSet_;
-    }
+    dict.lookup("fields") >> fieldSet_;
 }
 
 
-void Foam::fieldCoordinateSystemTransform::execute()
+void Foam::functionObjects::fieldCoordinateSystemTransform::execute()
 {
-    if (active_)
+    Info<< type() << " " << name_ << " output:" << nl;
+
+    forAll(fieldSet_, fieldI)
     {
-        Info<< type() << " " << name_ << " output:" << nl;
-
-        forAll(fieldSet_, fieldI)
-        {
-            // If necessary load field
-            transform<scalar>(fieldSet_[fieldI]);
-            transform<vector>(fieldSet_[fieldI]);
-            transform<sphericalTensor>(fieldSet_[fieldI]);
-            transform<symmTensor>(fieldSet_[fieldI]);
-            transform<tensor>(fieldSet_[fieldI]);
-        }
+        // If necessary load field
+        transform<scalar>(fieldSet_[fieldI]);
+        transform<vector>(fieldSet_[fieldI]);
+        transform<sphericalTensor>(fieldSet_[fieldI]);
+        transform<symmTensor>(fieldSet_[fieldI]);
+        transform<tensor>(fieldSet_[fieldI]);
     }
 }
 
 
-void Foam::fieldCoordinateSystemTransform::end()
+void Foam::functionObjects::fieldCoordinateSystemTransform::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::fieldCoordinateSystemTransform::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldCoordinateSystemTransform::timeSet()
+{}
 
 
-void Foam::fieldCoordinateSystemTransform::write()
+void Foam::functionObjects::fieldCoordinateSystemTransform::write()
 {
-    if (active_)
-    {
-        Info<< type() << " " << name_ << " output:" << nl;
+    Info<< type() << " " << name_ << " output:" << nl;
 
-        forAll(fieldSet_, fieldI)
-        {
-            const word fieldName = fieldSet_[fieldI] + ":Transformed";
-
-            const regIOobject& field =
-                obr_.lookupObject<regIOobject>(fieldName);
+    forAll(fieldSet_, fieldI)
+    {
+        const word fieldName = fieldSet_[fieldI] + ":Transformed";
 
-            Info<< "    writing field " << field.name() << nl;
+        const regIOobject& field =
+            obr_.lookupObject<regIOobject>(fieldName);
 
-            field.write();
-        }
+        Info<< "    writing field " << field.name() << nl;
 
-        Info<< endl;
+        field.write();
     }
+
+    Info<< endl;
 }
 
 
diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H
index c74aad72fb7d7939c6733ae3ce54b5c9701f6327..ceea83e7ee4a7bfb0f4f480867fc10901fe6667c 100644
--- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H
+++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fieldCoordinateSystemTransform
+    Foam::functionObjects::fieldCoordinateSystemTransform
 
 Group
     grpFieldFunctionObjects
@@ -93,6 +93,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                Class fieldCoordinateSystemTransform Declaration
 \*---------------------------------------------------------------------------*/
@@ -108,9 +111,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Fields to transform
         wordList fieldSet_;
 
@@ -156,6 +156,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~fieldCoordinateSystemTransform();
@@ -196,6 +206,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.H b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.H
index 20cf0fccbf9b73b590cfe41b5d61af920162c6ab..aaa018733337f16048b9db67db6e2b665a7fe1ea 100644
--- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,8 +43,10 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<fieldCoordinateSystemTransform>
-        fieldCoordinateSystemTransformFunctionObject;
+    typedef OutputFilterFunctionObject
+    <
+        functionObjects::fieldCoordinateSystemTransform
+    > fieldCoordinateSystemTransformFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.C b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.C
index 627414b9e4e29d61925f598373c7eeedf5608738..334d9d6289de90b7cf181cab250d6cdbc0fd64f5 100644
--- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,7 +32,7 @@ License
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::fieldCoordinateSystemTransform::transformField
+void Foam::functionObjects::fieldCoordinateSystemTransform::transformField
 (
     const Type& field
 ) const
@@ -74,7 +74,7 @@ void Foam::fieldCoordinateSystemTransform::transformField
 
 
 template<class Type>
-void Foam::fieldCoordinateSystemTransform::transform
+void Foam::functionObjects::fieldCoordinateSystemTransform::transform
 (
     const word& fieldName
 ) const
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C
index 6b0c43ef7b527bb59c24a12cb838ee02c0e076ac..7b29a3cb20e22ef521e8e1da5322db494477cb5e 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C
@@ -29,29 +29,30 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(fieldMinMax, 0);
-
-    template<>
-    const char* NamedEnum
-    <
-        fieldMinMax::modeType,
-        2
-    >::names[] =
-    {
-        "magnitude",
-        "component"
-    };
+}
 }
 
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::fieldMinMax::modeType,
+    2
+>::names[] = {"magnitude", "component"};
 
-const Foam::NamedEnum<Foam::fieldMinMax::modeType, 2>
-Foam::fieldMinMax::modeTypeNames_;
+const Foam::NamedEnum
+<
+    Foam::functionObjects::fieldMinMax::modeType,
+    2
+> Foam::functionObjects::fieldMinMax::modeTypeNames_;
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fieldMinMax::fieldMinMax
+Foam::functionObjects::fieldMinMax::fieldMinMax
 (
     const word& name,
     const objectRegistry& obr,
@@ -62,47 +63,47 @@ Foam::fieldMinMax::fieldMinMax
     functionObjectFiles(obr, name, typeName),
     name_(name),
     obr_(obr),
-    active_(true),
     log_(true),
     location_(true),
     mode_(mdMag),
     fieldSet_()
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
-    }
-
     read(dict);
 }
 
 
+bool Foam::functionObjects::fieldMinMax::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fieldMinMax::~fieldMinMax()
+Foam::functionObjects::fieldMinMax::~fieldMinMax()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::fieldMinMax::read(const dictionary& dict)
+void Foam::functionObjects::fieldMinMax::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        log_ = dict.lookupOrDefault<Switch>("log", true);
-        location_ = dict.lookupOrDefault<Switch>("location", true);
+    log_ = dict.lookupOrDefault<Switch>("log", true);
+    location_ = dict.lookupOrDefault<Switch>("location", true);
 
-        mode_ = modeTypeNames_[dict.lookupOrDefault<word>("mode", "magnitude")];
-        dict.lookup("fields") >> fieldSet_;
-    }
+    mode_ = modeTypeNames_[dict.lookupOrDefault<word>("mode", "magnitude")];
+    dict.lookup("fields") >> fieldSet_;
 }
 
 
-void Foam::fieldMinMax::writeFileHeader(const label i)
+void Foam::functionObjects::fieldMinMax::writeFileHeader(const label i)
 {
     OFstream& file = this->file();
 
@@ -142,45 +143,36 @@ void Foam::fieldMinMax::writeFileHeader(const label i)
 }
 
 
-void Foam::fieldMinMax::execute()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::fieldMinMax::execute()
+{}
 
 
-void Foam::fieldMinMax::end()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::fieldMinMax::end()
+{}
 
 
-void Foam::fieldMinMax::timeSet()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::fieldMinMax::timeSet()
+{}
 
 
-void Foam::fieldMinMax::write()
+void Foam::functionObjects::fieldMinMax::write()
 {
-    if (active_)
-    {
-        functionObjectFiles::write();
+    functionObjectFiles::write();
 
-        if (!location_) writeTime(file());
-        if (log_) Info<< type() << " " << name_ <<  " output:" << nl;
-
-        forAll(fieldSet_, fieldI)
-        {
-            calcMinMaxFields<scalar>(fieldSet_[fieldI], mdCmpt);
-            calcMinMaxFields<vector>(fieldSet_[fieldI], mode_);
-            calcMinMaxFields<sphericalTensor>(fieldSet_[fieldI], mode_);
-            calcMinMaxFields<symmTensor>(fieldSet_[fieldI], mode_);
-            calcMinMaxFields<tensor>(fieldSet_[fieldI], mode_);
-        }
+    if (!location_) writeTime(file());
+    if (log_) Info<< type() << " " << name_ <<  " output:" << nl;
 
-        if (!location_) file()<< endl;
-        if (log_) Info<< endl;
+    forAll(fieldSet_, fieldI)
+    {
+        calcMinMaxFields<scalar>(fieldSet_[fieldI], mdCmpt);
+        calcMinMaxFields<vector>(fieldSet_[fieldI], mode_);
+        calcMinMaxFields<sphericalTensor>(fieldSet_[fieldI], mode_);
+        calcMinMaxFields<symmTensor>(fieldSet_[fieldI], mode_);
+        calcMinMaxFields<tensor>(fieldSet_[fieldI], mode_);
     }
+
+    if (!location_) file()<< endl;
+    if (log_) Info<< endl;
 }
 
 
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H
index 22583932a5fc37e197a1a80ddd8b53e61f4de335..b28e9433d8c99cc73551ec700f1e64847c7ba82e 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fieldMinMax
+    Foam::functionObjects::fieldMinMax
 
 Group
     grpFieldFunctionObjects
@@ -93,6 +93,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                        Class fieldMinMax Declaration
 \*---------------------------------------------------------------------------*/
@@ -122,9 +125,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Switch to send output to Info as well
         Switch log_;
 
@@ -182,6 +182,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~fieldMinMax();
@@ -230,6 +240,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H
index 73cb571e9f3cc769c276698a7aeb66cf261e8c3a..dceaac3bde74b6fcf5cd74640142ea729b0a5278 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<fieldMinMax>
+    typedef OutputFilterFunctionObject<functionObjects::fieldMinMax>
         fieldMinMaxFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C
index fb3b6eebc61778c26edf6267e071e493b90c5e8a..744f2061eabf7473a4e6c395985623ec6d2dac19 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C
@@ -29,7 +29,7 @@ License
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::fieldMinMax::output
+void Foam::functionObjects::fieldMinMax::output
 (
     const word& fieldName,
     const word& outputName,
@@ -99,7 +99,7 @@ void Foam::fieldMinMax::output
 
 
 template<class Type>
-void Foam::fieldMinMax::calcMinMaxFields
+void Foam::functionObjects::fieldMinMax::calcMinMaxFields
 (
     const word& fieldName,
     const modeType& mode
diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C
index 3b1d86eaf6662f50fb1f943be9f483d1dd4346bf..8d9b291db2957aeeb329bc285c113e3aad3ebee3 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,48 +32,61 @@ License
 
 namespace Foam
 {
-    template<>
-    const char* NamedEnum<fieldValues::cellSource::sourceType, 2>::names[] =
-    {
-        "cellZone",
-        "all"
-    };
-
-
-    template<>
-    const char* NamedEnum<fieldValues::cellSource::operationType, 11>::names[] =
-    {
-        "none",
-        "sum",
-        "sumMag",
-        "average",
-        "weightedAverage",
-        "volAverage",
-        "weightedVolAverage",
-        "volIntegrate",
-        "min",
-        "max",
-        "CoV"
-    };
-
-    namespace fieldValues
-    {
-        defineTypeNameAndDebug(cellSource, 0);
-        addToRunTimeSelectionTable(fieldValue, cellSource, dictionary);
-    }
+namespace functionObjects
+{
+namespace fieldValues
+{
+    defineTypeNameAndDebug(cellSource, 0);
+    addToRunTimeSelectionTable(fieldValue, cellSource, dictionary);
+}
+}
 }
 
-
-const Foam::NamedEnum<Foam::fieldValues::cellSource::sourceType, 2>
-    Foam::fieldValues::cellSource::sourceTypeNames_;
-
-const Foam::NamedEnum<Foam::fieldValues::cellSource::operationType, 11>
-    Foam::fieldValues::cellSource::operationTypeNames_;
+template<>
+const char*
+Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::cellSource::sourceType,
+    2
+>::names[] = {"cellZone", "all"};
+
+template<>
+const char*
+Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::cellSource::operationType,
+    11
+>::names[] =
+{
+    "none",
+    "sum",
+    "sumMag",
+    "average",
+    "weightedAverage",
+    "volAverage",
+    "weightedVolAverage",
+    "volIntegrate",
+    "min",
+    "max",
+    "CoV"
+};
+
+const Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::cellSource::sourceType,
+    2
+> Foam::functionObjects::fieldValues::cellSource::sourceTypeNames_;
+
+const Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::cellSource::operationType,
+    11
+> Foam::functionObjects::fieldValues::cellSource::operationTypeNames_;
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::fieldValues::cellSource::setCellZoneCells()
+void Foam::functionObjects::fieldValues::cellSource::setCellZoneCells()
 {
     switch (source_)
     {
@@ -118,7 +131,7 @@ void Foam::fieldValues::cellSource::setCellZoneCells()
 }
 
 
-Foam::scalar Foam::fieldValues::cellSource::volume() const
+Foam::scalar Foam::functionObjects::fieldValues::cellSource::volume() const
 {
     return gSum(filterField(mesh().V()));
 }
@@ -126,19 +139,19 @@ Foam::scalar Foam::fieldValues::cellSource::volume() const
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
-void Foam::fieldValues::cellSource::initialise(const dictionary& dict)
+void Foam::functionObjects::fieldValues::cellSource::initialise
+(
+    const dictionary& dict
+)
 {
     setCellZoneCells();
 
     if (nCells_ == 0)
     {
-        WarningInFunction
+        FatalErrorInFunction
             << type() << " " << name_ << ": "
             << sourceTypeNames_[source_] << "(" << sourceName_ << "):" << nl
-            << "    Source has no cells - deactivating" << endl;
-
-        active_ = false;
-        return;
+            << "    Source has no cells" << exit(FatalError);
     }
 
     volume_ = volume();
@@ -158,7 +171,10 @@ void Foam::fieldValues::cellSource::initialise(const dictionary& dict)
 }
 
 
-void Foam::fieldValues::cellSource::writeFileHeader(const label i)
+void Foam::functionObjects::fieldValues::cellSource::writeFileHeader
+(
+    const label i
+)
 {
     writeCommented(file(), "Source : ");
     file() << sourceTypeNames_[source_] << " " << sourceName_ << endl;
@@ -186,7 +202,7 @@ void Foam::fieldValues::cellSource::writeFileHeader(const label i)
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fieldValues::cellSource::cellSource
+Foam::functionObjects::fieldValues::cellSource::cellSource
 (
     const word& name,
     const objectRegistry& obr,
@@ -206,74 +222,84 @@ Foam::fieldValues::cellSource::cellSource
 }
 
 
+bool Foam::functionObjects::fieldValues::cellSource::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fieldValues::cellSource::~cellSource()
+Foam::functionObjects::fieldValues::cellSource::~cellSource()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::fieldValues::cellSource::read(const dictionary& dict)
+void Foam::functionObjects::fieldValues::cellSource::read
+(
+    const dictionary& dict
+)
 {
     fieldValue::read(dict);
 
-    if (active_)
-    {
-        // no additional info to read
-        initialise(dict);
-    }
+    // No additional info to read
+    initialise(dict);
 }
 
 
-void Foam::fieldValues::cellSource::write()
+void Foam::functionObjects::fieldValues::cellSource::write()
 {
     fieldValue::write();
 
-    if (active_)
+    if (Pstream::master())
     {
-        if (Pstream::master())
-        {
-            writeTime(file());
-        }
+        writeTime(file());
+    }
 
-        if (writeVolume_)
+    if (writeVolume_)
+    {
+        volume_ = volume();
+        if (Pstream::master())
         {
-            volume_ = volume();
-            if (Pstream::master())
-            {
-                file() << tab << volume_;
-            }
-            if (log_) Info<< "    total volume = " << volume_ << endl;
+            file() << tab << volume_;
         }
+        if (log_) Info<< "    total volume = " << volume_ << endl;
+    }
 
-        forAll(fields_, i)
-        {
-            const word& fieldName = fields_[i];
-            bool processed = false;
+    forAll(fields_, i)
+    {
+        const word& fieldName = fields_[i];
+        bool processed = false;
 
-            processed = processed || writeValues<scalar>(fieldName);
-            processed = processed || writeValues<vector>(fieldName);
-            processed = processed || writeValues<sphericalTensor>(fieldName);
-            processed = processed || writeValues<symmTensor>(fieldName);
-            processed = processed || writeValues<tensor>(fieldName);
+        processed = processed || writeValues<scalar>(fieldName);
+        processed = processed || writeValues<vector>(fieldName);
+        processed = processed || writeValues<sphericalTensor>(fieldName);
+        processed = processed || writeValues<symmTensor>(fieldName);
+        processed = processed || writeValues<tensor>(fieldName);
 
-            if (!processed)
-            {
-                WarningInFunction
-                    << "Requested field " << fieldName
-                    << " not found in database and not processed"
-                    << endl;
-            }
-        }
-
-        if (Pstream::master())
+        if (!processed)
         {
-            file()<< endl;
+            WarningInFunction
+                << "Requested field " << fieldName
+                << " not found in database and not processed"
+                << endl;
         }
+    }
 
-        if (log_) Info<< endl;
+    if (Pstream::master())
+    {
+        file()<< endl;
     }
+
+    if (log_) Info<< endl;
 }
 
 
diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H
index 169a816eee41adafa975303c65f34c058e10f216..7de7069c7d6326cc68a73f6a62b23fd19d33b97d 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fieldValues::cellSource
+    Foam::functionObjects::fieldValues::cellSource
 
 Group
     grpFieldFunctionObjects
@@ -114,6 +114,8 @@ SourceFiles
 
 namespace Foam
 {
+namespace functionObjects
+{
 namespace fieldValues
 {
 
@@ -237,14 +239,26 @@ public:
     TypeName("cellSource");
 
 
-    //- Construct from components
-    cellSource
-    (
-        const word& name,
-        const objectRegistry& obr,
-        const dictionary& dict,
-        const bool loadFromFiles = false
-    );
+    // Constructors
+
+        //- Construct from components
+        cellSource
+        (
+            const word& name,
+            const objectRegistry& obr,
+            const dictionary& dict,
+            const bool loadFromFiles = false
+        );
+
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
 
 
     //- Destructor
@@ -283,6 +297,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace fieldValues
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.H
index f6e8045457a4461fffe60556716435ceffda083e..a136d782bc7cfb85829afff8e073f18b266ce570 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,8 +43,10 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<fieldValues::cellSource>
-        cellSourceFunctionObject;
+    typedef OutputFilterFunctionObject
+    <
+        functionObjects::fieldValues::cellSource
+    > cellSourceFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.H
index 3256881d846e2bd28758909ee340b12c5e0fd931..c0a6bee40f9322fba4045f8101ae6666e62b33b1 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,19 +27,18 @@ License
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline const Foam::fieldValues::cellSource::sourceType&
-Foam::fieldValues::cellSource::source() const
+inline const Foam::functionObjects::fieldValues::cellSource::sourceType&
+Foam::functionObjects::fieldValues::cellSource::source() const
 {
     return source_;
 }
 
 
 inline const Foam::labelList&
-Foam::fieldValues::cellSource::cellId() const
+Foam::functionObjects::fieldValues::cellSource::cellId() const
 {
     return cellId_;
 }
 
 
 // ************************************************************************* //
-
diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C
index d678ee53a82331415bcc4a3e84d8516af71f31d1..4bb2dad28cf2e10b6ff15ba754ba6bf62bc55213 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C
@@ -29,7 +29,10 @@ License
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class Type>
-bool Foam::fieldValues::cellSource::validField(const word& fieldName) const
+bool Foam::functionObjects::fieldValues::cellSource::validField
+(
+    const word& fieldName
+) const
 {
     typedef GeometricField<Type, fvPatchField, volMesh> vf;
 
@@ -43,7 +46,8 @@ bool Foam::fieldValues::cellSource::validField(const word& fieldName) const
 
 
 template<class Type>
-Foam::tmp<Foam::Field<Type>> Foam::fieldValues::cellSource::setFieldValues
+Foam::tmp<Foam::Field<Type>>
+Foam::functionObjects::fieldValues::cellSource::setFieldValues
 (
     const word& fieldName,
     const bool mustGet
@@ -68,7 +72,7 @@ Foam::tmp<Foam::Field<Type>> Foam::fieldValues::cellSource::setFieldValues
 
 
 template<class Type>
-Type Foam::fieldValues::cellSource::processValues
+Type Foam::functionObjects::fieldValues::cellSource::processValues
 (
     const Field<Type>& values,
     const scalarField& V,
@@ -140,10 +144,8 @@ Type Foam::fieldValues::cellSource::processValues
 
             break;
         }
-        default:
-        {
-            // Do nothing
-        }
+        case opNone:
+        {}
     }
 
     return result;
@@ -153,7 +155,10 @@ Type Foam::fieldValues::cellSource::processValues
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-bool Foam::fieldValues::cellSource::writeValues(const word& fieldName)
+bool Foam::functionObjects::fieldValues::cellSource::writeValues
+(
+    const word& fieldName
+)
 {
     const bool ok = validField<Type>(fieldName);
 
@@ -211,7 +216,8 @@ bool Foam::fieldValues::cellSource::writeValues(const word& fieldName)
 
 
 template<class Type>
-Foam::tmp<Foam::Field<Type>> Foam::fieldValues::cellSource::filterField
+Foam::tmp<Foam::Field<Type>>
+Foam::functionObjects::fieldValues::cellSource::filterField
 (
     const Field<Type>& field
 ) const
diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C
index f37d0b484638bd566af94d602d821a74be89ad5b..6cf89971d0085c27629823e63d4fd00a80752f0f 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C
@@ -38,53 +38,68 @@ License
 
 namespace Foam
 {
-    template<>
-    const char* NamedEnum<fieldValues::faceSource::sourceType, 3>::names[] =
-    {
-        "faceZone",
-        "patch",
-        "sampledSurface"
-    };
-
-
-    template<>
-    const char* NamedEnum<fieldValues::faceSource::operationType, 15>::names[] =
-    {
-        "none",
-        "sum",
-        "sumMag",
-        "sumDirection",
-        "sumDirectionBalance",
-        "average",
-        "weightedAverage",
-        "areaAverage",
-        "weightedAreaAverage",
-        "areaIntegrate",
-        "min",
-        "max",
-        "CoV",
-        "areaNormalAverage",
-        "areaNormalIntegrate"
-    };
-
-    namespace fieldValues
-    {
-        defineTypeNameAndDebug(faceSource, 0);
-        addToRunTimeSelectionTable(fieldValue, faceSource, dictionary);
-    }
+namespace functionObjects
+{
+namespace fieldValues
+{
+    defineTypeNameAndDebug(faceSource, 0);
+    addToRunTimeSelectionTable(fieldValue, faceSource, dictionary);
+}
+}
 }
 
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::faceSource::sourceType,
+    3
+>::names[] =
+{
+    "faceZone",
+    "patch",
+    "sampledSurface"
+};
 
-const Foam::NamedEnum<Foam::fieldValues::faceSource::sourceType, 3>
-    Foam::fieldValues::faceSource::sourceTypeNames_;
-
-const Foam::NamedEnum<Foam::fieldValues::faceSource::operationType, 15>
-    Foam::fieldValues::faceSource::operationTypeNames_;
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::faceSource::operationType,
+    15
+>::names[] =
+{
+    "none",
+    "sum",
+    "sumMag",
+    "sumDirection",
+    "sumDirectionBalance",
+    "average",
+    "weightedAverage",
+    "areaAverage",
+    "weightedAreaAverage",
+    "areaIntegrate",
+    "min",
+    "max",
+    "CoV",
+    "areaNormalAverage",
+    "areaNormalIntegrate"
+};
+
+const Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::faceSource::sourceType,
+    3
+> Foam::functionObjects::fieldValues::faceSource::sourceTypeNames_;
+
+const Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::faceSource::operationType,
+    15
+> Foam::functionObjects::fieldValues::faceSource::operationTypeNames_;
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::fieldValues::faceSource::setFaceZoneFaces()
+void Foam::functionObjects::fieldValues::faceSource::setFaceZoneFaces()
 {
     label zoneId = mesh().faceZones().findZoneID(sourceName_);
 
@@ -169,7 +184,7 @@ void Foam::fieldValues::faceSource::setFaceZoneFaces()
 }
 
 
-void Foam::fieldValues::faceSource::setPatchFaces()
+void Foam::functionObjects::fieldValues::faceSource::setPatchFaces()
 {
     const label patchid = mesh().boundaryMesh().findPatchID(sourceName_);
 
@@ -206,7 +221,10 @@ void Foam::fieldValues::faceSource::setPatchFaces()
 }
 
 
-void Foam::fieldValues::faceSource::sampledSurfaceFaces(const dictionary& dict)
+void Foam::functionObjects::fieldValues::faceSource::sampledSurfaceFaces
+(
+    const dictionary& dict
+)
 {
     surfacePtr_ = sampledSurface::New
     (
@@ -219,7 +237,7 @@ void Foam::fieldValues::faceSource::sampledSurfaceFaces(const dictionary& dict)
 }
 
 
-void Foam::fieldValues::faceSource::combineMeshGeometry
+void Foam::functionObjects::fieldValues::faceSource::combineMeshGeometry
 (
     faceList& faces,
     pointField& points
@@ -340,7 +358,7 @@ void Foam::fieldValues::faceSource::combineMeshGeometry
 }
 
 
-void Foam::fieldValues::faceSource::combineSurfaceGeometry
+void Foam::functionObjects::fieldValues::faceSource::combineSurfaceGeometry
 (
     faceList& faces,
     pointField& points
@@ -379,7 +397,7 @@ void Foam::fieldValues::faceSource::combineSurfaceGeometry
 }
 
 
-Foam::scalar Foam::fieldValues::faceSource::totalArea() const
+Foam::scalar Foam::functionObjects::fieldValues::faceSource::totalArea() const
 {
     scalar totalArea;
 
@@ -398,7 +416,10 @@ Foam::scalar Foam::fieldValues::faceSource::totalArea() const
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
-void Foam::fieldValues::faceSource::initialise(const dictionary& dict)
+void Foam::functionObjects::fieldValues::faceSource::initialise
+(
+    const dictionary& dict
+)
 {
     dict.lookup("sourceName") >> sourceName_;
 
@@ -431,13 +452,10 @@ void Foam::fieldValues::faceSource::initialise(const dictionary& dict)
 
     if (nFaces_ == 0)
     {
-        WarningInFunction
+        FatalErrorInFunction
             << type() << " " << name_ << ": "
             << sourceTypeNames_[source_] << "(" << sourceName_ << "):" << nl
-            << "    Source has no faces - deactivating" << endl;
-
-        active_ = false;
-        return;
+            << "    Source has no faces" << exit(FatalError);
     }
 
     if (surfacePtr_.valid())
@@ -513,7 +531,10 @@ void Foam::fieldValues::faceSource::initialise(const dictionary& dict)
 }
 
 
-void Foam::fieldValues::faceSource::writeFileHeader(const label i)
+void Foam::functionObjects::fieldValues::faceSource::writeFileHeader
+(
+    const label i
+)
 {
     writeCommented(file(), "Source : ");
     file() << sourceTypeNames_[source_] << " " << sourceName_ << endl;
@@ -540,7 +561,7 @@ void Foam::fieldValues::faceSource::writeFileHeader(const label i)
 
 
 template<>
-Foam::scalar Foam::fieldValues::faceSource::processValues
+Foam::scalar Foam::functionObjects::fieldValues::faceSource::processValues
 (
     const Field<scalar>& values,
     const vectorField& Sf,
@@ -571,7 +592,7 @@ Foam::scalar Foam::fieldValues::faceSource::processValues
 
 
 template<>
-Foam::vector Foam::fieldValues::faceSource::processValues
+Foam::vector Foam::functionObjects::fieldValues::faceSource::processValues
 (
     const Field<vector>& values,
     const vectorField& Sf,
@@ -617,7 +638,7 @@ Foam::vector Foam::fieldValues::faceSource::processValues
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fieldValues::faceSource::faceSource
+Foam::functionObjects::fieldValues::faceSource::faceSource
 (
     const word& name,
     const objectRegistry& obr,
@@ -643,97 +664,106 @@ Foam::fieldValues::faceSource::faceSource
 }
 
 
+bool Foam::functionObjects::fieldValues::faceSource::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fieldValues::faceSource::~faceSource()
+Foam::functionObjects::fieldValues::faceSource::~faceSource()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::fieldValues::faceSource::read(const dictionary& dict)
+void Foam::functionObjects::fieldValues::faceSource::read
+(
+    const dictionary& dict
+)
 {
     fieldValue::read(dict);
-
-    if (active_)
-    {
-        initialise(dict);
-    }
+    initialise(dict);
 }
 
 
-void Foam::fieldValues::faceSource::write()
+void Foam::functionObjects::fieldValues::faceSource::write()
 {
     fieldValue::write();
 
-    if (active_)
+    if (surfacePtr_.valid())
     {
-        if (surfacePtr_.valid())
-        {
-            surfacePtr_().update();
-        }
+        surfacePtr_().update();
+    }
+
+    if (Pstream::master())
+    {
+        writeTime(file());
+    }
 
+    if (writeArea_)
+    {
+        totalArea_ = totalArea();
         if (Pstream::master())
         {
-            writeTime(file());
+            file() << tab << totalArea_;
         }
+        if (log_) Info<< "    total area = " << totalArea_ << endl;
+    }
 
-        if (writeArea_)
-        {
-            totalArea_ = totalArea();
-            if (Pstream::master())
-            {
-                file() << tab << totalArea_;
-            }
-            if (log_) Info<< "    total area = " << totalArea_ << endl;
-        }
+    // construct weight field. Note: zero size means weight = 1
+    scalarField weightField;
+    if (weightFieldName_ != "none")
+    {
+        weightField =
+            getFieldValues<scalar>
+            (
+                weightFieldName_,
+                true,
+                orientWeightField_
+            );
+    }
 
-        // construct weight field. Note: zero size means weight = 1
-        scalarField weightField;
-        if (weightFieldName_ != "none")
-        {
-            weightField =
-                getFieldValues<scalar>
-                (
-                    weightFieldName_,
-                    true,
-                    orientWeightField_
-                );
-        }
+    // Combine onto master
+    combineFields(weightField);
 
-        // Combine onto master
-        combineFields(weightField);
+    // process the fields
+    forAll(fields_, i)
+    {
+        const word& fieldName = fields_[i];
+        bool ok = false;
 
-        // process the fields
-        forAll(fields_, i)
-        {
-            const word& fieldName = fields_[i];
-            bool ok = false;
-
-            bool orient = i >= orientedFieldsStart_;
-            ok = ok || writeValues<scalar>(fieldName, weightField, orient);
-            ok = ok || writeValues<vector>(fieldName, weightField, orient);
-            ok = ok
-              || writeValues<sphericalTensor>(fieldName, weightField, orient);
-            ok = ok || writeValues<symmTensor>(fieldName, weightField, orient);
-            ok = ok || writeValues<tensor>(fieldName, weightField, orient);
-
-            if (!ok)
-            {
-                WarningInFunction
-                    << "Requested field " << fieldName
-                    << " not found in database and not processed"
-                    << endl;
-            }
-        }
+        bool orient = i >= orientedFieldsStart_;
+        ok = ok || writeValues<scalar>(fieldName, weightField, orient);
+        ok = ok || writeValues<vector>(fieldName, weightField, orient);
+        ok = ok
+          || writeValues<sphericalTensor>(fieldName, weightField, orient);
+        ok = ok || writeValues<symmTensor>(fieldName, weightField, orient);
+        ok = ok || writeValues<tensor>(fieldName, weightField, orient);
 
-        if (Pstream::master())
+        if (!ok)
         {
-            file()<< endl;
+            WarningInFunction
+                << "Requested field " << fieldName
+                << " not found in database and not processed"
+                << endl;
         }
+    }
 
-        if (log_) Info<< endl;
+    if (Pstream::master())
+    {
+        file()<< endl;
     }
+
+    if (log_) Info<< endl;
 }
 
 
diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H
index 8389711a900d7fda7847b9a5a8bb322124a09470..ec72bd868ffd9409d7e3eab4912b707098dc4b81 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fieldValues::faceSource
+    Foam::functionObjects::fieldValues::faceSource
 
 Group
     grpFieldFunctionObjects
@@ -152,6 +152,8 @@ namespace Foam
 
 class sampledSurface;
 
+namespace functionObjects
+{
 namespace fieldValues
 {
 
@@ -337,14 +339,26 @@ public:
     TypeName("faceSource");
 
 
-    //- Construct from components
-    faceSource
-    (
-        const word& name,
-        const objectRegistry& obr,
-        const dictionary& dict,
-        const bool loadFromFiles = false
-    );
+    // Constructors
+
+        //- Construct from components
+        faceSource
+        (
+            const word& name,
+            const objectRegistry& obr,
+            const dictionary& dict,
+            const bool loadFromFiles = false
+        );
+
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
 
 
     //- Destructor
@@ -426,6 +440,7 @@ vector faceSource::processValues
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace fieldValues
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.H
index b25c1042fd6c4319619685bfcbc08bcd2ddc0b6b..e368ea942f80160a9d4254b99b41f4cc183a6d81 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,8 +43,10 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<fieldValues::faceSource>
-        faceSourceFunctionObject;
+    typedef OutputFilterFunctionObject
+    <
+        functionObjects::fieldValues::faceSource
+    > faceSourceFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H
index 5f5a76d165ecb159d1ff49d60b81ef0d8a8d8e2a..8808c1a5b51eb84961adbb2b36fe0508016e8f4e 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,33 +27,32 @@ License
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline const Foam::fieldValues::faceSource::sourceType&
-Foam::fieldValues::faceSource::source() const
+inline const Foam::functionObjects::fieldValues::faceSource::sourceType&
+Foam::functionObjects::fieldValues::faceSource::source() const
 {
     return source_;
 }
 
 
 inline const Foam::labelList&
-Foam::fieldValues::faceSource::faceId() const
+Foam::functionObjects::fieldValues::faceSource::faceId() const
 {
     return faceId_;
 }
 
 
 inline const Foam::labelList&
-Foam::fieldValues::faceSource::facePatch() const
+Foam::functionObjects::fieldValues::faceSource::facePatch() const
 {
     return facePatchId_;
 }
 
 
 inline const Foam::labelList&
-Foam::fieldValues::faceSource::faceSign() const
+Foam::functionObjects::fieldValues::faceSource::faceSign() const
 {
     return faceSign_;
 }
 
 
 // ************************************************************************* //
-
diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C
index eb860ffc068da1935e2c8c709aac2d3e73d7d96b..e11317f57105309fa7a9f3e9292a6579a75c633e 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C
@@ -32,7 +32,10 @@ License
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class Type>
-bool Foam::fieldValues::faceSource::validField(const word& fieldName) const
+bool Foam::functionObjects::fieldValues::faceSource::validField
+(
+    const word& fieldName
+) const
 {
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> sf;
     typedef GeometricField<Type, fvPatchField, volMesh> vf;
@@ -51,7 +54,8 @@ bool Foam::fieldValues::faceSource::validField(const word& fieldName) const
 
 
 template<class Type>
-Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::getFieldValues
+Foam::tmp<Foam::Field<Type>>
+Foam::functionObjects::fieldValues::faceSource::getFieldValues
 (
     const word& fieldName,
     const bool mustGet,
@@ -120,7 +124,7 @@ Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::getFieldValues
 
 
 template<class Type>
-Type Foam::fieldValues::faceSource::processSameTypeValues
+Type Foam::functionObjects::fieldValues::faceSource::processSameTypeValues
 (
     const Field<Type>& values,
     const vectorField& Sf,
@@ -236,10 +240,12 @@ Type Foam::fieldValues::faceSource::processSameTypeValues
 
             break;
         }
-        default:
-        {
-            // Do nothing
-        }
+        case opAreaNormalAverage:
+        {}
+        case opAreaNormalIntegrate:
+        {}
+        case opNone:
+        {}
     }
 
     return result;
@@ -247,7 +253,7 @@ Type Foam::fieldValues::faceSource::processSameTypeValues
 
 
 template<class Type>
-Type Foam::fieldValues::faceSource::processValues
+Type Foam::functionObjects::fieldValues::faceSource::processValues
 (
     const Field<Type>& values,
     const vectorField& Sf,
@@ -262,7 +268,7 @@ Type Foam::fieldValues::faceSource::processValues
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-bool Foam::fieldValues::faceSource::writeValues
+bool Foam::functionObjects::fieldValues::faceSource::writeValues
 (
     const word& fieldName,
     const scalarField& weightField,
@@ -348,7 +354,8 @@ bool Foam::fieldValues::faceSource::writeValues
 
 
 template<class Type>
-Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::filterField
+Foam::tmp<Foam::Field<Type>>
+Foam::functionObjects::fieldValues::faceSource::filterField
 (
     const GeometricField<Type, fvPatchField, volMesh>& field,
     const bool applyOrientation
@@ -389,7 +396,8 @@ Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::filterField
 
 
 template<class Type>
-Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::filterField
+Foam::tmp<Foam::Field<Type>>
+Foam::functionObjects::fieldValues::faceSource::filterField
 (
     const GeometricField<Type, fvsPatchField, surfaceMesh>& field,
     const bool applyOrientation
diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C
index f726a201099a2d13cdee38e928acbe427a5e42f2..cc01217794abf50023e9b9a22018b14b99b826e3 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C
@@ -41,25 +41,19 @@ namespace Foam
 
 void Foam::fieldValue::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        dict_ = dict;
-
-        log_ = dict.lookupOrDefault<Switch>("log", true);
-        dict.lookup("fields") >> fields_;
-        dict.lookup("valueOutput") >> valueOutput_;
-    }
+    dict_ = dict;
+
+    log_ = dict.lookupOrDefault<Switch>("log", true);
+    dict.lookup("fields") >> fields_;
+    dict.lookup("valueOutput") >> valueOutput_;
 }
 
 
 void Foam::fieldValue::write()
 {
-    if (active_)
-    {
-        functionObjectFiles::write();
+    functionObjectFiles::write();
 
-        if (log_) Info<< type() << " " << name_ << " output:" << nl;
-    }
+    if (log_) Info<< type() << " " << name_ << " output:" << nl;
 }
 
 
@@ -78,25 +72,13 @@ Foam::fieldValue::fieldValue
     name_(name),
     obr_(obr),
     dict_(dict),
-    active_(true),
     log_(true),
     sourceName_(word::null),
     fields_(dict.lookup("fields")),
     valueOutput_(dict.lookup("valueOutput")),
     resultDict_(fileName("name"), dictionary::null)
 {
-    // Only active if obr is an fvMesh
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
-    }
-    else
-    {
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name << nl
-            << endl;
-        active_ = false;
-    }
+    read(dict);
 }
 
 
@@ -109,33 +91,23 @@ Foam::fieldValue::~fieldValue()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 void Foam::fieldValue::execute()
-{
-    // Do nothing
-}
+{}
 
 
 void Foam::fieldValue::end()
-{
-    // Do nothing
-}
+{}
 
 
 void Foam::fieldValue::timeSet()
-{
-    // Do nothing
-}
+{}
 
 
 void Foam::fieldValue::updateMesh(const mapPolyMesh&)
-{
-    // Do nothing
-}
+{}
 
 
 void Foam::fieldValue::movePoints(const polyMesh&)
-{
-    // Do nothing
-}
+{}
 
 
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H
index 3abda7336a15694cfcef407f427aa6636c7d6991..5446f003f72891db79f154e4dd1e2b93d5e89c39 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H
@@ -78,9 +78,6 @@ protected:
         //- Construction dictionary
         dictionary dict_;
 
-        //- Active flag
-        bool active_;
-
         //- Switch to send output to Info as well as to file
         Switch log_;
 
@@ -155,9 +152,6 @@ public:
             //- Return the reference to the construction dictionary
             inline const dictionary& dict() const;
 
-            //- Return the active flag
-            inline bool active() const;
-
             //- Return the switch to send output to Info as well as to file
             inline const Switch& log() const;
 
diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.H
index 55651a3539ed50705d18fe6a75cf10f4425e9d59..aac9ba419fbf3aef5ea5f35dc2d2115eaaeba4a8 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,12 +46,6 @@ inline const Foam::dictionary& Foam::fieldValue::dict() const
 }
 
 
-inline bool Foam::fieldValue::active() const
-{
-    return active_;
-}
-
-
 inline const Foam::Switch& Foam::fieldValue::log() const
 {
     return log_;
diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C
index 32fd6ff41dbc27f7203fdd9f7d5f92407d8dcf9e..c8c8186279102d649abc6e6712156fa67ecf6710 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C
@@ -33,51 +33,42 @@ License
 
 namespace Foam
 {
-    namespace fieldValues
-    {
-        defineTypeNameAndDebug(fieldValueDelta, 0);
-    }
-
-    template<>
-    const char*
-    NamedEnum<fieldValues::fieldValueDelta::operationType, 5>::names[] =
-    {
-        "add",
-        "subtract",
-        "min",
-        "max",
-        "average"
-    };
-
-    const NamedEnum<fieldValues::fieldValueDelta::operationType, 5>
-        fieldValues::fieldValueDelta::operationTypeNames_;
+namespace functionObjects
+{
+namespace fieldValues
+{
+    defineTypeNameAndDebug(fieldValueDelta, 0);
+}
+}
 }
 
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::fieldValueDelta::operationType,
+    5
+>::names[] =
+{
+    "add",
+    "subtract",
+    "min",
+    "max",
+    "average"
+};
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+const Foam::NamedEnum
+<
+    Foam::functionObjects::fieldValues::fieldValueDelta::operationType,
+    5
+> Foam::functionObjects::fieldValues::fieldValueDelta::operationTypeNames_;
 
-Foam::fieldValues::fieldValueDelta::fieldValueDelta
-(
-    const word& name,
-    const objectRegistry& obr,
-    const dictionary& dict,
-    const bool loadFromFiles
-)
-:
-    functionObjectFiles(obr, name, typeName),
-    name_(name),
-    obr_(obr),
-    loadFromFiles_(loadFromFiles),
-    log_(true),
-    operation_(opSubtract),
-    source1Ptr_(NULL),
-    source2Ptr_(NULL)
-{
-    read(dict);
-}
 
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
-void Foam::fieldValues::fieldValueDelta::writeFileHeader(const label i)
+void Foam::functionObjects::fieldValues::fieldValueDelta::writeFileHeader
+(
+    const label i
+)
 {
     const wordList& fields1 = source1Ptr_->fields();
     const wordList& fields2 = source2Ptr_->fields();
@@ -108,15 +99,54 @@ void Foam::fieldValues::fieldValueDelta::writeFileHeader(const label i)
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::functionObjects::fieldValues::fieldValueDelta::fieldValueDelta
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+:
+    functionObjectFiles(obr, name, typeName),
+    name_(name),
+    obr_(obr),
+    loadFromFiles_(loadFromFiles),
+    log_(true),
+    operation_(opSubtract),
+    source1Ptr_(NULL),
+    source2Ptr_(NULL)
+{
+    read(dict);
+}
+
+
+bool Foam::functionObjects::fieldValues::fieldValueDelta::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fieldValues::fieldValueDelta::~fieldValueDelta()
+Foam::functionObjects::fieldValues::fieldValueDelta::~fieldValueDelta()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::fieldValues::fieldValueDelta::read(const dictionary& dict)
+void Foam::functionObjects::fieldValues::fieldValueDelta::read
+(
+    const dictionary& dict
+)
 {
     log_ = dict.lookupOrDefault<Switch>("log", true);
     source1Ptr_.reset
@@ -146,7 +176,7 @@ void Foam::fieldValues::fieldValueDelta::read(const dictionary& dict)
 }
 
 
-void Foam::fieldValues::fieldValueDelta::write()
+void Foam::functionObjects::fieldValues::fieldValueDelta::write()
 {
     functionObjectFiles::write();
 
@@ -186,34 +216,30 @@ void Foam::fieldValues::fieldValueDelta::write()
 }
 
 
-void Foam::fieldValues::fieldValueDelta::execute()
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldValues::fieldValueDelta::execute()
+{}
 
 
-void Foam::fieldValues::fieldValueDelta::end()
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldValues::fieldValueDelta::end()
+{}
 
 
-void Foam::fieldValues::fieldValueDelta::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldValues::fieldValueDelta::timeSet()
+{}
 
 
-void Foam::fieldValues::fieldValueDelta::updateMesh(const mapPolyMesh&)
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldValues::fieldValueDelta::updateMesh
+(
+    const mapPolyMesh&
+)
+{}
 
 
-void Foam::fieldValues::fieldValueDelta::movePoints(const polyMesh&)
-{
-    // Do nothing
-}
+void Foam::functionObjects::fieldValues::fieldValueDelta::movePoints
+(
+    const polyMesh&
+)
+{}
 
 
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H
index 17c68eab75c3f209b823534028ea5f1c17bbfac8..cd68f47746603acb4f03877032d0c225d7438a2a 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fieldValues::fieldValueDelta
+    Foam::functionObjects::fieldValues::fieldValueDelta
 
 Group
     grpFieldFunctionObjects
@@ -84,7 +84,8 @@ SourceFiles
 
 namespace Foam
 {
-
+namespace functionObjects
+{
 namespace fieldValues
 {
 
@@ -162,14 +163,26 @@ public:
     TypeName("fieldValueDelta");
 
 
-    //- Construct from components
-    fieldValueDelta
-    (
-        const word& name,
-        const objectRegistry& obr,
-        const dictionary& dict,
-        const bool loadFromFiles = false
-    );
+    // Constructors
+
+        //- Construct from components
+        fieldValueDelta
+        (
+            const word& name,
+            const objectRegistry& obr,
+            const dictionary& dict,
+            const bool loadFromFiles = false
+        );
+
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
 
 
     //- Destructor
@@ -206,6 +219,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace fieldValues
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H
index 120d5991bcb3845f8a13f2a66e9b107e9a614ac2..3a54e034adcdc11adb6db6ebe2f561ab1c0aeca6 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,8 +43,10 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<fieldValues::fieldValueDelta>
-        fieldValueDeltaFunctionObject;
+    typedef OutputFilterFunctionObject
+    <
+        functionObjects::fieldValues::fieldValueDelta
+    > fieldValueDeltaFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C
index 4cc4c9aea54b8503d4ce42326b4236aeed8eb88c..075e26f52ab1eb59e238d453f6b3e161b59f108c 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C
@@ -30,7 +30,7 @@ License
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-Type Foam::fieldValues::fieldValueDelta::applyOperation
+Type Foam::functionObjects::fieldValues::fieldValueDelta::applyOperation
 (
     const Type& value1,
     const Type& value2
@@ -79,7 +79,10 @@ Type Foam::fieldValues::fieldValueDelta::applyOperation
 
 
 template<class Type>
-void Foam::fieldValues::fieldValueDelta::processFields(bool& found)
+void Foam::functionObjects::fieldValues::fieldValueDelta::processFields
+(
+    bool& found
+)
 {
     typedef GeometricField<Type, fvPatchField, volMesh> vf;
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> sf;
diff --git a/src/postProcessing/functionObjects/field/histogram/histogram.C b/src/postProcessing/functionObjects/field/histogram/histogram.C
index 38c0f59c151d4e90a298bce009a55e8c26dfb1cc..68fef256388872e667fd6122ea34c231eeafd469 100644
--- a/src/postProcessing/functionObjects/field/histogram/histogram.C
+++ b/src/postProcessing/functionObjects/field/histogram/histogram.C
@@ -75,26 +75,13 @@ Foam::functionObjects::histogram::histogram
 )
 :
     functionObjectFile(obr, typeName),
-    name_(name),
-    active_(true)
+    name_(name)
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
+    read(dict);
 }
 
 
-Foam::autoPtr<Foam::functionObjects::histogram>
-Foam::functionObjects::histogram::New
+bool Foam::functionObjects::histogram::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -102,17 +89,8 @@ Foam::functionObjects::histogram::New
     const bool loadFromFiles
 )
 {
-    if (isA<fvMesh>(obr))
-    {
-        return autoPtr<histogram>
-        (
-            new histogram(name, obr, dict, loadFromFiles)
-        );
-    }
-    else
-    {
-        return autoPtr<histogram>();
-    }
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
@@ -126,16 +104,13 @@ Foam::functionObjects::histogram::~histogram()
 
 void Foam::functionObjects::histogram::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        dict.lookup("field") >> fieldName_;
-        dict.lookup("max") >> max_;
-        min_ = dict.lookupOrDefault<scalar>("min", 0);
-        dict.lookup("nBins") >> nBins_;
+    dict.lookup("field") >> fieldName_;
+    dict.lookup("max") >> max_;
+    min_ = dict.lookupOrDefault<scalar>("min", 0);
+    dict.lookup("nBins") >> nBins_;
 
-        word format(dict.lookup("setFormat"));
-        formatterPtr_ = writer<scalar>::New(format);
-    }
+    word format(dict.lookup("setFormat"));
+    formatterPtr_ = writer<scalar>::New(format);
 }
 
 
@@ -153,87 +128,84 @@ void Foam::functionObjects::histogram::timeSet()
 
 void Foam::functionObjects::histogram::write()
 {
-    if (active_)
-    {
-        Info<< type() << " " << name_ << " output:" << nl;
+    Info<< type() << " " << name_ << " output:" << nl;
 
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        autoPtr<volScalarField> fieldPtr;
-        if (obr_.foundObject<volScalarField>(fieldName_))
-        {
-            Info<< "    Looking up field " << fieldName_ << endl;
-        }
-        else
-        {
-            Info<< "    Reading field " << fieldName_ << endl;
-            fieldPtr.reset
+    autoPtr<volScalarField> fieldPtr;
+    if (obr_.foundObject<volScalarField>(fieldName_))
+    {
+        Info<< "    Looking up field " << fieldName_ << endl;
+    }
+    else
+    {
+        Info<< "    Reading field " << fieldName_ << endl;
+        fieldPtr.reset
+        (
+            new volScalarField
             (
-                new volScalarField
+                IOobject
                 (
-                    IOobject
-                    (
-                        fieldName_,
-                        mesh.time().timeName(),
-                        mesh,
-                        IOobject::MUST_READ,
-                        IOobject::NO_WRITE
-                    ),
-                    mesh
-                )
-            );
-        }
-
-        const volScalarField& field =
-        (
-             fieldPtr.valid()
-           ? fieldPtr()
-           : obr_.lookupObject<volScalarField>(fieldName_)
+                    fieldName_,
+                    mesh.time().timeName(),
+                    mesh,
+                    IOobject::MUST_READ,
+                    IOobject::NO_WRITE
+                ),
+                mesh
+            )
         );
+    }
 
-        // Calculate the mid-points of bins for the graph axis
-        pointField xBin(nBins_);
-        const scalar delta = (max_- min_)/nBins_;
+    const volScalarField& field =
+    (
+         fieldPtr.valid()
+       ? fieldPtr()
+       : obr_.lookupObject<volScalarField>(fieldName_)
+    );
 
-        scalar x = min_ + 0.5*delta;
-        forAll(xBin, i)
-        {
-            xBin[i] = point(x, 0, 0);
-            x += delta;
-        }
+    // Calculate the mid-points of bins for the graph axis
+    pointField xBin(nBins_);
+    const scalar delta = (max_- min_)/nBins_;
 
-        scalarField volFrac(nBins_, 0);
-        const scalarField& V = mesh.V();
+    scalar x = min_ + 0.5*delta;
+    forAll(xBin, i)
+    {
+        xBin[i] = point(x, 0, 0);
+        x += delta;
+    }
+
+    scalarField volFrac(nBins_, 0);
+    const scalarField& V = mesh.V();
 
-        forAll(field, celli)
+    forAll(field, celli)
+    {
+        const label bini = (field[celli] - min_)/delta;
+        if (bini >= 0 && bini < nBins_)
         {
-            const label bini = (field[celli] - min_)/delta;
-            if (bini >= 0 && bini < nBins_)
-            {
-                volFrac[bini] += V[celli];
-            }
+            volFrac[bini] += V[celli];
         }
+    }
 
-        Pstream::listCombineGather(volFrac, plusEqOp<scalar>());
+    Pstream::listCombineGather(volFrac, plusEqOp<scalar>());
 
-        if (Pstream::master())
+    if (Pstream::master())
+    {
+        const scalar sumVol = sum(volFrac);
+
+        if (sumVol > SMALL)
         {
-            const scalar sumVol = sum(volFrac);
+            volFrac /= sumVol;
 
-            if (sumVol > SMALL)
-            {
-                volFrac /= sumVol;
+            const coordSet coords
+            (
+                "Volume_Fraction",
+                "x",
+                xBin,
+                mag(xBin)
+            );
 
-                const coordSet coords
-                (
-                    "Volume_Fraction",
-                    "x",
-                    xBin,
-                    mag(xBin)
-                );
-
-                writeGraph(coords, field.name(), volFrac);
-            }
+            writeGraph(coords, field.name(), volFrac);
         }
     }
 }
diff --git a/src/postProcessing/functionObjects/field/histogram/histogram.H b/src/postProcessing/functionObjects/field/histogram/histogram.H
index c39552d8f66b28a9b0b8d892231683d1c60f867a..db23fc1bce988f31b5f4462be6cce04c17b66c4c 100644
--- a/src/postProcessing/functionObjects/field/histogram/histogram.H
+++ b/src/postProcessing/functionObjects/field/histogram/histogram.H
@@ -99,9 +99,6 @@ class histogram
         //- Name of this histogram
         word name_;
 
-        //- on/off switch
-        bool active_;
-
         //- Name of field
         word fieldName_;
 
@@ -152,9 +149,9 @@ public:
             const bool loadFromFiles = false
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<histogram> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C
index d3cea4570933f01bc61a05743ac3c8e5392ab60d..e9d78673111b8918c4d8f96621a1ccccd410caff 100644
--- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C
+++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C
@@ -32,14 +32,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(nearWallFields, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::nearWallFields::calcAddressing()
+void Foam::functionObjects::nearWallFields::calcAddressing()
 {
     const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
@@ -218,7 +221,7 @@ void Foam::nearWallFields::calcAddressing()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::nearWallFields::nearWallFields
+Foam::functionObjects::nearWallFields::nearWallFields
 (
     const word& name,
     const objectRegistry& obr,
@@ -228,28 +231,28 @@ Foam::nearWallFields::nearWallFields
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldSet_()
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
-    }
+    read(dict);
+}
+
 
+bool Foam::functionObjects::nearWallFields::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::nearWallFields::~nearWallFields()
+Foam::functionObjects::nearWallFields::~nearWallFields()
 {
     if (debug)
     {
@@ -260,157 +263,142 @@ Foam::nearWallFields::~nearWallFields()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::nearWallFields::read(const dictionary& dict)
+void Foam::functionObjects::nearWallFields::read(const dictionary& dict)
 {
     if (debug)
     {
         InfoInFunction << endl;
     }
 
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        dict.lookup("fields") >> fieldSet_;
-        patchSet_ =
-            mesh.boundaryMesh().patchSet(wordReList(dict.lookup("patches")));
-        distance_ = readScalar(dict.lookup("distance"));
+    dict.lookup("fields") >> fieldSet_;
+    patchSet_ =
+        mesh.boundaryMesh().patchSet(wordReList(dict.lookup("patches")));
+    distance_ = readScalar(dict.lookup("distance"));
 
 
-        // Clear out any previously loaded fields
-        vsf_.clear();
-        vvf_.clear();
-        vSpheretf_.clear();
-        vSymmtf_.clear();
-        vtf_.clear();
-        fieldMap_.clear();
-        reverseFieldMap_.clear();
+    // Clear out any previously loaded fields
+    vsf_.clear();
+    vvf_.clear();
+    vSpheretf_.clear();
+    vSymmtf_.clear();
+    vtf_.clear();
+    fieldMap_.clear();
+    reverseFieldMap_.clear();
 
 
-        // Generate fields with mappedField boundary condition
+    // Generate fields with mappedField boundary condition
 
-        // Convert field to map
-        fieldMap_.resize(2*fieldSet_.size());
-        reverseFieldMap_.resize(2*fieldSet_.size());
-        forAll(fieldSet_, setI)
-        {
-            const word& fldName = fieldSet_[setI].first();
-            const word& sampleFldName = fieldSet_[setI].second();
+    // Convert field to map
+    fieldMap_.resize(2*fieldSet_.size());
+    reverseFieldMap_.resize(2*fieldSet_.size());
+    forAll(fieldSet_, setI)
+    {
+        const word& fldName = fieldSet_[setI].first();
+        const word& sampleFldName = fieldSet_[setI].second();
 
-            fieldMap_.insert(fldName, sampleFldName);
-            reverseFieldMap_.insert(sampleFldName, fldName);
-        }
+        fieldMap_.insert(fldName, sampleFldName);
+        reverseFieldMap_.insert(sampleFldName, fldName);
+    }
 
-        Info<< type() << " " << name_ << ": Sampling " << fieldMap_.size()
-            << " fields" << endl;
+    Info<< type() << " " << name_ << ": Sampling " << fieldMap_.size()
+        << " fields" << endl;
 
-        // Do analysis
-        calcAddressing();
-    }
+    // Do analysis
+    calcAddressing();
 }
 
 
-void Foam::nearWallFields::execute()
+void Foam::functionObjects::nearWallFields::execute()
 {
     if (debug)
     {
         InfoInFunction << endl;
     }
 
-
-    if (active_)
+    if
+    (
+        fieldMap_.size()
+     && vsf_.empty()
+     && vvf_.empty()
+     && vSpheretf_.empty()
+     && vSymmtf_.empty()
+     && vtf_.empty()
+    )
     {
-        if
-        (
-            fieldMap_.size()
-         && vsf_.empty()
-         && vvf_.empty()
-         && vSpheretf_.empty()
-         && vSymmtf_.empty()
-         && vtf_.empty()
-        )
-        {
-            Info<< type() << " " << name_ << ": Creating " << fieldMap_.size()
-                << " fields" << endl;
+        Info<< type() << " " << name_ << ": Creating " << fieldMap_.size()
+            << " fields" << endl;
 
-            createFields(vsf_);
-            createFields(vvf_);
-            createFields(vSpheretf_);
-            createFields(vSymmtf_);
-            createFields(vtf_);
+        createFields(vsf_);
+        createFields(vvf_);
+        createFields(vSpheretf_);
+        createFields(vSymmtf_);
+        createFields(vtf_);
 
-            Info<< endl;
-        }
+        Info<< endl;
+    }
 
-        Info<< type() << " " << name_ << " output:" << nl;
+    Info<< type() << " " << name_ << " output:" << nl;
 
-        Info<< "    Sampling fields to " << obr_.time().timeName()
-            << endl;
+    Info<< "    Sampling fields to " << obr_.time().timeName()
+        << endl;
 
-        sampleFields(vsf_);
-        sampleFields(vvf_);
-        sampleFields(vSpheretf_);
-        sampleFields(vSymmtf_);
-        sampleFields(vtf_);
-    }
+    sampleFields(vsf_);
+    sampleFields(vvf_);
+    sampleFields(vSpheretf_);
+    sampleFields(vSymmtf_);
+    sampleFields(vtf_);
 }
 
 
-void Foam::nearWallFields::end()
+void Foam::functionObjects::nearWallFields::end()
 {
     if (debug)
     {
         InfoInFunction << endl;
     }
 
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::nearWallFields::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::nearWallFields::timeSet()
+{}
 
 
-void Foam::nearWallFields::write()
+void Foam::functionObjects::nearWallFields::write()
 {
     if (debug)
     {
         InfoInFunction << endl;
     }
 
-    if (active_)
-    {
-        Info<< "    Writing sampled fields to " << obr_.time().timeName()
-            << endl;
-
-        forAll(vsf_, i)
-        {
-            vsf_[i].write();
-        }
-        forAll(vvf_, i)
-        {
-            vvf_[i].write();
-        }
-        forAll(vSpheretf_, i)
-        {
-            vSpheretf_[i].write();
-        }
-        forAll(vSymmtf_, i)
-        {
-            vSymmtf_[i].write();
-        }
-        forAll(vtf_, i)
-        {
-            vtf_[i].write();
-        }
+    Info<< "    Writing sampled fields to " << obr_.time().timeName()
+        << endl;
 
-        Info<< endl;
+    forAll(vsf_, i)
+    {
+        vsf_[i].write();
+    }
+    forAll(vvf_, i)
+    {
+        vvf_[i].write();
     }
+    forAll(vSpheretf_, i)
+    {
+        vSpheretf_[i].write();
+    }
+    forAll(vSymmtf_, i)
+    {
+        vSymmtf_[i].write();
+    }
+    forAll(vtf_, i)
+    {
+        vtf_[i].write();
+    }
+
+    Info<< endl;
 }
 
 
diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H
index 3862c6426abb341308b94ca6df74dbe8eb0a0c33..a063ebf15b811d57c3f1cd3a135fc9c1187a057e 100644
--- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H
+++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::nearWallFields
+    Foam::functionObjects::nearWallFields
 
 Group
     grpFieldFunctionObjects
@@ -88,6 +88,9 @@ class objectRegistry;
 class dictionary;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                        Class nearWallFields Declaration
 \*---------------------------------------------------------------------------*/
@@ -103,9 +106,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         // Read from dictionary
 
             //- Fields to process
@@ -197,6 +197,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~nearWallFields();
@@ -237,6 +247,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.H b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.H
index b27540072744cc6a009982d086e5be23f1f981b2..16146c153cf5dae4d5233b32a47886569f028c50 100644
--- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<nearWallFields>
+    typedef OutputFilterFunctionObject<functionObjects::nearWallFields>
         nearWallFieldsFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C
index 8045391e3f9cf2ee0ccf88e9f9a56b528344894a..dcb9b325eb92a5d9b2bf342bdc28afb27e4dfcca 100644
--- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C
+++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C
@@ -28,7 +28,7 @@ License
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::nearWallFields::createFields
+void Foam::functionObjects::nearWallFields::createFields
 (
     PtrList<GeometricField<Type, fvPatchField, volMesh>>& sflds
 ) const
@@ -72,7 +72,7 @@ void Foam::nearWallFields::createFields
 
 
 template<class Type>
-void Foam::nearWallFields::sampleBoundaryField
+void Foam::functionObjects::nearWallFields::sampleBoundaryField
 (
     const interpolationCellPoint<Type>& interpolator,
     GeometricField<Type, fvPatchField, volMesh>& fld
@@ -122,7 +122,7 @@ void Foam::nearWallFields::sampleBoundaryField
 
 
 template<class Type>
-void Foam::nearWallFields::sampleFields
+void Foam::functionObjects::nearWallFields::sampleFields
 (
     PtrList<GeometricField<Type, fvPatchField, volMesh>>& sflds
 ) const
diff --git a/src/postProcessing/functionObjects/field/processorField/processorField.C b/src/postProcessing/functionObjects/field/processorField/processorField.C
index f15f3b6a8fb75d8c04eca557fa21265dfc3cf582..aef6d4ba8e626ee75c64485cfe747c63410b6109 100644
--- a/src/postProcessing/functionObjects/field/processorField/processorField.C
+++ b/src/postProcessing/functionObjects/field/processorField/processorField.C
@@ -31,13 +31,16 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(processorField, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(processorField, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::processorField::processorField
+Foam::functionObjects::processorField::processorField
 (
     const word& name,
     const objectRegistry& obr,
@@ -46,96 +49,85 @@ Foam::processorField::processorField
 )
 :
     name_(name),
-    obr_(obr),
-    active_(true)
+    obr_(obr)
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
+    read(dict);
 
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volScalarField* procFieldPtr
+    volScalarField* procFieldPtr
+    (
+        new volScalarField
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    "processorID",
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                "processorID",
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("0", dimless, 0.0)
-            )
-        );
-
-        mesh.objectRegistry::store(procFieldPtr);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
-    }
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("0", dimless, 0.0)
+        )
+    );
+
+    mesh.objectRegistry::store(procFieldPtr);
+}
+
+
+bool Foam::functionObjects::processorField::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::processorField::~processorField()
+Foam::functionObjects::processorField::~processorField()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::processorField::read(const dictionary& dict)
-{
-    // do nothing
-}
+void Foam::functionObjects::processorField::read(const dictionary& dict)
+{}
 
 
-void Foam::processorField::execute()
+void Foam::functionObjects::processorField::execute()
 {
-    if (active_)
-    {
-        const volScalarField& procField =
-            obr_.lookupObject<volScalarField>("processorID");
-
-        const_cast<volScalarField&>(procField) ==
-            dimensionedScalar("proci", dimless, Pstream::myProcNo());
-    }
+    const volScalarField& procField =
+        obr_.lookupObject<volScalarField>("processorID");
+
+    const_cast<volScalarField&>(procField) ==
+        dimensionedScalar("proci", dimless, Pstream::myProcNo());
 }
 
 
-void Foam::processorField::end()
+void Foam::functionObjects::processorField::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::processorField::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::processorField::timeSet()
+{}
 
 
-void Foam::processorField::write()
+void Foam::functionObjects::processorField::write()
 {
-    if (active_)
-    {
-        const volScalarField& procField =
-            obr_.lookupObject<volScalarField>("processorID");
+    const volScalarField& procField =
+        obr_.lookupObject<volScalarField>("processorID");
 
-        procField.write();
-    }
+    procField.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/field/processorField/processorField.H b/src/postProcessing/functionObjects/field/processorField/processorField.H
index 88e7ff383d0837b822e18ead5f86b3299072b4c2..aeec8f8117266b03d5533a4e88652f906c6f068f 100644
--- a/src/postProcessing/functionObjects/field/processorField/processorField.H
+++ b/src/postProcessing/functionObjects/field/processorField/processorField.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::processorField
+    Foam::functionObjects::processorField
 
 Group
     grpFieldFunctionObjects
@@ -76,6 +76,9 @@ class objectRegistry;
 class dictionary;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                        Class processorField Declaration
 \*---------------------------------------------------------------------------*/
@@ -92,9 +95,6 @@ protected:
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
 
 private:
 
@@ -125,6 +125,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~processorField();
@@ -165,6 +175,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.H b/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.H
index 29b9b29c5b732a9daa4bce0774dbeacc0b81b5b8..98d6b5f090401caa9efba7ddf7cd4afe12ea7884 100644
--- a/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<processorField>
+    typedef OutputFilterFunctionObject<functionObjects::processorField>
         processorFieldFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/field/readFields/readFields.C b/src/postProcessing/functionObjects/field/readFields/readFields.C
index 8af1146dce7d4159124f3d1c4d8dd5329baf3a3e..0f792c7265460ba192dda382f2ae01aba6ed3439 100644
--- a/src/postProcessing/functionObjects/field/readFields/readFields.C
+++ b/src/postProcessing/functionObjects/field/readFields/readFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,13 +30,16 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(readFields, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(readFields, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::readFields::readFields
+Foam::functionObjects::readFields::readFields
 (
     const word& name,
     const objectRegistry& obr,
@@ -46,92 +49,80 @@ Foam::readFields::readFields
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldSet_()
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
-    }
+    read(dict);
+}
+
+
+bool Foam::functionObjects::readFields::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::readFields::~readFields()
+Foam::functionObjects::readFields::~readFields()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::readFields::read(const dictionary& dict)
+void Foam::functionObjects::readFields::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        dict.lookup("fields") >> fieldSet_;
-    }
+    dict.lookup("fields") >> fieldSet_;
 }
 
 
-void Foam::readFields::execute()
+void Foam::functionObjects::readFields::execute()
 {
-    if (active_)
+    // Clear out any previously loaded fields
+    vsf_.clear();
+    vvf_.clear();
+    vSpheretf_.clear();
+    vSymmtf_.clear();
+    vtf_.clear();
+
+    ssf_.clear();
+    svf_.clear();
+    sSpheretf_.clear();
+    sSymmtf_.clear();
+    stf_.clear();
+
+    forAll(fieldSet_, fieldI)
     {
-        // Clear out any previously loaded fields
-        vsf_.clear();
-        vvf_.clear();
-        vSpheretf_.clear();
-        vSymmtf_.clear();
-        vtf_.clear();
-
-        ssf_.clear();
-        svf_.clear();
-        sSpheretf_.clear();
-        sSymmtf_.clear();
-        stf_.clear();
-
-        forAll(fieldSet_, fieldI)
-        {
-            const word& fieldName = fieldSet_[fieldI];
-
-            // If necessary load field
-            loadField<scalar>(fieldName, vsf_, ssf_);
-            loadField<vector>(fieldName, vvf_, svf_);
-            loadField<sphericalTensor>(fieldName, vSpheretf_, sSpheretf_);
-            loadField<symmTensor>(fieldName, vSymmtf_, sSymmtf_);
-            loadField<tensor>(fieldName, vtf_, stf_);
-        }
+        const word& fieldName = fieldSet_[fieldI];
+
+        // If necessary load field
+        loadField<scalar>(fieldName, vsf_, ssf_);
+        loadField<vector>(fieldName, vvf_, svf_);
+        loadField<sphericalTensor>(fieldName, vSpheretf_, sSpheretf_);
+        loadField<symmTensor>(fieldName, vSymmtf_, sSymmtf_);
+        loadField<tensor>(fieldName, vtf_, stf_);
     }
 }
 
 
-void Foam::readFields::end()
+void Foam::functionObjects::readFields::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::readFields::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::readFields::timeSet()
+{}
 
 
-void Foam::readFields::write()
-{
-    // Do nothing
-}
+void Foam::functionObjects::readFields::write()
+{}
 
 
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/readFields/readFields.H b/src/postProcessing/functionObjects/field/readFields/readFields.H
index 7706d327bd0a560ad84a206bd15d5005218f6881..c4500f4f4ab4647d2f2fc934ddf6529a1aebaf47 100644
--- a/src/postProcessing/functionObjects/field/readFields/readFields.H
+++ b/src/postProcessing/functionObjects/field/readFields/readFields.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::readFields
+    Foam::functionObjects::readFields
 
 Group
     grpFieldFunctionObjects
@@ -81,6 +81,9 @@ class objectRegistry;
 class dictionary;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                          Class readFields Declaration
 \*---------------------------------------------------------------------------*/
@@ -96,9 +99,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Fields to load
         wordList fieldSet_;
 
@@ -156,6 +156,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~readFields();
@@ -196,6 +206,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.H b/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.H
index 82f141fdfa35053ce4580ad84f8d9c65e863b02a..0256ca3d50b2a19f650b6041974e6f4f6964e479 100644
--- a/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<readFields>
+    typedef OutputFilterFunctionObject<functionObjects::readFields>
         readFieldsFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C b/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C
index be8ab7a6d2bc57447aa476fab904f994b9e4512d..37631001c9b012faec0d99d0493723c92d634bfa 100644
--- a/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C
+++ b/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C
@@ -31,7 +31,7 @@ License
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::readFields::loadField
+void Foam::functionObjects::readFields::loadField
 (
     const word& fieldName,
     PtrList<GeometricField<Type, fvPatchField, volMesh>>& vflds,
diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
index 523135ee69160c0dcedca450a897319805bffcb2..418afc3ecf7e7ce46041a9a3a1d1fa63823da26f 100644
--- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
+++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
@@ -34,7 +34,10 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(regionSizeDistribution, 0);
+    namespace functionObjects
+    {
+        defineTypeNameAndDebug(regionSizeDistribution, 0);
+    }
 
     //- Plus op for FixedList<scalar>
     template<class T, unsigned Size>
@@ -58,7 +61,7 @@ namespace Foam
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::regionSizeDistribution::writeGraph
+void Foam::functionObjects::regionSizeDistribution::writeGraph
 (
     const coordSet& coords,
     const word& valueName,
@@ -81,7 +84,7 @@ void Foam::regionSizeDistribution::writeGraph
 }
 
 
-void Foam::regionSizeDistribution::writeAlphaFields
+void Foam::functionObjects::regionSizeDistribution::writeAlphaFields
 (
     const regionSplit& regions,
     const Map<label>& patchRegions,
@@ -163,7 +166,8 @@ void Foam::regionSizeDistribution::writeAlphaFields
 }
 
 
-Foam::Map<Foam::label> Foam::regionSizeDistribution::findPatchRegions
+Foam::Map<Foam::label>
+Foam::functionObjects::regionSizeDistribution::findPatchRegions
 (
     const polyMesh& mesh,
     const regionSplit& regions
@@ -209,7 +213,8 @@ Foam::Map<Foam::label> Foam::regionSizeDistribution::findPatchRegions
 }
 
 
-Foam::tmp<Foam::scalarField> Foam::regionSizeDistribution::divide
+Foam::tmp<Foam::scalarField>
+Foam::functionObjects::regionSizeDistribution::divide
 (
     const scalarField& num,
     const scalarField& denom
@@ -233,7 +238,7 @@ Foam::tmp<Foam::scalarField> Foam::regionSizeDistribution::divide
 }
 
 
-void Foam::regionSizeDistribution::writeGraphs
+void Foam::functionObjects::regionSizeDistribution::writeGraphs
 (
     const word& fieldName,              // name of field
     const labelList& indices,           // index of bin for each region
@@ -274,7 +279,7 @@ void Foam::regionSizeDistribution::writeGraphs
 }
 
 
-void Foam::regionSizeDistribution::writeGraphs
+void Foam::functionObjects::regionSizeDistribution::writeGraphs
 (
     const word& fieldName,              // name of field
     const scalarField& cellField,       // per cell field data
@@ -314,7 +319,7 @@ void Foam::regionSizeDistribution::writeGraphs
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::regionSizeDistribution::regionSizeDistribution
+Foam::functionObjects::regionSizeDistribution::regionSizeDistribution
 (
     const word& name,
     const objectRegistry& obr,
@@ -325,537 +330,526 @@ Foam::regionSizeDistribution::regionSizeDistribution
     functionObjectFiles(obr, name, typeName),
     name_(name),
     obr_(obr),
-    active_(true),
     alphaName_(dict.lookup("field")),
     patchNames_(dict.lookup("patches"))
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
+    read(dict);
+}
+
+
+bool Foam::functionObjects::regionSizeDistribution::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::regionSizeDistribution::~regionSizeDistribution()
+Foam::functionObjects::regionSizeDistribution::~regionSizeDistribution()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::regionSizeDistribution::read(const dictionary& dict)
+void Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict)
 {
-    if (active_)
+    dict.lookup("field") >> alphaName_;
+    dict.lookup("patches") >> patchNames_;
+    dict.lookup("threshold") >> threshold_;
+    dict.lookup("maxDiameter") >> maxDiam_;
+    minDiam_ = 0.0;
+    dict.readIfPresent("minDiameter", minDiam_);
+    dict.lookup("nBins") >> nBins_;
+    dict.lookup("fields") >> fields_;
+
+    word format(dict.lookup("setFormat"));
+    formatterPtr_ = writer<scalar>::New(format);
+
+    if (dict.found("coordinateSystem"))
     {
-        dict.lookup("field") >> alphaName_;
-        dict.lookup("patches") >> patchNames_;
-        dict.lookup("threshold") >> threshold_;
-        dict.lookup("maxDiameter") >> maxDiam_;
-        minDiam_ = 0.0;
-        dict.readIfPresent("minDiameter", minDiam_);
-        dict.lookup("nBins") >> nBins_;
-        dict.lookup("fields") >> fields_;
-
-        word format(dict.lookup("setFormat"));
-        formatterPtr_ = writer<scalar>::New(format);
-
-        if (dict.found("coordinateSystem"))
-        {
-            coordSysPtr_.reset(new coordinateSystem(obr_, dict));
+        coordSysPtr_.reset(new coordinateSystem(obr_, dict));
 
-            Info<< "Transforming all vectorFields with coordinate system "
-                << coordSysPtr_().name() << endl;
-        }
+        Info<< "Transforming all vectorFields with coordinate system "
+            << coordSysPtr_().name() << endl;
     }
 }
 
 
-void Foam::regionSizeDistribution::execute()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::regionSizeDistribution::execute()
+{}
 
 
-void Foam::regionSizeDistribution::end()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::regionSizeDistribution::end()
+{}
 
 
-void Foam::regionSizeDistribution::timeSet()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::regionSizeDistribution::timeSet()
+{}
 
 
-void Foam::regionSizeDistribution::write()
+void Foam::functionObjects::regionSizeDistribution::write()
 {
-    if (active_)
-    {
-        Info<< type() << " " << name_ << " output:" << nl;
+    Info<< type() << " " << name_ << " output:" << nl;
 
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        autoPtr<volScalarField> alphaPtr;
-        if (obr_.foundObject<volScalarField>(alphaName_))
-        {
-            Info<< "    Looking up field " << alphaName_ << endl;
-        }
-        else
-        {
-            Info<< "    Reading field " << alphaName_ << endl;
-            alphaPtr.reset
+    autoPtr<volScalarField> alphaPtr;
+    if (obr_.foundObject<volScalarField>(alphaName_))
+    {
+        Info<< "    Looking up field " << alphaName_ << endl;
+    }
+    else
+    {
+        Info<< "    Reading field " << alphaName_ << endl;
+        alphaPtr.reset
+        (
+            new volScalarField
             (
-                new volScalarField
+                IOobject
                 (
-                    IOobject
-                    (
-                        alphaName_,
-                        mesh.time().timeName(),
-                        mesh,
-                        IOobject::MUST_READ,
-                        IOobject::NO_WRITE
-                    ),
-                    mesh
-                )
-            );
-        }
+                    alphaName_,
+                    mesh.time().timeName(),
+                    mesh,
+                    IOobject::MUST_READ,
+                    IOobject::NO_WRITE
+                ),
+                mesh
+            )
+        );
+    }
 
 
-        const volScalarField& alpha =
-        (
-             alphaPtr.valid()
-           ? alphaPtr()
-           : obr_.lookupObject<volScalarField>(alphaName_)
-        );
+    const volScalarField& alpha =
+    (
+         alphaPtr.valid()
+       ? alphaPtr()
+       : obr_.lookupObject<volScalarField>(alphaName_)
+    );
 
-        Info<< "    Volume of alpha          = "
-            << fvc::domainIntegrate(alpha).value()
-            << endl;
+    Info<< "    Volume of alpha          = "
+        << fvc::domainIntegrate(alpha).value()
+        << endl;
 
-        const scalar meshVol = gSum(mesh.V());
-        const scalar maxDropletVol = 1.0/6.0*pow(maxDiam_, 3);
-        const scalar delta = (maxDiam_-minDiam_)/nBins_;
+    const scalar meshVol = gSum(mesh.V());
+    const scalar maxDropletVol = 1.0/6.0*pow(maxDiam_, 3);
+    const scalar delta = (maxDiam_-minDiam_)/nBins_;
 
-        Info<< "    Mesh volume              = " << meshVol << endl;
-        Info<< "    Maximum droplet diameter = " << maxDiam_ << endl;
-        Info<< "    Maximum droplet volume   = " << maxDropletVol << endl;
+    Info<< "    Mesh volume              = " << meshVol << endl;
+    Info<< "    Maximum droplet diameter = " << maxDiam_ << endl;
+    Info<< "    Maximum droplet volume   = " << maxDropletVol << endl;
 
 
-        // Determine blocked faces
-        boolList blockedFace(mesh.nFaces(), false);
-        label nBlocked = 0;
+    // Determine blocked faces
+    boolList blockedFace(mesh.nFaces(), false);
+    label nBlocked = 0;
 
+    {
+        for (label facei = 0; facei < mesh.nInternalFaces(); facei++)
         {
-            for (label facei = 0; facei < mesh.nInternalFaces(); facei++)
-            {
-                scalar ownVal = alpha[mesh.faceOwner()[facei]];
-                scalar neiVal = alpha[mesh.faceNeighbour()[facei]];
+            scalar ownVal = alpha[mesh.faceOwner()[facei]];
+            scalar neiVal = alpha[mesh.faceNeighbour()[facei]];
 
-                if
-                (
-                    (ownVal < threshold_ && neiVal > threshold_)
-                 || (ownVal > threshold_ && neiVal < threshold_)
-                )
-                {
-                    blockedFace[facei] = true;
-                    nBlocked++;
-                }
+            if
+            (
+                (ownVal < threshold_ && neiVal > threshold_)
+             || (ownVal > threshold_ && neiVal < threshold_)
+            )
+            {
+                blockedFace[facei] = true;
+                nBlocked++;
             }
+        }
 
-            // Block coupled faces
-            forAll(alpha.boundaryField(), patchi)
+        // Block coupled faces
+        forAll(alpha.boundaryField(), patchi)
+        {
+            const fvPatchScalarField& fvp = alpha.boundaryField()[patchi];
+            if (fvp.coupled())
             {
-                const fvPatchScalarField& fvp = alpha.boundaryField()[patchi];
-                if (fvp.coupled())
-                {
-                    tmp<scalarField> townFld(fvp.patchInternalField());
-                    const scalarField& ownFld = townFld();
-                    tmp<scalarField> tnbrFld(fvp.patchNeighbourField());
-                    const scalarField& nbrFld = tnbrFld();
+                tmp<scalarField> townFld(fvp.patchInternalField());
+                const scalarField& ownFld = townFld();
+                tmp<scalarField> tnbrFld(fvp.patchNeighbourField());
+                const scalarField& nbrFld = tnbrFld();
+
+                label start = fvp.patch().patch().start();
 
-                    label start = fvp.patch().patch().start();
+                forAll(ownFld, i)
+                {
+                    scalar ownVal = ownFld[i];
+                    scalar neiVal = nbrFld[i];
 
-                    forAll(ownFld, i)
+                    if
+                    (
+                        (ownVal < threshold_ && neiVal > threshold_)
+                     || (ownVal > threshold_ && neiVal < threshold_)
+                    )
                     {
-                        scalar ownVal = ownFld[i];
-                        scalar neiVal = nbrFld[i];
-
-                        if
-                        (
-                            (ownVal < threshold_ && neiVal > threshold_)
-                         || (ownVal > threshold_ && neiVal < threshold_)
-                        )
-                        {
-                            blockedFace[start+i] = true;
-                            nBlocked++;
-                        }
+                        blockedFace[start+i] = true;
+                        nBlocked++;
                     }
                 }
             }
         }
+    }
 
 
-        regionSplit regions(mesh, blockedFace);
+    regionSplit regions(mesh, blockedFace);
 
-        Info<< "    Determined " << regions.nRegions()
-            << " disconnected regions" << endl;
+    Info<< "    Determined " << regions.nRegions()
+        << " disconnected regions" << endl;
 
 
-        if (debug)
-        {
-            volScalarField region
+    if (debug)
+    {
+        volScalarField region
+        (
+            IOobject
             (
-                IOobject
-                (
-                    "region",
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                "region",
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("zero", dimless, 0)
-            );
-            Info<< "    Dumping region as volScalarField to " << region.name()
-                << endl;
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("zero", dimless, 0)
+        );
+        Info<< "    Dumping region as volScalarField to " << region.name()
+            << endl;
 
-            forAll(regions, celli)
-            {
-                region[celli] = regions[celli];
-            }
-            region.correctBoundaryConditions();
-            region.write();
+        forAll(regions, celli)
+        {
+            region[celli] = regions[celli];
         }
+        region.correctBoundaryConditions();
+        region.write();
+    }
 
 
-        // Determine regions connected to supplied patches
-        Map<label> patchRegions(findPatchRegions(mesh, regions));
+    // Determine regions connected to supplied patches
+    Map<label> patchRegions(findPatchRegions(mesh, regions));
 
 
 
-        // Sum all regions
-        const scalarField alphaVol(alpha.primitiveField()*mesh.V());
-        Map<scalar> allRegionVolume(regionSum(regions, mesh.V()));
-        Map<scalar> allRegionAlphaVolume(regionSum(regions, alphaVol));
-        Map<label> allRegionNumCells
+    // Sum all regions
+    const scalarField alphaVol(alpha.primitiveField()*mesh.V());
+    Map<scalar> allRegionVolume(regionSum(regions, mesh.V()));
+    Map<scalar> allRegionAlphaVolume(regionSum(regions, alphaVol));
+    Map<label> allRegionNumCells
+    (
+        regionSum
         (
-            regionSum
-            (
-                regions,
-                labelField(mesh.nCells(), 1.0)
-            )
-        );
+            regions,
+            labelField(mesh.nCells(), 1.0)
+        )
+    );
 
-        if (debug)
+    if (debug)
+    {
+        Info<< "    " << token::TAB << "Region"
+            << token::TAB << "Volume(mesh)"
+            << token::TAB << "Volume(" << alpha.name() << "):"
+            << token::TAB << "nCells"
+            << endl;
+        scalar meshSumVol = 0.0;
+        scalar alphaSumVol = 0.0;
+        label nCells = 0;
+
+        Map<scalar>::const_iterator vIter = allRegionVolume.begin();
+        Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin();
+        Map<label>::const_iterator numIter = allRegionNumCells.begin();
+        for
+        (
+            ;
+            vIter != allRegionVolume.end()
+         && aIter != allRegionAlphaVolume.end();
+            ++vIter, ++aIter, ++numIter
+        )
         {
-            Info<< "    " << token::TAB << "Region"
-                << token::TAB << "Volume(mesh)"
-                << token::TAB << "Volume(" << alpha.name() << "):"
-                << token::TAB << "nCells"
+            Info<< "    " << token::TAB << vIter.key()
+                << token::TAB << vIter()
+                << token::TAB << aIter()
+                << token::TAB << numIter()
                 << endl;
-            scalar meshSumVol = 0.0;
-            scalar alphaSumVol = 0.0;
-            label nCells = 0;
-
-            Map<scalar>::const_iterator vIter = allRegionVolume.begin();
-            Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin();
-            Map<label>::const_iterator numIter = allRegionNumCells.begin();
-            for
-            (
-                ;
-                vIter != allRegionVolume.end()
-             && aIter != allRegionAlphaVolume.end();
-                ++vIter, ++aIter, ++numIter
-            )
-            {
-                Info<< "    " << token::TAB << vIter.key()
-                    << token::TAB << vIter()
-                    << token::TAB << aIter()
-                    << token::TAB << numIter()
-                    << endl;
 
-                meshSumVol += vIter();
-                alphaSumVol += aIter();
-                nCells += numIter();
-            }
-            Info<< "    " << token::TAB << "Total:"
-                << token::TAB << meshSumVol
-                << token::TAB << alphaSumVol
-                << token::TAB << nCells
-                << endl;
-            Info<< endl;
+            meshSumVol += vIter();
+            alphaSumVol += aIter();
+            nCells += numIter();
         }
+        Info<< "    " << token::TAB << "Total:"
+            << token::TAB << meshSumVol
+            << token::TAB << alphaSumVol
+            << token::TAB << nCells
+            << endl;
+        Info<< endl;
+    }
 
 
 
 
+    {
+        Info<< "    Patch connected regions (liquid core):" << endl;
+        Info<< token::TAB << "    Region"
+            << token::TAB << "Volume(mesh)"
+            << token::TAB << "Volume(" << alpha.name() << "):"
+            << endl;
+        forAllConstIter(Map<label>, patchRegions, iter)
         {
-            Info<< "    Patch connected regions (liquid core):" << endl;
-            Info<< token::TAB << "    Region"
-                << token::TAB << "Volume(mesh)"
-                << token::TAB << "Volume(" << alpha.name() << "):"
-                << endl;
-            forAllConstIter(Map<label>, patchRegions, iter)
-            {
-                label regionI = iter.key();
-                Info<< "    " << token::TAB << iter.key()
-                    << token::TAB << allRegionVolume[regionI]
-                    << token::TAB << allRegionAlphaVolume[regionI] << endl;
+            label regionI = iter.key();
+            Info<< "    " << token::TAB << iter.key()
+                << token::TAB << allRegionVolume[regionI]
+                << token::TAB << allRegionAlphaVolume[regionI] << endl;
 
-            }
-            Info<< endl;
         }
+        Info<< endl;
+    }
 
-        {
-            Info<< "    Background regions:" << endl;
-            Info<< "    " << token::TAB << "Region"
-                << token::TAB << "Volume(mesh)"
-                << token::TAB << "Volume(" << alpha.name() << "):"
-                << endl;
-            Map<scalar>::const_iterator vIter = allRegionVolume.begin();
-            Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin();
+    {
+        Info<< "    Background regions:" << endl;
+        Info<< "    " << token::TAB << "Region"
+            << token::TAB << "Volume(mesh)"
+            << token::TAB << "Volume(" << alpha.name() << "):"
+            << endl;
+        Map<scalar>::const_iterator vIter = allRegionVolume.begin();
+        Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin();
 
-            for
+        for
+        (
+            ;
+            vIter != allRegionVolume.end()
+         && aIter != allRegionAlphaVolume.end();
+            ++vIter, ++aIter
+        )
+        {
+            if
             (
-                ;
-                vIter != allRegionVolume.end()
-             && aIter != allRegionAlphaVolume.end();
-                ++vIter, ++aIter
+               !patchRegions.found(vIter.key())
+             && vIter() >= maxDropletVol
             )
             {
-                if
-                (
-                   !patchRegions.found(vIter.key())
-                 && vIter() >= maxDropletVol
-                )
-                {
-                    Info<< "    " << token::TAB << vIter.key()
-                        << token::TAB << vIter()
-                        << token::TAB << aIter() << endl;
-                }
+                Info<< "    " << token::TAB << vIter.key()
+                    << token::TAB << vIter()
+                    << token::TAB << aIter() << endl;
             }
-            Info<< endl;
         }
+        Info<< endl;
+    }
 
 
 
-        // Split alpha field
-        // ~~~~~~~~~~~~~~~~~
-        // Split into
-        //  - liquidCore            : region connected to inlet patches
-        //  - per region a volume   : for all other regions
-        //  - backgroundAlpha       : remaining alpha
-        writeAlphaFields(regions, patchRegions, allRegionVolume, alpha);
+    // Split alpha field
+    // ~~~~~~~~~~~~~~~~~
+    // Split into
+    //  - liquidCore            : region connected to inlet patches
+    //  - per region a volume   : for all other regions
+    //  - backgroundAlpha       : remaining alpha
+    writeAlphaFields(regions, patchRegions, allRegionVolume, alpha);
 
 
-        // Extract droplet-only allRegionVolume, i.e. delete liquid core
-        // (patchRegions) and background regions from maps.
-        // Note that we have to use mesh volume (allRegionVolume) and not
-        // allRegionAlphaVolume since background might not have alpha in it.
-        forAllIter(Map<scalar>, allRegionVolume, vIter)
+    // Extract droplet-only allRegionVolume, i.e. delete liquid core
+    // (patchRegions) and background regions from maps.
+    // Note that we have to use mesh volume (allRegionVolume) and not
+    // allRegionAlphaVolume since background might not have alpha in it.
+    forAllIter(Map<scalar>, allRegionVolume, vIter)
+    {
+        label regionI = vIter.key();
+        if
+        (
+            patchRegions.found(regionI)
+         || vIter() >= maxDropletVol
+        )
         {
-            label regionI = vIter.key();
-            if
-            (
-                patchRegions.found(regionI)
-             || vIter() >= maxDropletVol
-            )
-            {
-                allRegionVolume.erase(vIter);
-                allRegionAlphaVolume.erase(regionI);
-                allRegionNumCells.erase(regionI);
-            }
+            allRegionVolume.erase(vIter);
+            allRegionAlphaVolume.erase(regionI);
+            allRegionNumCells.erase(regionI);
         }
+    }
 
-        if (allRegionVolume.size())
+    if (allRegionVolume.size())
+    {
+        // Construct mids of bins for plotting
+        pointField xBin(nBins_);
+
+        scalar x = 0.5*delta;
+        forAll(xBin, i)
         {
-            // Construct mids of bins for plotting
-            pointField xBin(nBins_);
+            xBin[i] = point(x, 0, 0);
+            x += delta;
+        }
 
-            scalar x = 0.5*delta;
-            forAll(xBin, i)
-            {
-                xBin[i] = point(x, 0, 0);
-                x += delta;
-            }
+        const coordSet coords("diameter", "x", xBin, mag(xBin));
 
-            const coordSet coords("diameter", "x", xBin, mag(xBin));
 
+        // Get in region order the alpha*volume and diameter
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-            // Get in region order the alpha*volume and diameter
-            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        const labelList sortedRegions = allRegionAlphaVolume.sortedToc();
 
-            const labelList sortedRegions = allRegionAlphaVolume.sortedToc();
+        scalarField sortedVols
+        (
+            extractData
+            (
+                sortedRegions,
+                allRegionAlphaVolume
+            )
+        );
 
-            scalarField sortedVols
+        // Calculate the diameters
+        scalarField sortedDiameters(sortedVols.size());
+        forAll(sortedDiameters, i)
+        {
+            sortedDiameters[i] = Foam::cbrt
             (
-                extractData
-                (
-                    sortedRegions,
-                    allRegionAlphaVolume
-                )
+                sortedVols[i]
+               *6/constant::mathematical::pi
             );
+        }
 
-            // Calculate the diameters
-            scalarField sortedDiameters(sortedVols.size());
-            forAll(sortedDiameters, i)
-            {
-                sortedDiameters[i] = Foam::cbrt
-                (
-                    sortedVols[i]
-                   *6/constant::mathematical::pi
-                );
-            }
+        // Determine the bin index for all the diameters
+        labelList indices(sortedDiameters.size());
+        forAll(sortedDiameters, i)
+        {
+            indices[i] = (sortedDiameters[i]-minDiam_)/delta;
+        }
 
-            // Determine the bin index for all the diameters
-            labelList indices(sortedDiameters.size());
-            forAll(sortedDiameters, i)
-            {
-                indices[i] = (sortedDiameters[i]-minDiam_)/delta;
-            }
+        // Calculate the counts per diameter bin
+        scalarField binCount(nBins_, 0.0);
+        forAll(sortedDiameters, i)
+        {
+            binCount[indices[i]] += 1.0;
+        }
 
-            // Calculate the counts per diameter bin
-            scalarField binCount(nBins_, 0.0);
-            forAll(sortedDiameters, i)
-            {
-                binCount[indices[i]] += 1.0;
-            }
+        // Write counts
+        if (Pstream::master())
+        {
+            writeGraph(coords, "count", binCount);
+        }
 
-            // Write counts
-            if (Pstream::master())
-            {
-                writeGraph(coords, "count", binCount);
-            }
+        // Write to screen
+        {
+            Info<< "    Bins:" << endl;
+            Info<< "    " << token::TAB << "Bin"
+                << token::TAB << "Min diameter"
+                << token::TAB << "Count:"
+                << endl;
 
-            // Write to screen
+            scalar diam = 0.0;
+            forAll(binCount, binI)
             {
-                Info<< "    Bins:" << endl;
-                Info<< "    " << token::TAB << "Bin"
-                    << token::TAB << "Min diameter"
-                    << token::TAB << "Count:"
-                    << endl;
-
-                scalar diam = 0.0;
-                forAll(binCount, binI)
-                {
-                    Info<< "    " << token::TAB << binI
-                        << token::TAB << diam
-                        << token::TAB << binCount[binI] << endl;
-                    diam += delta;
-                }
-                Info<< endl;
+                Info<< "    " << token::TAB << binI
+                    << token::TAB << diam
+                    << token::TAB << binCount[binI] << endl;
+                diam += delta;
             }
+            Info<< endl;
+        }
 
 
-            // Write average and deviation of droplet volume.
-            writeGraphs
-            (
-                "volume",           // name of field
-                indices,            // per region the bin index
-                sortedVols,         // per region field data
-                binCount,           // per bin number of regions
-                coords              // graph data for bins
-            );
+        // Write average and deviation of droplet volume.
+        writeGraphs
+        (
+            "volume",           // name of field
+            indices,            // per region the bin index
+            sortedVols,         // per region field data
+            binCount,           // per bin number of regions
+            coords              // graph data for bins
+        );
 
-            // Collect some more field
-            {
-                wordList scalarNames(obr_.names(volScalarField::typeName));
-                labelList selected = findStrings(fields_, scalarNames);
+        // Collect some more field
+        {
+            wordList scalarNames(obr_.names(volScalarField::typeName));
+            labelList selected = findStrings(fields_, scalarNames);
 
-                forAll(selected, i)
-                {
-                    const word& fldName = scalarNames[selected[i]];
-                    Info<< "    Scalar field " << fldName << endl;
+            forAll(selected, i)
+            {
+                const word& fldName = scalarNames[selected[i]];
+                Info<< "    Scalar field " << fldName << endl;
 
-                    const scalarField& fld = obr_.lookupObject
-                    <
-                        volScalarField
-                    >(fldName).primitiveField();
+                const scalarField& fld = obr_.lookupObject
+                <
+                    volScalarField
+                >(fldName).primitiveField();
 
-                    writeGraphs
-                    (
-                        fldName,            // name of field
-                        alphaVol*fld,       // per cell field data
+                writeGraphs
+                (
+                    fldName,            // name of field
+                    alphaVol*fld,       // per cell field data
 
-                        regions,            // per cell the region(=droplet)
-                        sortedRegions,      // valid regions in sorted order
-                        1.0/sortedVols,     // per region normalisation
+                    regions,            // per cell the region(=droplet)
+                    sortedRegions,      // valid regions in sorted order
+                    1.0/sortedVols,     // per region normalisation
 
-                        indices,            // index of bin for each region
-                        binCount,           // per bin number of regions
-                        coords              // graph data for bins
-                    );
-                }
+                    indices,            // index of bin for each region
+                    binCount,           // per bin number of regions
+                    coords              // graph data for bins
+                );
             }
-            {
-                wordList vectorNames(obr_.names(volVectorField::typeName));
-                labelList selected = findStrings(fields_, vectorNames);
-
-                forAll(selected, i)
-                {
-                    const word& fldName = vectorNames[selected[i]];
-                    Info<< "    Vector field " << fldName << endl;
+        }
+        {
+            wordList vectorNames(obr_.names(volVectorField::typeName));
+            labelList selected = findStrings(fields_, vectorNames);
 
-                    vectorField fld = obr_.lookupObject
-                    <
-                        volVectorField
-                    >(fldName).primitiveField();
+            forAll(selected, i)
+            {
+                const word& fldName = vectorNames[selected[i]];
+                Info<< "    Vector field " << fldName << endl;
 
-                    if (coordSysPtr_.valid())
-                    {
-                        Info<< "Transforming vector field " << fldName
-                            << " with coordinate system "
-                            << coordSysPtr_().name()
-                            << endl;
+                vectorField fld = obr_.lookupObject
+                <
+                    volVectorField
+                >(fldName).primitiveField();
 
-                        fld = coordSysPtr_().localVector(fld);
-                    }
+                if (coordSysPtr_.valid())
+                {
+                    Info<< "Transforming vector field " << fldName
+                        << " with coordinate system "
+                        << coordSysPtr_().name()
+                        << endl;
 
+                    fld = coordSysPtr_().localVector(fld);
+                }
 
-                    // Components
 
-                    for (direction cmp = 0; cmp < vector::nComponents; cmp++)
-                    {
-                        writeGraphs
-                        (
-                            fldName + vector::componentNames[cmp],
-                            alphaVol*fld.component(cmp),// per cell field data
-
-                            regions,        // per cell the region(=droplet)
-                            sortedRegions,  // valid regions in sorted order
-                            1.0/sortedVols, // per region normalisation
-
-                            indices,        // index of bin for each region
-                            binCount,       // per bin number of regions
-                            coords          // graph data for bins
-                        );
-                    }
+                // Components
 
-                    // Magnitude
+                for (direction cmp = 0; cmp < vector::nComponents; cmp++)
+                {
                     writeGraphs
                     (
-                        fldName + "mag",    // name of field
-                        alphaVol*mag(fld),  // per cell field data
+                        fldName + vector::componentNames[cmp],
+                        alphaVol*fld.component(cmp),// per cell field data
 
-                        regions,            // per cell the region(=droplet)
-                        sortedRegions,      // valid regions in sorted order
-                        1.0/sortedVols,     // per region normalisation
+                        regions,        // per cell the region(=droplet)
+                        sortedRegions,  // valid regions in sorted order
+                        1.0/sortedVols, // per region normalisation
 
-                        indices,            // index of bin for each region
-                        binCount,           // per bin number of regions
-                        coords              // graph data for bins
+                        indices,        // index of bin for each region
+                        binCount,       // per bin number of regions
+                        coords          // graph data for bins
                     );
                 }
+
+                // Magnitude
+                writeGraphs
+                (
+                    fldName + "mag",    // name of field
+                    alphaVol*mag(fld),  // per cell field data
+
+                    regions,            // per cell the region(=droplet)
+                    sortedRegions,      // valid regions in sorted order
+                    1.0/sortedVols,     // per region normalisation
+
+                    indices,            // index of bin for each region
+                    binCount,           // per bin number of regions
+                    coords              // graph data for bins
+                );
             }
         }
     }
diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
index e994e5667aaba9fd1d3deb078b0b5d8075f20297..108c17ad8bb09d38a63d8629168db9cb9efec511 100644
--- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
+++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::regionSizeDistribution
+    Foam::functionObjects::regionSizeDistribution
 
 Group
     grpFieldFunctionObjects
@@ -126,6 +126,9 @@ class mapPolyMesh;
 class regionSplit;
 class polyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                    Class regionSizeDistribution Declaration
 \*---------------------------------------------------------------------------*/
@@ -141,9 +144,6 @@ class regionSizeDistribution
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Name of field
         word alphaName_;
 
@@ -255,6 +255,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     // Destructor
 
@@ -296,6 +306,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H
index 97526d0c3ab3e71dd69941faa27786ffbc4b3b8b..adb23034ab9511aacc975904debdc6b9eefcc8f8 100644
--- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<regionSizeDistribution>
+    typedef OutputFilterFunctionObject<functionObjects::regionSizeDistribution>
         regionSizeDistributionFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C
index 8f707f4e0554a09ae491c2c017d77bfe75c17ecb..a74e76afd0eb0e24a724bb71899e63e7057cb076 100644
--- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C
+++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C
@@ -30,7 +30,7 @@ License
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-Foam::Map<Type> Foam::regionSizeDistribution::regionSum
+Foam::Map<Type> Foam::functionObjects::regionSizeDistribution::regionSum
 (
     const regionSplit& regions,
     const Field<Type>& fld
@@ -60,9 +60,8 @@ Foam::Map<Type> Foam::regionSizeDistribution::regionSum
 }
 
 
-// Get data in sortedToc order
 template<class Type>
-Foam::List<Type> Foam::regionSizeDistribution::extractData
+Foam::List<Type> Foam::functionObjects::regionSizeDistribution::extractData
 (
     const UList<label>& keys,
     const Map<Type>& regionData
diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLine.C b/src/postProcessing/functionObjects/field/streamLine/streamLine.C
index 94e490630e46588e87a024c51200a152c1e48811..a5015e795002fdef832ac98070cf7e9b1ccb1c4a 100644
--- a/src/postProcessing/functionObjects/field/streamLine/streamLine.C
+++ b/src/postProcessing/functionObjects/field/streamLine/streamLine.C
@@ -40,14 +40,17 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(streamLine, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(streamLine, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 Foam::autoPtr<Foam::indirectPrimitivePatch>
-Foam::streamLine::wallPatch() const
+Foam::functionObjects::streamLine::wallPatch() const
 {
     const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
 
@@ -57,7 +60,6 @@ Foam::streamLine::wallPatch() const
 
     forAll(patches, patchi)
     {
-        //if (!polyPatch::constraintType(patches[patchi].type()))
         if (isA<wallPolyPatch>(patches[patchi]))
         {
             nFaces += patches[patchi].size();
@@ -70,7 +72,6 @@ Foam::streamLine::wallPatch() const
 
     forAll(patches, patchi)
     {
-        //if (!polyPatch::constraintType(patches[patchi].type()))
         if (isA<wallPolyPatch>(patches[patchi]))
         {
             const polyPatch& pp = patches[patchi];
@@ -97,7 +98,7 @@ Foam::streamLine::wallPatch() const
 }
 
 
-void Foam::streamLine::track()
+void Foam::functionObjects::streamLine::track()
 {
     const Time& runTime = obr_.time();
     const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
@@ -121,7 +122,7 @@ void Foam::streamLine::track()
                 mesh,
                 seedPoints[i],
                 seedPoints.cells()[i],
-                lifeTime_               // lifetime
+                lifeTime_
             )
         );
     }
@@ -294,7 +295,7 @@ void Foam::streamLine::track()
     }
 
 
-    // additional particle info
+    // Additional particle info
     streamLineParticle::trackingData td
     (
         particles,
@@ -322,7 +323,7 @@ void Foam::streamLine::track()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::streamLine::streamLine
+Foam::functionObjects::streamLine::streamLine
 (
     const word& name,
     const objectRegistry& obr,
@@ -334,244 +335,217 @@ Foam::streamLine::streamLine
     name_(name),
     obr_(obr),
     loadFromFiles_(loadFromFiles),
-    active_(true),
     nSubCycle_(0)
 {
-    // Only active if a fvMesh is available
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict_);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating."
-            << nl << endl;
-    }
+    read(dict_);
+}
+
+
+bool Foam::functionObjects::streamLine::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::streamLine::~streamLine()
+Foam::functionObjects::streamLine::~streamLine()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::streamLine::read(const dictionary& dict)
+void Foam::functionObjects::streamLine::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        Info<< type() << " " << name_ << ":" << nl;
+    Info<< type() << " " << name_ << ":" << nl;
 
-        //dict_ = dict;
-        dict.lookup("fields") >> fields_;
-        if (dict.found("UName"))
-        {
-            dict.lookup("UName") >> UName_;
-        }
-        else
+    dict.lookup("fields") >> fields_;
+    if (dict.found("UName"))
+    {
+        dict.lookup("UName") >> UName_;
+    }
+    else
+    {
+        UName_ = "U";
+        if (dict.found("U"))
         {
-            UName_ = "U";
-            if (dict.found("U"))
-            {
-                IOWarningInFunction(dict)
-                    << "Using deprecated entry \"U\"."
-                    << " Please use \"UName\" instead."
-                    << endl;
-                dict.lookup("U") >> UName_;
-            }
+            IOWarningInFunction(dict)
+                << "Using deprecated entry \"U\"."
+                << " Please use \"UName\" instead."
+                << endl;
+            dict.lookup("U") >> UName_;
         }
+    }
 
-        if (findIndex(fields_, UName_) == -1)
-        {
-            FatalIOErrorInFunction(dict)
-                << "Velocity field for tracking " << UName_
-                << " should be present in the list of fields " << fields_
-                << exit(FatalIOError);
-        }
+    if (findIndex(fields_, UName_) == -1)
+    {
+        FatalIOErrorInFunction(dict)
+            << "Velocity field for tracking " << UName_
+            << " should be present in the list of fields " << fields_
+            << exit(FatalIOError);
+    }
 
 
-        dict.lookup("trackForward") >> trackForward_;
-        dict.lookup("lifeTime") >> lifeTime_;
-        if (lifeTime_ < 1)
-        {
-            FatalErrorInFunction
-                << "Illegal value " << lifeTime_ << " for lifeTime"
-                << exit(FatalError);
-        }
+    dict.lookup("trackForward") >> trackForward_;
+    dict.lookup("lifeTime") >> lifeTime_;
+    if (lifeTime_ < 1)
+    {
+        FatalErrorInFunction
+            << "Illegal value " << lifeTime_ << " for lifeTime"
+            << exit(FatalError);
+    }
 
 
-        bool subCycling = dict.found("nSubCycle");
-        bool fixedLength = dict.found("trackLength");
+    bool subCycling = dict.found("nSubCycle");
+    bool fixedLength = dict.found("trackLength");
 
-        if (subCycling && fixedLength)
-        {
-            FatalIOErrorInFunction(dict)
-                << "Cannot both specify automatic time stepping (through '"
-                << "nSubCycle' specification) and fixed track length (through '"
-                << "trackLength')"
-                << exit(FatalIOError);
-        }
+    if (subCycling && fixedLength)
+    {
+        FatalIOErrorInFunction(dict)
+            << "Cannot both specify automatic time stepping (through '"
+            << "nSubCycle' specification) and fixed track length (through '"
+            << "trackLength')"
+            << exit(FatalIOError);
+    }
 
 
-        nSubCycle_ = 1;
-        if (dict.readIfPresent("nSubCycle", nSubCycle_))
-        {
-            trackLength_ = VGREAT;
-            if (nSubCycle_ < 1)
-            {
-                nSubCycle_ = 1;
-            }
-            Info<< "    automatic track length specified through"
-                << " number of sub cycles : " << nSubCycle_ << nl << endl;
-        }
-        else
+    nSubCycle_ = 1;
+    if (dict.readIfPresent("nSubCycle", nSubCycle_))
+    {
+        trackLength_ = VGREAT;
+        if (nSubCycle_ < 1)
         {
-            dict.lookup("trackLength") >> trackLength_;
-
-            Info<< "    fixed track length specified : "
-                << trackLength_ << nl << endl;
+            nSubCycle_ = 1;
         }
+        Info<< "    automatic track length specified through"
+            << " number of sub cycles : " << nSubCycle_ << nl << endl;
+    }
+    else
+    {
+        dict.lookup("trackLength") >> trackLength_;
 
+        Info<< "    fixed track length specified : "
+            << trackLength_ << nl << endl;
+    }
 
-        interpolationScheme_ = dict.lookupOrDefault
-        (
-            "interpolationScheme",
-            interpolationCellPoint<scalar>::typeName
-        );
 
-        //Info<< "    using interpolation " << interpolationScheme_
-        //    << endl;
+    interpolationScheme_ = dict.lookupOrDefault
+    (
+        "interpolationScheme",
+        interpolationCellPoint<scalar>::typeName
+    );
 
-        cloudName_ = dict.lookupOrDefault<word>("cloudName", "streamLine");
-        dict.lookup("seedSampleSet") >> seedSet_;
+    cloudName_ = dict.lookupOrDefault<word>("cloudName", "streamLine");
+    dict.lookup("seedSampleSet") >> seedSet_;
 
-        const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
+    const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
 
-        meshSearchPtr_.reset(new meshSearch(mesh));
+    meshSearchPtr_.reset(new meshSearch(mesh));
 
-        const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs");
-        sampledSetPtr_ = sampledSet::New
-        (
-            seedSet_,
-            mesh,
-            meshSearchPtr_(),
-            coeffsDict
-        );
-        coeffsDict.lookup("axis") >> sampledSetAxis_;
+    const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs");
+    sampledSetPtr_ = sampledSet::New
+    (
+        seedSet_,
+        mesh,
+        meshSearchPtr_(),
+        coeffsDict
+    );
+    coeffsDict.lookup("axis") >> sampledSetAxis_;
 
-        scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat"));
-        vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat"));
-    }
+    scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat"));
+    vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat"));
 }
 
 
-void Foam::streamLine::execute()
-{
-//    const Time& runTime = obr_.time();
-//    Pout<< "**streamLine::execute : time:" << runTime.timeName() << endl;
-//
-//    bool isOutputTime = false;
-//
-//    const functionObjectList& fobs = runTime.functionObjects();
-//
-//    forAll(fobs, i)
-//    {
-//        if (isA<streamLineFunctionObject>(fobs[i]))
-//        {
-//            const streamLineFunctionObject& fo =
-//                dynamic_cast<const streamLineFunctionObject&>(fobs[i]);
-//
-//            if (fo.name() == name_)
-//            {
-//                Pout<< "found me:" << i << endl;
-//                if (fo.outputControl().output())
-//                {
-//                    isOutputTime = true;
-//                    break;
-//                }
-//            }
-//        }
-//    }
-//
-//
-//    if (active_ && isOutputTime)
-//    {
-//        track();
-//    }
-}
+void Foam::functionObjects::streamLine::execute()
+{}
 
 
-void Foam::streamLine::end()
+void Foam::functionObjects::streamLine::end()
 {}
 
 
-void Foam::streamLine::timeSet()
+void Foam::functionObjects::streamLine::timeSet()
 {}
 
 
-void Foam::streamLine::write()
+void Foam::functionObjects::streamLine::write()
 {
-    if (active_)
-    {
-        Info<< type() << " " << name_ << " output:" << nl;
+    Info<< type() << " " << name_ << " output:" << nl;
 
-        const Time& runTime = obr_.time();
-        const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
+    const Time& runTime = obr_.time();
+    const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
 
 
-        // Do all injection and tracking
-        track();
+    // Do all injection and tracking
+    track();
 
 
-        if (Pstream::parRun())
-        {
-            // Append slave tracks to master ones
-            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (Pstream::parRun())
+    {
+        // Append slave tracks to master ones
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-            globalIndex globalTrackIDs(allTracks_.size());
+        globalIndex globalTrackIDs(allTracks_.size());
 
-            // Construct a distribution map to pull all to the master.
-            labelListList sendMap(Pstream::nProcs());
-            labelListList recvMap(Pstream::nProcs());
+        // Construct a distribution map to pull all to the master.
+        labelListList sendMap(Pstream::nProcs());
+        labelListList recvMap(Pstream::nProcs());
 
-            if (Pstream::master())
-            {
-                // Master: receive all. My own first, then consecutive
-                // processors.
-                label trackI = 0;
+        if (Pstream::master())
+        {
+            // Master: receive all. My own first, then consecutive
+            // processors.
+            label trackI = 0;
 
-                forAll(recvMap, proci)
+            forAll(recvMap, proci)
+            {
+                labelList& fromProc = recvMap[proci];
+                fromProc.setSize(globalTrackIDs.localSize(proci));
+                forAll(fromProc, i)
                 {
-                    labelList& fromProc = recvMap[proci];
-                    fromProc.setSize(globalTrackIDs.localSize(proci));
-                    forAll(fromProc, i)
-                    {
-                        fromProc[i] = trackI++;
-                    }
+                    fromProc[i] = trackI++;
                 }
             }
+        }
 
-            labelList& toMaster = sendMap[0];
-            toMaster.setSize(globalTrackIDs.localSize());
-            forAll(toMaster, i)
-            {
-                toMaster[i] = i;
-            }
+        labelList& toMaster = sendMap[0];
+        toMaster.setSize(globalTrackIDs.localSize());
+        forAll(toMaster, i)
+        {
+            toMaster[i] = i;
+        }
 
-            const mapDistribute distMap
-            (
-                globalTrackIDs.size(),
-                sendMap.xfer(),
-                recvMap.xfer()
-            );
+        const mapDistribute distMap
+        (
+            globalTrackIDs.size(),
+            sendMap.xfer(),
+            recvMap.xfer()
+        );
 
 
-            // Distribute the track positions. Note: use scheduled comms
-            // to prevent buffering.
+        // Distribute the track positions. Note: use scheduled comms
+        // to prevent buffering.
+        mapDistribute::distribute
+        (
+            Pstream::scheduled,
+            distMap.schedule(),
+            distMap.constructSize(),
+            distMap.subMap(),
+            distMap.constructMap(),
+            allTracks_
+        );
+
+        // Distribute the scalars
+        forAll(allScalars_, scalarI)
+        {
             mapDistribute::distribute
             (
                 Pstream::scheduled,
@@ -579,193 +553,168 @@ void Foam::streamLine::write()
                 distMap.constructSize(),
                 distMap.subMap(),
                 distMap.constructMap(),
-                allTracks_
+                allScalars_[scalarI]
             );
-
-            // Distribute the scalars
-            forAll(allScalars_, scalarI)
-            {
-                mapDistribute::distribute
-                (
-                    Pstream::scheduled,
-                    distMap.schedule(),
-                    distMap.constructSize(),
-                    distMap.subMap(),
-                    distMap.constructMap(),
-                    allScalars_[scalarI]
-                );
-            }
-            // Distribute the vectors
-            forAll(allVectors_, vectorI)
-            {
-                mapDistribute::distribute
-                (
-                    Pstream::scheduled,
-                    distMap.schedule(),
-                    distMap.constructSize(),
-                    distMap.subMap(),
-                    distMap.constructMap(),
-                    allVectors_[vectorI]
-                );
-            }
         }
-
-
-        label n = 0;
-        forAll(allTracks_, trackI)
+        // Distribute the vectors
+        forAll(allVectors_, vectorI)
         {
-            n += allTracks_[trackI].size();
+            mapDistribute::distribute
+            (
+                Pstream::scheduled,
+                distMap.schedule(),
+                distMap.constructSize(),
+                distMap.subMap(),
+                distMap.constructMap(),
+                allVectors_[vectorI]
+            );
         }
+    }
 
-        Info<< "    Tracks:" << allTracks_.size() << nl
-            << "    Total samples:" << n
-            << endl;
 
+    label n = 0;
+    forAll(allTracks_, trackI)
+    {
+        n += allTracks_[trackI].size();
+    }
 
-        // Massage into form suitable for writers
-        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Info<< "    Tracks:" << allTracks_.size() << nl
+        << "    Total samples:" << n
+        << endl;
 
-        if (Pstream::master() && allTracks_.size())
-        {
-            // Make output directory
 
-            fileName vtkPath
-            (
-                Pstream::parRun()
-              ? runTime.path()/".."/"postProcessing"/"sets"/name()
-              : runTime.path()/"postProcessing"/"sets"/name()
-            );
-            if (mesh.name() != fvMesh::defaultRegion)
-            {
-                vtkPath = vtkPath/mesh.name();
-            }
-            vtkPath = vtkPath/mesh.time().timeName();
+    // Massage into form suitable for writers
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-            mkDir(vtkPath);
+    if (Pstream::master() && allTracks_.size())
+    {
+        // Make output directory
+
+        fileName vtkPath
+        (
+            Pstream::parRun()
+          ? runTime.path()/".."/"postProcessing"/"sets"/name()
+          : runTime.path()/"postProcessing"/"sets"/name()
+        );
+        if (mesh.name() != fvMesh::defaultRegion)
+        {
+            vtkPath = vtkPath/mesh.name();
+        }
+        vtkPath = vtkPath/mesh.time().timeName();
 
-            // Convert track positions
+        mkDir(vtkPath);
 
-            PtrList<coordSet> tracks(allTracks_.size());
-            forAll(allTracks_, trackI)
-            {
-                tracks.set
+        // Convert track positions
+
+        PtrList<coordSet> tracks(allTracks_.size());
+        forAll(allTracks_, trackI)
+        {
+            tracks.set
+            (
+                trackI,
+                new coordSet
                 (
-                    trackI,
-                    new coordSet
-                    (
-                        "track" + Foam::name(trackI),
-                        sampledSetAxis_                 //"xyz"
-                    )
-                );
-                tracks[trackI].transfer(allTracks_[trackI]);
-            }
+                    "track" + Foam::name(trackI),
+                    sampledSetAxis_                 //"xyz"
+                )
+            );
+            tracks[trackI].transfer(allTracks_[trackI]);
+        }
 
-            // Convert scalar values
+        // Convert scalar values
 
-            if (allScalars_.size() > 0)
+        if (allScalars_.size() > 0)
+        {
+            List<List<scalarField>> scalarValues(allScalars_.size());
+
+            forAll(allScalars_, scalarI)
             {
-                List<List<scalarField>> scalarValues(allScalars_.size());
+                DynamicList<scalarList>& allTrackVals =
+                    allScalars_[scalarI];
+                scalarValues[scalarI].setSize(allTrackVals.size());
 
-                forAll(allScalars_, scalarI)
+                forAll(allTrackVals, trackI)
                 {
-                    DynamicList<scalarList>& allTrackVals =
-                        allScalars_[scalarI];
-                    scalarValues[scalarI].setSize(allTrackVals.size());
-
-                    forAll(allTrackVals, trackI)
-                    {
-                        scalarList& trackVals = allTrackVals[trackI];
-                        scalarValues[scalarI][trackI].transfer(trackVals);
-                    }
+                    scalarList& trackVals = allTrackVals[trackI];
+                    scalarValues[scalarI][trackI].transfer(trackVals);
                 }
+            }
 
-                fileName vtkFile
+            fileName vtkFile
+            (
+                vtkPath
+              / scalarFormatterPtr_().getFileName
                 (
-                    vtkPath
-                  / scalarFormatterPtr_().getFileName
-                    (
-                        tracks[0],
-                        scalarNames_
-                    )
-                );
+                    tracks[0],
+                    scalarNames_
+                )
+            );
 
-                Info<< "    Writing data to " << vtkFile.path() << endl;
+            Info<< "    Writing data to " << vtkFile.path() << endl;
 
-                scalarFormatterPtr_().write
-                (
-                    true,           // writeTracks
-                    tracks,
-                    scalarNames_,
-                    scalarValues,
-                    OFstream(vtkFile)()
-                );
-            }
+            scalarFormatterPtr_().write
+            (
+                true,           // writeTracks
+                tracks,
+                scalarNames_,
+                scalarValues,
+                OFstream(vtkFile)()
+            );
+        }
 
-            // Convert vector values
+        // Convert vector values
 
-            if (allVectors_.size() > 0)
+        if (allVectors_.size() > 0)
+        {
+            List<List<vectorField>> vectorValues(allVectors_.size());
+
+            forAll(allVectors_, vectorI)
             {
-                List<List<vectorField>> vectorValues(allVectors_.size());
+                DynamicList<vectorList>& allTrackVals =
+                    allVectors_[vectorI];
+                vectorValues[vectorI].setSize(allTrackVals.size());
 
-                forAll(allVectors_, vectorI)
+                forAll(allTrackVals, trackI)
                 {
-                    DynamicList<vectorList>& allTrackVals =
-                        allVectors_[vectorI];
-                    vectorValues[vectorI].setSize(allTrackVals.size());
-
-                    forAll(allTrackVals, trackI)
-                    {
-                        vectorList& trackVals = allTrackVals[trackI];
-                        vectorValues[vectorI][trackI].transfer(trackVals);
-                    }
+                    vectorList& trackVals = allTrackVals[trackI];
+                    vectorValues[vectorI][trackI].transfer(trackVals);
                 }
+            }
 
-                fileName vtkFile
+            fileName vtkFile
+            (
+                vtkPath
+              / vectorFormatterPtr_().getFileName
                 (
-                    vtkPath
-                  / vectorFormatterPtr_().getFileName
-                    (
-                        tracks[0],
-                        vectorNames_
-                    )
-                );
-
-                //Info<< "    Writing vector data to " << vtkFile << endl;
+                    tracks[0],
+                    vectorNames_
+                )
+            );
 
-                vectorFormatterPtr_().write
-                (
-                    true,           // writeTracks
-                    tracks,
-                    vectorNames_,
-                    vectorValues,
-                    OFstream(vtkFile)()
-                );
-            }
+            vectorFormatterPtr_().write
+            (
+                true,           // writeTracks
+                tracks,
+                vectorNames_,
+                vectorValues,
+                OFstream(vtkFile)()
+            );
         }
     }
 }
 
 
-void Foam::streamLine::updateMesh(const mapPolyMesh&)
+void Foam::functionObjects::streamLine::updateMesh(const mapPolyMesh&)
 {
     read(dict_);
 }
 
 
-void Foam::streamLine::movePoints(const polyMesh&)
+void Foam::functionObjects::streamLine::movePoints(const polyMesh&)
 {
     // Moving mesh affects the search tree
     read(dict_);
 }
 
 
-//void Foam::streamLine::readUpdate(const polyMesh::readUpdateState state)
-//{
-//    if (state != UNCHANGED)
-//    {
-//        read(dict_);
-//    }
-//}
-
-
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLine.H b/src/postProcessing/functionObjects/field/streamLine/streamLine.H
index 16ae0ca96b0f53c05bd8bb54bbc8a5f6e6e7332a..c0f280544d358bbf8a0ffdb05042c6be4d59b7d7 100644
--- a/src/postProcessing/functionObjects/field/streamLine/streamLine.H
+++ b/src/postProcessing/functionObjects/field/streamLine/streamLine.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::streamLine
+    Foam::functionObjects::streamLine
 
 Group
     grpFieldFunctionObjects
@@ -125,6 +125,9 @@ class mapPolyMesh;
 class meshSearch;
 class sampledSet;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                          Class streamLine Declaration
 \*---------------------------------------------------------------------------*/
@@ -145,9 +148,6 @@ class streamLine
         //- Load fields from files (not from objectRegistry)
         bool loadFromFiles_;
 
-        //- On/off switch
-        bool active_;
-
         //- List of fields to sample
         wordList fields_;
 
@@ -182,7 +182,6 @@ class streamLine
         wordList vectorNames_;
 
 
-
         // Demand driven
 
             //- Mesh searching enigne
@@ -244,6 +243,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~streamLine();
@@ -277,14 +286,12 @@ public:
 
         //- Update for mesh point-motion
         virtual void movePoints(const polyMesh&);
-
-        ////- Update for changes of mesh due to readUpdate
-        //virtual void readUpdate(const polyMesh::readUpdateState state);
 };
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.H b/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.H
index 8bfe856ee063b4325917e7d0730d7ffb5ea33686..b40fe13c3f9c35561f17ceaa6c2bf3ae3d89d1af 100644
--- a/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<streamLine>
+    typedef OutputFilterFunctionObject<functionObjects::streamLine>
         streamLineFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C
index ad1c7d81b862be6431453a7eb57b49a0b71e5086..d5ba38787942b5c98d6aaed789789011bdb9a81f 100644
--- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C
+++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -28,14 +28,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(surfaceInterpolateFields, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::surfaceInterpolateFields::surfaceInterpolateFields
+Foam::functionObjects::surfaceInterpolateFields::surfaceInterpolateFields
 (
     const word& name,
     const objectRegistry& obr,
@@ -45,109 +48,99 @@ Foam::surfaceInterpolateFields::surfaceInterpolateFields
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldSet_()
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
-    }
+    read(dict);
+}
+
+
+bool Foam::functionObjects::surfaceInterpolateFields::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::surfaceInterpolateFields::~surfaceInterpolateFields()
+Foam::functionObjects::surfaceInterpolateFields::~surfaceInterpolateFields()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::surfaceInterpolateFields::read(const dictionary& dict)
+void Foam::functionObjects::surfaceInterpolateFields::read
+(
+    const dictionary& dict
+)
 {
-    if (active_)
-    {
-        dict.lookup("fields") >> fieldSet_;
-    }
+    dict.lookup("fields") >> fieldSet_;
 }
 
 
-void Foam::surfaceInterpolateFields::execute()
+void Foam::functionObjects::surfaceInterpolateFields::execute()
 {
-    if (active_)
-    {
-        Info<< type() << " " << name_ << " output:" << nl;
-
-        // Clear out any previously loaded fields
-        ssf_.clear();
-        svf_.clear();
-        sSpheretf_.clear();
-        sSymmtf_.clear();
-        stf_.clear();
-
-        interpolateFields<scalar>(ssf_);
-        interpolateFields<vector>(svf_);
-        interpolateFields<sphericalTensor>(sSpheretf_);
-        interpolateFields<symmTensor>(sSymmtf_);
-        interpolateFields<tensor>(stf_);
-
-        Info<< endl;
-    }
+    Info<< type() << " " << name_ << " output:" << nl;
+
+    // Clear out any previously loaded fields
+    ssf_.clear();
+    svf_.clear();
+    sSpheretf_.clear();
+    sSymmtf_.clear();
+    stf_.clear();
+
+    interpolateFields<scalar>(ssf_);
+    interpolateFields<vector>(svf_);
+    interpolateFields<sphericalTensor>(sSpheretf_);
+    interpolateFields<symmTensor>(sSymmtf_);
+    interpolateFields<tensor>(stf_);
+
+    Info<< endl;
 }
 
 
-void Foam::surfaceInterpolateFields::end()
+void Foam::functionObjects::surfaceInterpolateFields::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::surfaceInterpolateFields::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::surfaceInterpolateFields::timeSet()
+{}
 
 
-void Foam::surfaceInterpolateFields::write()
+void Foam::functionObjects::surfaceInterpolateFields::write()
 {
-    if (active_)
+    Info<< type() << " " << name_ << " output:" << nl;
+
+    Info<< "    Writing interpolated surface fields to "
+        << obr_.time().timeName() << endl;
+
+    forAll(ssf_, i)
+    {
+        ssf_[i].write();
+    }
+    forAll(svf_, i)
+    {
+        svf_[i].write();
+    }
+    forAll(sSpheretf_, i)
+    {
+        sSpheretf_[i].write();
+    }
+    forAll(sSymmtf_, i)
+    {
+        sSymmtf_[i].write();
+    }
+    forAll(stf_, i)
     {
-        Info<< type() << " " << name_ << " output:" << nl;
-
-        Info<< "    Writing interpolated surface fields to "
-            << obr_.time().timeName() << endl;
-
-        forAll(ssf_, i)
-        {
-            ssf_[i].write();
-        }
-        forAll(svf_, i)
-        {
-            svf_[i].write();
-        }
-        forAll(sSpheretf_, i)
-        {
-            sSpheretf_[i].write();
-        }
-        forAll(sSymmtf_, i)
-        {
-            sSymmtf_[i].write();
-        }
-        forAll(stf_, i)
-        {
-            stf_[i].write();
-        }
+        stf_[i].write();
     }
 }
 
diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H
index f95995fe5111be53ae96e07ff9ee153f590d0e71..aed3e2aaa00686ddd603ebfd811ed0bd45a382f6 100644
--- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H
+++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H
@@ -84,6 +84,9 @@ class objectRegistry;
 class dictionary;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                   Class surfaceInterpolateFields Declaration
 \*---------------------------------------------------------------------------*/
@@ -99,9 +102,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Fields to process
         //wordList fieldSet_;
         List<Tuple2<word, word>> fieldSet_;
@@ -152,6 +152,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~surfaceInterpolateFields();
@@ -192,6 +202,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.H b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.H
index 210eccdb229f27c629d69290a4460ad4d26db55b..fa10e067811f53de79a6dfac204f0921ffad7ee2 100644
--- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,8 +43,10 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<surfaceInterpolateFields>
-        surfaceInterpolateFieldsFunctionObject;
+    typedef OutputFilterFunctionObject
+    <
+        functionObjects::surfaceInterpolateFields
+    > surfaceInterpolateFieldsFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C
index 9285ef28e90258b4d9b1db9cfaacabeb317751de..689daea858e50c9356b3178ce8df445a4551ca24 100644
--- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C
+++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C
@@ -30,7 +30,7 @@ License
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::surfaceInterpolateFields::interpolateFields
+void Foam::functionObjects::surfaceInterpolateFields::interpolateFields
 (
     PtrList<GeometricField<Type, fvsPatchField, surfaceMesh>>& sflds
 ) const
diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C
index 823c52b6a0e7cc4657889625294793d37465a57a..f110a8845514a5691cc773a5f75a9cb44995a83d 100644
--- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C
+++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C
@@ -42,14 +42,17 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(wallBoundedStreamLine, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(wallBoundedStreamLine, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 Foam::autoPtr<Foam::indirectPrimitivePatch>
-Foam::wallBoundedStreamLine::wallPatch() const
+Foam::functionObjects::wallBoundedStreamLine::wallPatch() const
 {
     const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
 
@@ -99,7 +102,7 @@ Foam::wallBoundedStreamLine::wallPatch() const
 }
 
 
-Foam::tetIndices Foam::wallBoundedStreamLine::findNearestTet
+Foam::tetIndices Foam::functionObjects::wallBoundedStreamLine::findNearestTet
 (
     const PackedBoolList& isWallPatch,
     const point& seedPt,
@@ -156,7 +159,7 @@ Foam::tetIndices Foam::wallBoundedStreamLine::findNearestTet
 }
 
 
-void Foam::wallBoundedStreamLine::track()
+void Foam::functionObjects::wallBoundedStreamLine::track()
 {
     const Time& runTime = obr_.time();
     const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
@@ -432,7 +435,7 @@ void Foam::wallBoundedStreamLine::track()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::wallBoundedStreamLine::wallBoundedStreamLine
+Foam::functionObjects::wallBoundedStreamLine::wallBoundedStreamLine
 (
     const word& name,
     const objectRegistry& obr,
@@ -443,180 +446,175 @@ Foam::wallBoundedStreamLine::wallBoundedStreamLine
     dict_(dict),
     name_(name),
     obr_(obr),
-    loadFromFiles_(loadFromFiles),
-    active_(true)
+    loadFromFiles_(loadFromFiles)
 {
-    // Only active if a fvMesh is available
-    if (isA<fvMesh>(obr_))
-    {
-        read(dict_);
-    }
-    else
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << nl << endl;
-    }
+    read(dict_);
+}
+
+
+bool Foam::functionObjects::wallBoundedStreamLine::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::wallBoundedStreamLine::~wallBoundedStreamLine()
+Foam::functionObjects::wallBoundedStreamLine::~wallBoundedStreamLine()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::wallBoundedStreamLine::read(const dictionary& dict)
+void Foam::functionObjects::wallBoundedStreamLine::read(const dictionary& dict)
 {
-    if (active_)
+    //dict_ = dict;
+    dict.lookup("fields") >> fields_;
+    if (dict.found("UName"))
     {
-        //dict_ = dict;
-        dict.lookup("fields") >> fields_;
-        if (dict.found("UName"))
-        {
-            dict.lookup("UName") >> UName_;
-        }
-        else
-        {
-            UName_ = "U";
-            if (dict.found("U"))
-            {
-                IOWarningInFunction
-                (
-                    dict
-                )   << "Using deprecated entry \"U\"."
-                    << " Please use \"UName\" instead."
-                    << endl;
-                dict.lookup("U") >> UName_;
-            }
-        }
-
-        if (findIndex(fields_, UName_) == -1)
+        dict.lookup("UName") >> UName_;
+    }
+    else
+    {
+        UName_ = "U";
+        if (dict.found("U"))
         {
-            FatalIOErrorInFunction
+            IOWarningInFunction
             (
                 dict
-            )   << "Velocity field for tracking " << UName_
-                << " should be present in the list of fields " << fields_
-                << exit(FatalIOError);
+            )   << "Using deprecated entry \"U\"."
+                << " Please use \"UName\" instead."
+                << endl;
+            dict.lookup("U") >> UName_;
         }
+    }
 
+    if (findIndex(fields_, UName_) == -1)
+    {
+        FatalIOErrorInFunction
+        (
+            dict
+        )   << "Velocity field for tracking " << UName_
+            << " should be present in the list of fields " << fields_
+            << exit(FatalIOError);
+    }
 
-        dict.lookup("trackForward") >> trackForward_;
-        dict.lookup("lifeTime") >> lifeTime_;
-        if (lifeTime_ < 1)
-        {
-            FatalErrorInFunction
-                << "Illegal value " << lifeTime_ << " for lifeTime"
-                << exit(FatalError);
-        }
-        trackLength_ = VGREAT;
-        if (dict.found("trackLength"))
-        {
-            dict.lookup("trackLength") >> trackLength_;
 
-            Info<< type() << " : fixed track length specified : "
-                << trackLength_ << nl << endl;
-        }
+    dict.lookup("trackForward") >> trackForward_;
+    dict.lookup("lifeTime") >> lifeTime_;
+    if (lifeTime_ < 1)
+    {
+        FatalErrorInFunction
+            << "Illegal value " << lifeTime_ << " for lifeTime"
+            << exit(FatalError);
+    }
+    trackLength_ = VGREAT;
+    if (dict.found("trackLength"))
+    {
+        dict.lookup("trackLength") >> trackLength_;
 
+        Info<< type() << " : fixed track length specified : "
+            << trackLength_ << nl << endl;
+    }
 
-        interpolationScheme_ = dict.lookupOrDefault
-        (
-            "interpolationScheme",
-            interpolationCellPoint<scalar>::typeName
-        );
 
-        //Info<< typeName << " using interpolation " << interpolationScheme_
-        //    << endl;
+    interpolationScheme_ = dict.lookupOrDefault
+    (
+        "interpolationScheme",
+        interpolationCellPoint<scalar>::typeName
+    );
 
-        cloudName_ = dict.lookupOrDefault<word>
-        (
-            "cloudName",
-            "wallBoundedStreamLine"
-        );
-        dict.lookup("seedSampleSet") >> seedSet_;
+    cloudName_ = dict.lookupOrDefault<word>
+    (
+        "cloudName",
+        "wallBoundedStreamLine"
+    );
+    dict.lookup("seedSampleSet") >> seedSet_;
 
-        const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
+    const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
 
-        const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs");
+    const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs");
 
-        sampledSetPtr_ = sampledSet::New
-        (
-            seedSet_,
-            mesh,
-            meshSearchMeshObject::New(mesh),
-            coeffsDict
-        );
-        coeffsDict.lookup("axis") >> sampledSetAxis_;
+    sampledSetPtr_ = sampledSet::New
+    (
+        seedSet_,
+        mesh,
+        meshSearchMeshObject::New(mesh),
+        coeffsDict
+    );
+    coeffsDict.lookup("axis") >> sampledSetAxis_;
 
-        scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat"));
-        vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat"));
+    scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat"));
+    vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat"));
 
 
-        // Make sure that the mesh is trackable
-        if (debug)
-        {
-            // 1. positive volume decomposition tets
-            faceSet faces(mesh, "lowQualityTetFaces", mesh.nFaces()/100+1);
-            if
+    // Make sure that the mesh is trackable
+    if (debug)
+    {
+        // 1. positive volume decomposition tets
+        faceSet faces(mesh, "lowQualityTetFaces", mesh.nFaces()/100+1);
+        if
+        (
+            polyMeshTetDecomposition::checkFaceTets
             (
-                polyMeshTetDecomposition::checkFaceTets
-                (
-                    mesh,
-                    polyMeshTetDecomposition::minTetQuality,
-                    true,
-                    &faces
-                )
+                mesh,
+                polyMeshTetDecomposition::minTetQuality,
+                true,
+                &faces
             )
-            {
-                label nFaces = returnReduce(faces.size(), sumOp<label>());
+        )
+        {
+            label nFaces = returnReduce(faces.size(), sumOp<label>());
 
-                WarningInFunction
-                    << "Found " << nFaces
-                    <<" faces with low quality or negative volume "
-                    << "decomposition tets. Writing to faceSet " << faces.name()
-                    << endl;
-            }
+            WarningInFunction
+                << "Found " << nFaces
+                <<" faces with low quality or negative volume "
+                << "decomposition tets. Writing to faceSet " << faces.name()
+                << endl;
+        }
 
-            // 2. all edges on a cell having two faces
-            EdgeMap<label> numFacesPerEdge;
-            forAll(mesh.cells(), celli)
-            {
-                const cell& cFaces = mesh.cells()[celli];
+        // 2. all edges on a cell having two faces
+        EdgeMap<label> numFacesPerEdge;
+        forAll(mesh.cells(), celli)
+        {
+            const cell& cFaces = mesh.cells()[celli];
 
-                numFacesPerEdge.clear();
+            numFacesPerEdge.clear();
 
-                forAll(cFaces, cFacei)
+            forAll(cFaces, cFacei)
+            {
+                label facei = cFaces[cFacei];
+                const face& f = mesh.faces()[facei];
+                forAll(f, fp)
                 {
-                    label facei = cFaces[cFacei];
-                    const face& f = mesh.faces()[facei];
-                    forAll(f, fp)
+                    const edge e(f[fp], f.nextLabel(fp));
+                    EdgeMap<label>::iterator eFnd =
+                        numFacesPerEdge.find(e);
+                    if (eFnd != numFacesPerEdge.end())
+                    {
+                        eFnd()++;
+                    }
+                    else
                     {
-                        const edge e(f[fp], f.nextLabel(fp));
-                        EdgeMap<label>::iterator eFnd =
-                            numFacesPerEdge.find(e);
-                        if (eFnd != numFacesPerEdge.end())
-                        {
-                            eFnd()++;
-                        }
-                        else
-                        {
-                            numFacesPerEdge.insert(e, 1);
-                        }
+                        numFacesPerEdge.insert(e, 1);
                     }
                 }
+            }
 
-                forAllConstIter(EdgeMap<label>, numFacesPerEdge, iter)
+            forAllConstIter(EdgeMap<label>, numFacesPerEdge, iter)
+            {
+                if (iter() != 2)
                 {
-                    if (iter() != 2)
-                    {
-                        FatalErrorInFunction
-                            << "problem cell:" << celli
-                            << abort(FatalError);
-                    }
+                    FatalErrorInFunction
+                        << "problem cell:" << celli
+                        << abort(FatalError);
                 }
             }
         }
@@ -624,75 +622,86 @@ void Foam::wallBoundedStreamLine::read(const dictionary& dict)
 }
 
 
-void Foam::wallBoundedStreamLine::execute()
+void Foam::functionObjects::wallBoundedStreamLine::execute()
 {}
 
 
-void Foam::wallBoundedStreamLine::end()
+void Foam::functionObjects::wallBoundedStreamLine::end()
 {}
 
 
-void Foam::wallBoundedStreamLine::timeSet()
+void Foam::functionObjects::wallBoundedStreamLine::timeSet()
 {}
 
 
-void Foam::wallBoundedStreamLine::write()
+void Foam::functionObjects::wallBoundedStreamLine::write()
 {
-    if (active_)
-    {
-        const Time& runTime = obr_.time();
-        const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
+    const Time& runTime = obr_.time();
+    const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_);
 
 
-        // Do all injection and tracking
-        track();
+    // Do all injection and tracking
+    track();
 
 
-        if (Pstream::parRun())
-        {
-            // Append slave tracks to master ones
-            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (Pstream::parRun())
+    {
+        // Append slave tracks to master ones
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-            globalIndex globalTrackIDs(allTracks_.size());
+        globalIndex globalTrackIDs(allTracks_.size());
 
-            // Construct a distribution map to pull all to the master.
-            labelListList sendMap(Pstream::nProcs());
-            labelListList recvMap(Pstream::nProcs());
+        // Construct a distribution map to pull all to the master.
+        labelListList sendMap(Pstream::nProcs());
+        labelListList recvMap(Pstream::nProcs());
 
-            if (Pstream::master())
-            {
-                // Master: receive all. My own first, then consecutive
-                // processors.
-                label trackI = 0;
+        if (Pstream::master())
+        {
+            // Master: receive all. My own first, then consecutive
+            // processors.
+            label trackI = 0;
 
-                forAll(recvMap, proci)
+            forAll(recvMap, proci)
+            {
+                labelList& fromProc = recvMap[proci];
+                fromProc.setSize(globalTrackIDs.localSize(proci));
+                forAll(fromProc, i)
                 {
-                    labelList& fromProc = recvMap[proci];
-                    fromProc.setSize(globalTrackIDs.localSize(proci));
-                    forAll(fromProc, i)
-                    {
-                        fromProc[i] = trackI++;
-                    }
+                    fromProc[i] = trackI++;
                 }
             }
+        }
 
-            labelList& toMaster = sendMap[0];
-            toMaster.setSize(globalTrackIDs.localSize());
-            forAll(toMaster, i)
-            {
-                toMaster[i] = i;
-            }
+        labelList& toMaster = sendMap[0];
+        toMaster.setSize(globalTrackIDs.localSize());
+        forAll(toMaster, i)
+        {
+            toMaster[i] = i;
+        }
 
-            const mapDistribute distMap
-            (
-                globalTrackIDs.size(),
-                sendMap.xfer(),
-                recvMap.xfer()
-            );
+        const mapDistribute distMap
+        (
+            globalTrackIDs.size(),
+            sendMap.xfer(),
+            recvMap.xfer()
+        );
 
 
-            // Distribute the track positions. Note: use scheduled comms
-            // to prevent buffering.
+        // Distribute the track positions. Note: use scheduled comms
+        // to prevent buffering.
+        mapDistribute::distribute
+        (
+            Pstream::scheduled,
+            distMap.schedule(),
+            distMap.constructSize(),
+            distMap.subMap(),
+            distMap.constructMap(),
+            allTracks_
+        );
+
+        // Distribute the scalars
+        forAll(allScalars_, scalarI)
+        {
             mapDistribute::distribute
             (
                 Pstream::scheduled,
@@ -700,193 +709,170 @@ void Foam::wallBoundedStreamLine::write()
                 distMap.constructSize(),
                 distMap.subMap(),
                 distMap.constructMap(),
-                allTracks_
+                allScalars_[scalarI]
             );
-
-            // Distribute the scalars
-            forAll(allScalars_, scalarI)
-            {
-                mapDistribute::distribute
-                (
-                    Pstream::scheduled,
-                    distMap.schedule(),
-                    distMap.constructSize(),
-                    distMap.subMap(),
-                    distMap.constructMap(),
-                    allScalars_[scalarI]
-                );
-            }
-            // Distribute the vectors
-            forAll(allVectors_, vectorI)
-            {
-                mapDistribute::distribute
-                (
-                    Pstream::scheduled,
-                    distMap.schedule(),
-                    distMap.constructSize(),
-                    distMap.subMap(),
-                    distMap.constructMap(),
-                    allVectors_[vectorI]
-                );
-            }
         }
-
-
-        label n = 0;
-        forAll(allTracks_, trackI)
+        // Distribute the vectors
+        forAll(allVectors_, vectorI)
         {
-            n += allTracks_[trackI].size();
+            mapDistribute::distribute
+            (
+                Pstream::scheduled,
+                distMap.schedule(),
+                distMap.constructSize(),
+                distMap.subMap(),
+                distMap.constructMap(),
+                allVectors_[vectorI]
+            );
         }
+    }
 
-        Info<< "    Tracks:" << allTracks_.size() << nl
-            << "    Total samples:" << n << endl;
 
+    label n = 0;
+    forAll(allTracks_, trackI)
+    {
+        n += allTracks_[trackI].size();
+    }
 
-        // Massage into form suitable for writers
-        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Info<< "    Tracks:" << allTracks_.size() << nl
+        << "    Total samples:" << n << endl;
 
-        if (Pstream::master() && allTracks_.size())
-        {
-            // Make output directory
 
-            fileName vtkPath
-            (
-                Pstream::parRun()
-              ? runTime.path()/".."/"postProcessing"/"sets"/name()
-              : runTime.path()/"postProcessing"/"sets"/name()
-            );
-            if (mesh.name() != fvMesh::defaultRegion)
-            {
-                vtkPath = vtkPath/mesh.name();
-            }
-            vtkPath = vtkPath/mesh.time().timeName();
+    // Massage into form suitable for writers
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-            mkDir(vtkPath);
+    if (Pstream::master() && allTracks_.size())
+    {
+        // Make output directory
 
-            // Convert track positions
+        fileName vtkPath
+        (
+            Pstream::parRun()
+          ? runTime.path()/".."/"postProcessing"/"sets"/name()
+          : runTime.path()/"postProcessing"/"sets"/name()
+        );
+        if (mesh.name() != fvMesh::defaultRegion)
+        {
+            vtkPath = vtkPath/mesh.name();
+        }
+        vtkPath = vtkPath/mesh.time().timeName();
 
-            PtrList<coordSet> tracks(allTracks_.size());
-            forAll(allTracks_, trackI)
-            {
-                tracks.set
+        mkDir(vtkPath);
+
+        // Convert track positions
+
+        PtrList<coordSet> tracks(allTracks_.size());
+        forAll(allTracks_, trackI)
+        {
+            tracks.set
+            (
+                trackI,
+                new coordSet
                 (
-                    trackI,
-                    new coordSet
-                    (
-                        "track" + Foam::name(trackI),
-                        sampledSetAxis_                 //"xyz"
-                    )
-                );
-                tracks[trackI].transfer(allTracks_[trackI]);
-            }
+                    "track" + Foam::name(trackI),
+                    sampledSetAxis_                 //"xyz"
+                )
+            );
+            tracks[trackI].transfer(allTracks_[trackI]);
+        }
+
+        // Convert scalar values
 
-            // Convert scalar values
+        if (allScalars_.size() > 0)
+        {
+            List<List<scalarField>> scalarValues(allScalars_.size());
 
-            if (allScalars_.size() > 0)
+            forAll(allScalars_, scalarI)
             {
-                List<List<scalarField>> scalarValues(allScalars_.size());
+                DynamicList<scalarList>& allTrackVals =
+                    allScalars_[scalarI];
+                scalarValues[scalarI].setSize(allTrackVals.size());
 
-                forAll(allScalars_, scalarI)
+                forAll(allTrackVals, trackI)
                 {
-                    DynamicList<scalarList>& allTrackVals =
-                        allScalars_[scalarI];
-                    scalarValues[scalarI].setSize(allTrackVals.size());
-
-                    forAll(allTrackVals, trackI)
-                    {
-                        scalarList& trackVals = allTrackVals[trackI];
-                        scalarValues[scalarI][trackI].transfer(trackVals);
-                    }
+                    scalarList& trackVals = allTrackVals[trackI];
+                    scalarValues[scalarI][trackI].transfer(trackVals);
                 }
+            }
 
-                fileName vtkFile
+            fileName vtkFile
+            (
+                vtkPath
+              / scalarFormatterPtr_().getFileName
                 (
-                    vtkPath
-                  / scalarFormatterPtr_().getFileName
-                    (
-                        tracks[0],
-                        scalarNames_
-                    )
-                );
+                    tracks[0],
+                    scalarNames_
+                )
+            );
 
-                Info<< "Writing data to " << vtkFile.path() << endl;
+            Info<< "Writing data to " << vtkFile.path() << endl;
 
-                scalarFormatterPtr_().write
-                (
-                    true,           // writeTracks
-                    tracks,
-                    scalarNames_,
-                    scalarValues,
-                    OFstream(vtkFile)()
-                );
-            }
+            scalarFormatterPtr_().write
+            (
+                true,           // writeTracks
+                tracks,
+                scalarNames_,
+                scalarValues,
+                OFstream(vtkFile)()
+            );
+        }
 
-            // Convert vector values
+        // Convert vector values
 
-            if (allVectors_.size() > 0)
+        if (allVectors_.size() > 0)
+        {
+            List<List<vectorField>> vectorValues(allVectors_.size());
+
+            forAll(allVectors_, vectorI)
             {
-                List<List<vectorField>> vectorValues(allVectors_.size());
+                DynamicList<vectorList>& allTrackVals =
+                    allVectors_[vectorI];
+                vectorValues[vectorI].setSize(allTrackVals.size());
 
-                forAll(allVectors_, vectorI)
+                forAll(allTrackVals, trackI)
                 {
-                    DynamicList<vectorList>& allTrackVals =
-                        allVectors_[vectorI];
-                    vectorValues[vectorI].setSize(allTrackVals.size());
-
-                    forAll(allTrackVals, trackI)
-                    {
-                        vectorList& trackVals = allTrackVals[trackI];
-                        vectorValues[vectorI][trackI].transfer(trackVals);
-                    }
+                    vectorList& trackVals = allTrackVals[trackI];
+                    vectorValues[vectorI][trackI].transfer(trackVals);
                 }
+            }
 
-                fileName vtkFile
+            fileName vtkFile
+            (
+                vtkPath
+              / vectorFormatterPtr_().getFileName
                 (
-                    vtkPath
-                  / vectorFormatterPtr_().getFileName
-                    (
-                        tracks[0],
-                        vectorNames_
-                    )
-                );
-
-                //Info<< "Writing vector data to " << vtkFile << endl;
+                    tracks[0],
+                    vectorNames_
+                )
+            );
 
-                vectorFormatterPtr_().write
-                (
-                    true,           // writeTracks
-                    tracks,
-                    vectorNames_,
-                    vectorValues,
-                    OFstream(vtkFile)()
-                );
-            }
+            vectorFormatterPtr_().write
+            (
+                true,           // writeTracks
+                tracks,
+                vectorNames_,
+                vectorValues,
+                OFstream(vtkFile)()
+            );
         }
     }
 }
 
 
-void Foam::wallBoundedStreamLine::updateMesh(const mapPolyMesh&)
+void Foam::functionObjects::wallBoundedStreamLine::updateMesh
+(
+    const mapPolyMesh&
+)
 {
     read(dict_);
 }
 
 
-void Foam::wallBoundedStreamLine::movePoints(const polyMesh&)
+void Foam::functionObjects::wallBoundedStreamLine::movePoints(const polyMesh&)
 {
     // Moving mesh affects the search tree
     read(dict_);
 }
 
 
-//void Foam::wallBoundedStreamLine::readUpdate
-//(const polyMesh::readUpdateState state)
-//{
-//    if (state != UNCHANGED)
-//    {
-//        read(dict_);
-//    }
-//}
-
-
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H
index dc920ef39565843c0680b3409f16cc298fd0a690..84c566be8350097628398f9b5b2f5f65377ef1ae 100644
--- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H
+++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::wallBoundedStreamLine
+    Foam::functionObjects::wallBoundedStreamLine
 
 Group
     grpFieldFunctionObjects
@@ -127,6 +127,9 @@ class mapPolyMesh;
 class meshSearch;
 class sampledSet;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                     Class wallBoundedStreamLine Declaration
 \*---------------------------------------------------------------------------*/
@@ -147,10 +150,6 @@ class wallBoundedStreamLine
         //- Load fields from files (not from objectRegistry)
         bool loadFromFiles_;
 
-        //- On/off switch
-        bool active_;
-
-
         //- List of fields to sample
         wordList fields_;
 
@@ -250,6 +249,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~wallBoundedStreamLine();
@@ -283,14 +292,12 @@ public:
 
         //- Update for mesh point-motion
         virtual void movePoints(const polyMesh&);
-
-        ////- Update for changes of mesh due to readUpdate
-        //virtual void readUpdate(const polyMesh::readUpdateState state);
 };
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.H b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.H
index 0ce95cc592a86b962edffd38271c508ab6795ed0..5461d29e6999f3258330b87afc402add9fe2e551 100644
--- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,7 +44,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<wallBoundedStreamLine>
+    typedef OutputFilterFunctionObject<functionObjects::wallBoundedStreamLine>
         wallBoundedStreamLineFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C
index f54bc9bf2b1dbbdec64aa5dbbd18507cd98b0109..ea0efdd451385fc450bcc9661c1e9ba61bfd1356 100644
--- a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C
+++ b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C
@@ -140,13 +140,11 @@ Foam::functionObjects::forceCoeffs::forceCoeffs
     Aref_(0.0)
 {
     read(dict);
-
     Info<< endl;
 }
 
 
-Foam::autoPtr<Foam::functionObjects::forceCoeffs>
-Foam::functionObjects::forceCoeffs::New
+bool Foam::functionObjects::forceCoeffs::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -154,17 +152,8 @@ Foam::functionObjects::forceCoeffs::New
     const bool loadFromFiles
 )
 {
-    if (isA<fvMesh>(obr))
-    {
-        return autoPtr<forceCoeffs>
-        (
-            new forceCoeffs(name, obr, dict, loadFromFiles)
-        );
-    }
-    else
-    {
-        return autoPtr<forceCoeffs>();
-    }
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
@@ -178,22 +167,19 @@ Foam::functionObjects::forceCoeffs::~forceCoeffs()
 
 void Foam::functionObjects::forceCoeffs::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        forces::read(dict);
+    forces::read(dict);
 
-        // Directions for lift and drag forces, and pitch moment
-        dict.lookup("liftDir") >> liftDir_;
-        dict.lookup("dragDir") >> dragDir_;
-        dict.lookup("pitchAxis") >> pitchAxis_;
+    // Directions for lift and drag forces, and pitch moment
+    dict.lookup("liftDir") >> liftDir_;
+    dict.lookup("dragDir") >> dragDir_;
+    dict.lookup("pitchAxis") >> pitchAxis_;
 
-        // Free stream velocity magnitude
-        dict.lookup("magUInf") >> magUInf_;
+    // Free stream velocity magnitude
+    dict.lookup("magUInf") >> magUInf_;
 
-        // Reference length and area scales
-        dict.lookup("lRef") >> lRef_;
-        dict.lookup("Aref") >> Aref_;
-    }
+    // Reference length and area scales
+    dict.lookup("lRef") >> lRef_;
+    dict.lookup("Aref") >> Aref_;
 }
 
 
@@ -213,11 +199,6 @@ void Foam::functionObjects::forceCoeffs::write()
 {
     forces::calcForcesMoment();
 
-    if (!active_)
-    {
-        return;
-    }
-
     if (Pstream::master())
     {
         functionObjectFiles::write();
diff --git a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H
index c061831135903373e56ab1c28a031f3cd4d42db8..cca8e312e1e66f4e3c216da3703f335b6ee6cc6f 100644
--- a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H
+++ b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::forceCoeffs
+    Foam::functionObjects::forceCoeffs
 
 Group
     grpForcesFunctionObjects
@@ -172,9 +172,9 @@ public:
             const bool loadFromFiles = false
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<forceCoeffs> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/forces/forces/forces.C b/src/postProcessing/functionObjects/forces/forces/forces.C
index 4775d1caa0c02ed0453b0c202296acd631a36f05..c8e63db2d633be74d2f995ce4d7de380278d2531 100644
--- a/src/postProcessing/functionObjects/forces/forces/forces.C
+++ b/src/postProcessing/functionObjects/forces/forces/forces.C
@@ -161,7 +161,7 @@ void Foam::functionObjects::forces::writeFileHeader(const label i)
 
 void Foam::functionObjects::forces::initialise()
 {
-    if (initialised_ || !active_)
+    if (initialised_)
     {
         return;
     }
@@ -170,11 +170,9 @@ void Foam::functionObjects::forces::initialise()
     {
         if (!obr_.foundObject<volVectorField>(fDName_))
         {
-            active_ = false;
-            WarningInFunction
-                << "Could not find " << fDName_ << " in database." << nl
-                << "    De-activating forces."
-                << endl;
+            FatalErrorInFunction
+                << "Could not find " << fDName_ << " in database."
+                << exit(FatalError);
         }
     }
     else
@@ -189,10 +187,9 @@ void Foam::functionObjects::forces::initialise()
             )
         )
         {
-            active_ = false;
-
-            WarningInFunction
-                << "Could not find " << UName_ << ", " << pName_;
+            FatalErrorInFunction
+                << "Could not find " << UName_ << ", " << pName_
+                << exit(FatalError);
 
             if (rhoName_ != "rhoInf")
             {
@@ -534,7 +531,6 @@ Foam::functionObjects::forces::forces
     functionObjectFiles(obr, name, createFileNames(dict)),
     name_(name),
     obr_(obr),
-    active_(true),
     log_(true),
     force_(3),
     moment_(3),
@@ -557,28 +553,15 @@ Foam::functionObjects::forces::forces
     binCumulative_(true),
     initialised_(false)
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (isA<fvMesh>(obr_))
-    {
-        if (readFields)
-        {
-            read(dict);
-            Info<< endl;
-        }
-    }
-    else
+    if (readFields)
     {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
+        read(dict);
+        Info<< endl;
     }
-
 }
 
 
-Foam::autoPtr<Foam::functionObjects::forces>
-Foam::functionObjects::forces::New
+bool Foam::functionObjects::forces::viable
 (
     const word& name,
     const objectRegistry& obr,
@@ -586,17 +569,8 @@ Foam::functionObjects::forces::New
     const bool loadFromFiles
 )
 {
-    if (isA<fvMesh>(obr))
-    {
-        return autoPtr<forces>
-        (
-            new forces(name, obr, dict, loadFromFiles)
-        );
-    }
-    else
-    {
-        return autoPtr<forces>();
-    }
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
@@ -616,7 +590,6 @@ Foam::functionObjects::forces::forces
     functionObjectFiles(obr, name, typeName),
     name_(name),
     obr_(obr),
-    active_(true),
     log_(true),
     force_(3),
     moment_(3),
@@ -657,133 +630,130 @@ Foam::functionObjects::forces::~forces()
 
 void Foam::functionObjects::forces::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        initialised_ = false;
+    initialised_ = false;
 
-        log_ = dict.lookupOrDefault<Switch>("log", false);
+    log_ = dict.lookupOrDefault<Switch>("log", false);
 
-        if (log_) Info<< type() << " " << name_ << ":" << nl;
+    if (log_) Info<< type() << " " << name_ << ":" << nl;
 
-        directForceDensity_ = dict.lookupOrDefault("directForceDensity", false);
+    directForceDensity_ = dict.lookupOrDefault("directForceDensity", false);
 
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
-        const polyBoundaryMesh& pbm = mesh.boundaryMesh();
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const polyBoundaryMesh& pbm = mesh.boundaryMesh();
 
-        patchSet_ = pbm.patchSet(wordReList(dict.lookup("patches")));
+    patchSet_ = pbm.patchSet(wordReList(dict.lookup("patches")));
 
-        if (directForceDensity_)
-        {
-            // Optional entry for fDName
-            fDName_ = dict.lookupOrDefault<word>("fDName", "fD");
-        }
-        else
-        {
-            // Optional entries U and p
-            pName_ = dict.lookupOrDefault<word>("pName", "p");
-            UName_ = dict.lookupOrDefault<word>("UName", "U");
-            rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho");
+    if (directForceDensity_)
+    {
+        // Optional entry for fDName
+        fDName_ = dict.lookupOrDefault<word>("fDName", "fD");
+    }
+    else
+    {
+        // Optional entries U and p
+        pName_ = dict.lookupOrDefault<word>("pName", "p");
+        UName_ = dict.lookupOrDefault<word>("UName", "U");
+        rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho");
 
-            // Reference density needed for incompressible calculations
-            rhoRef_ = readScalar(dict.lookup("rhoInf"));
+        // Reference density needed for incompressible calculations
+        rhoRef_ = readScalar(dict.lookup("rhoInf"));
 
-            // Reference pressure, 0 by default
-            pRef_ = dict.lookupOrDefault<scalar>("pRef", 0.0);
-        }
+        // Reference pressure, 0 by default
+        pRef_ = dict.lookupOrDefault<scalar>("pRef", 0.0);
+    }
 
-        coordSys_.clear();
+    coordSys_.clear();
 
-        // Centre of rotation for moment calculations
-        // specified directly, from coordinate system, or implicitly (0 0 0)
-        if (!dict.readIfPresent<point>("CofR", coordSys_.origin()))
-        {
-            coordSys_ = coordinateSystem(obr_, dict);
-            localSystem_ = true;
-        }
+    // Centre of rotation for moment calculations
+    // specified directly, from coordinate system, or implicitly (0 0 0)
+    if (!dict.readIfPresent<point>("CofR", coordSys_.origin()))
+    {
+        coordSys_ = coordinateSystem(obr_, dict);
+        localSystem_ = true;
+    }
+
+    dict.readIfPresent("porosity", porosity_);
+    if (porosity_)
+    {
+        if (log_) Info<< "    Including porosity effects" << endl;
+    }
+    else
+    {
+        if (log_) Info<< "    Not including porosity effects" << endl;
+    }
+
+    if (dict.found("binData"))
+    {
+        const dictionary& binDict(dict.subDict("binData"));
+        binDict.lookup("nBin") >> nBin_;
 
-        dict.readIfPresent("porosity", porosity_);
-        if (porosity_)
+        if (nBin_ < 0)
         {
-            if (log_) Info<< "    Including porosity effects" << endl;
+            FatalIOErrorInFunction(dict)
+                << "Number of bins (nBin) must be zero or greater"
+                << exit(FatalIOError);
         }
-        else
+        else if ((nBin_ == 0) || (nBin_ == 1))
         {
-            if (log_) Info<< "    Not including porosity effects" << endl;
+            nBin_ = 1;
+            forAll(force_, i)
+            {
+                force_[i].setSize(1);
+                moment_[i].setSize(1);
+            }
         }
 
-        if (dict.found("binData"))
+        if (nBin_ > 1)
         {
-            const dictionary& binDict(dict.subDict("binData"));
-            binDict.lookup("nBin") >> nBin_;
+            binDict.lookup("direction") >> binDir_;
+            binDir_ /= mag(binDir_);
 
-            if (nBin_ < 0)
+            binMin_ = GREAT;
+            scalar binMax = -GREAT;
+            forAllConstIter(labelHashSet, patchSet_, iter)
             {
-                FatalIOErrorInFunction(dict)
-                    << "Number of bins (nBin) must be zero or greater"
-                    << exit(FatalIOError);
+                label patchi = iter.key();
+                const polyPatch& pp = pbm[patchi];
+                scalarField d(pp.faceCentres() & binDir_);
+                binMin_ = min(min(d), binMin_);
+                binMax = max(max(d), binMax);
             }
-            else if ((nBin_ == 0) || (nBin_ == 1))
+            reduce(binMin_, minOp<scalar>());
+            reduce(binMax, maxOp<scalar>());
+
+            // slightly boost binMax so that region of interest is fully
+            // within bounds
+            binMax = 1.0001*(binMax - binMin_) + binMin_;
+
+            binDx_ = (binMax - binMin_)/scalar(nBin_);
+
+            // create the bin points used for writing
+            binPoints_.setSize(nBin_);
+            forAll(binPoints_, i)
             {
-                nBin_ = 1;
-                forAll(force_, i)
-                {
-                    force_[i].setSize(1);
-                    moment_[i].setSize(1);
-                }
+                binPoints_[i] = (i + 0.5)*binDir_*binDx_;
             }
 
-            if (nBin_ > 1)
+            binDict.lookup("cumulative") >> binCumulative_;
+
+            // allocate storage for forces and moments
+            forAll(force_, i)
             {
-                binDict.lookup("direction") >> binDir_;
-                binDir_ /= mag(binDir_);
-
-                binMin_ = GREAT;
-                scalar binMax = -GREAT;
-                forAllConstIter(labelHashSet, patchSet_, iter)
-                {
-                    label patchi = iter.key();
-                    const polyPatch& pp = pbm[patchi];
-                    scalarField d(pp.faceCentres() & binDir_);
-                    binMin_ = min(min(d), binMin_);
-                    binMax = max(max(d), binMax);
-                }
-                reduce(binMin_, minOp<scalar>());
-                reduce(binMax, maxOp<scalar>());
-
-                // slightly boost binMax so that region of interest is fully
-                // within bounds
-                binMax = 1.0001*(binMax - binMin_) + binMin_;
-
-                binDx_ = (binMax - binMin_)/scalar(nBin_);
-
-                // create the bin points used for writing
-                binPoints_.setSize(nBin_);
-                forAll(binPoints_, i)
-                {
-                    binPoints_[i] = (i + 0.5)*binDir_*binDx_;
-                }
-
-                binDict.lookup("cumulative") >> binCumulative_;
-
-                // allocate storage for forces and moments
-                forAll(force_, i)
-                {
-                    force_[i].setSize(nBin_);
-                    moment_[i].setSize(nBin_);
-                }
+                force_[i].setSize(nBin_);
+                moment_[i].setSize(nBin_);
             }
         }
+    }
 
-        if (nBin_ == 1)
-        {
-            // allocate storage for forces and moments
-            force_[0].setSize(1);
-            force_[1].setSize(1);
-            force_[2].setSize(1);
-            moment_[0].setSize(1);
-            moment_[1].setSize(1);
-            moment_[2].setSize(1);
-        }
+    if (nBin_ == 1)
+    {
+        // allocate storage for forces and moments
+        force_[0].setSize(1);
+        force_[1].setSize(1);
+        force_[2].setSize(1);
+        moment_[0].setSize(1);
+        moment_[1].setSize(1);
+        moment_[2].setSize(1);
     }
 }
 
@@ -804,11 +774,6 @@ void Foam::functionObjects::forces::write()
 {
     calcForcesMoment();
 
-    if (!active_)
-    {
-        return;
-    }
-
     if (Pstream::master())
     {
         functionObjectFiles::write();
@@ -826,11 +791,6 @@ void Foam::functionObjects::forces::calcForcesMoment()
 {
     initialise();
 
-    if (!active_)
-    {
-        return;
-    }
-
     force_[0] = Zero;
     force_[1] = Zero;
     force_[2] = Zero;
diff --git a/src/postProcessing/functionObjects/forces/forces/forces.H b/src/postProcessing/functionObjects/forces/forces/forces.H
index 1c5c2befbbe94bc018db2076c94941b2f9c9c9c5..e6a85853c771931e9be6c12683db88afebd93d49 100644
--- a/src/postProcessing/functionObjects/forces/forces/forces.H
+++ b/src/postProcessing/functionObjects/forces/forces/forces.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::forces
+    Foam::functionObjects::forces
 
 Group
     grpForcesFunctionObjects
@@ -156,9 +156,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Switch to send output to Info as well as to file
         Switch log_;
 
@@ -296,9 +293,9 @@ public:
             const bool readFields = true
         );
 
-        //- Construct on free-store and return pointer if successful
-        //  otherwise return a null-pointer
-        static autoPtr<forces> New
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
         (
             const word& name,
             const objectRegistry&,
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C
index 63b657a3e9f8017b515b8e052ea02b3401c1cedf..9cb0229d4dd231af3756f91785b3b43108297cf3 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,13 +32,16 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(calcFvcDiv, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(calcFvcDiv, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-Foam::volScalarField& Foam::calcFvcDiv::divField
+Foam::volScalarField& Foam::functionObjects::calcFvcDiv::divField
 (
     const word& divName,
     const dimensionSet& dims
@@ -76,7 +79,7 @@ Foam::volScalarField& Foam::calcFvcDiv::divField
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::calcFvcDiv::calcFvcDiv
+Foam::functionObjects::calcFvcDiv::calcFvcDiv
 (
     const word& name,
     const objectRegistry& obr,
@@ -86,93 +89,82 @@ Foam::calcFvcDiv::calcFvcDiv
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldName_("undefined-fieldName"),
     resultName_("undefined-resultName")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating." << nl
-            << endl;
-    }
-
     read(dict);
 }
 
 
+bool Foam::functionObjects::calcFvcDiv::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::calcFvcDiv::~calcFvcDiv()
+Foam::functionObjects::calcFvcDiv::~calcFvcDiv()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::calcFvcDiv::read(const dictionary& dict)
+void Foam::functionObjects::calcFvcDiv::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        dict.lookup("fieldName") >> fieldName_;
-        dict.lookup("resultName") >> resultName_;
+    dict.lookup("fieldName") >> fieldName_;
+    dict.lookup("resultName") >> resultName_;
 
-        if (resultName_ == "none")
-        {
-            resultName_ = "fvc::div(" + fieldName_ + ")";
-        }
+    if (resultName_ == "none")
+    {
+        resultName_ = "fvc::div(" + fieldName_ + ")";
     }
 }
 
 
-void Foam::calcFvcDiv::execute()
+void Foam::functionObjects::calcFvcDiv::execute()
 {
-    if (active_)
-    {
-        bool processed = false;
+    bool processed = false;
 
-        calcDiv<surfaceScalarField>(fieldName_, resultName_, processed);
-        calcDiv<volVectorField>(fieldName_, resultName_, processed);
+    calcDiv<surfaceScalarField>(fieldName_, resultName_, processed);
+    calcDiv<volVectorField>(fieldName_, resultName_, processed);
 
-        if (!processed)
-        {
-            WarningInFunction
-                << "Unprocessed field " << fieldName_ << endl;
-        }
+    if (!processed)
+    {
+        WarningInFunction
+            << "Unprocessed field " << fieldName_ << endl;
     }
 }
 
 
-void Foam::calcFvcDiv::end()
+void Foam::functionObjects::calcFvcDiv::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::calcFvcDiv::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::calcFvcDiv::timeSet()
+{}
 
 
-void Foam::calcFvcDiv::write()
+void Foam::functionObjects::calcFvcDiv::write()
 {
-    if (active_)
+    if (obr_.foundObject<regIOobject>(resultName_))
     {
-        if (obr_.foundObject<regIOobject>(resultName_))
-        {
-            const regIOobject& field =
-                obr_.lookupObject<regIOobject>(resultName_);
+        const regIOobject& field =
+            obr_.lookupObject<regIOobject>(resultName_);
 
-            Info<< type() << " " << name_ << " output:" << nl
-                << "    writing field " << field.name() << nl << endl;
+        Info<< type() << " " << name_ << " output:" << nl
+            << "    writing field " << field.name() << nl << endl;
 
-            field.write();
-        }
+        field.write();
     }
 }
 
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H
index 447b00c92c8b36168ed5d42061964247700de7a5..bc96f8ffb094697886f4281f7e4679c202f96c39 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::calcFvcDiv
+    Foam::functionObjects::calcFvcDiv
 
 Group
     grpFVFunctionObjects
@@ -59,6 +59,9 @@ class polyMesh;
 class mapPolyMesh;
 class dimensionSet;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                          Class calcFvcDiv Declaration
 \*---------------------------------------------------------------------------*/
@@ -73,9 +76,6 @@ class calcFvcDiv
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of field to process
         word fieldName_;
 
@@ -126,6 +126,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~calcFvcDiv();
@@ -166,6 +176,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H
index 5cc8af7332b65cdb8fdd4b6fa2ec6c2d8d6179d1..5446371ec0131b1813cc530d3df92a4339c4f544 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<calcFvcDiv> calcFvcDivFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::calcFvcDiv>
+        calcFvcDivFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C
index d7561744dc939851b266249b87fa18c53d22596e..6659dccbfb79d516f3026aa915c4464db6795667 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,7 +29,7 @@ License
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class FieldType>
-void Foam::calcFvcDiv::calcDiv
+void Foam::functionObjects::calcFvcDiv::calcDiv
 (
     const word& fieldName,
     const word& resultName,
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C
index 96a62f3df86b709c2d20e557f4b0ac8b5967ece9..31b17b9e0a87321b384a0f584cb89b94376455ee 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,13 +32,16 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(calcFvcGrad, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(calcFvcGrad, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::calcFvcGrad::calcFvcGrad
+Foam::functionObjects::calcFvcGrad::calcFvcGrad
 (
     const word& name,
     const objectRegistry& obr,
@@ -48,93 +51,82 @@ Foam::calcFvcGrad::calcFvcGrad
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldName_("undefined-fieldName"),
     resultName_("undefined-resultName")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating." << nl
-            << endl;
-    }
-
     read(dict);
 }
 
 
+bool Foam::functionObjects::calcFvcGrad::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::calcFvcGrad::~calcFvcGrad()
+Foam::functionObjects::calcFvcGrad::~calcFvcGrad()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::calcFvcGrad::read(const dictionary& dict)
+void Foam::functionObjects::calcFvcGrad::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        dict.lookup("fieldName") >> fieldName_;
-        dict.lookup("resultName") >> resultName_;
+    dict.lookup("fieldName") >> fieldName_;
+    dict.lookup("resultName") >> resultName_;
 
-        if (resultName_ == "none")
-        {
-            resultName_ = "fvc::grad(" + fieldName_ + ")";
-        }
+    if (resultName_ == "none")
+    {
+        resultName_ = "fvc::grad(" + fieldName_ + ")";
     }
 }
 
 
-void Foam::calcFvcGrad::execute()
+void Foam::functionObjects::calcFvcGrad::execute()
 {
-    if (active_)
-    {
-        bool processed = false;
+    bool processed = false;
 
-        calcGrad<scalar>(fieldName_, resultName_, processed);
-        calcGrad<vector>(fieldName_, resultName_, processed);
+    calcGrad<scalar>(fieldName_, resultName_, processed);
+    calcGrad<vector>(fieldName_, resultName_, processed);
 
-        if (!processed)
-        {
-            WarningInFunction
-                << "Unprocessed field " << fieldName_ << endl;
-        }
+    if (!processed)
+    {
+        WarningInFunction
+            << "Unprocessed field " << fieldName_ << endl;
     }
 }
 
 
-void Foam::calcFvcGrad::end()
+void Foam::functionObjects::calcFvcGrad::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::calcFvcGrad::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::calcFvcGrad::timeSet()
+{}
 
 
-void Foam::calcFvcGrad::write()
+void Foam::functionObjects::calcFvcGrad::write()
 {
-    if (active_)
+    if (obr_.foundObject<regIOobject>(resultName_))
     {
-        if (obr_.foundObject<regIOobject>(resultName_))
-        {
-            const regIOobject& field =
-                obr_.lookupObject<regIOobject>(resultName_);
+        const regIOobject& field =
+            obr_.lookupObject<regIOobject>(resultName_);
 
-            Info<< type() << " " << name_ << " output:" << nl
-                << "    writing field " << field.name() << nl << endl;
+        Info<< type() << " " << name_ << " output:" << nl
+            << "    writing field " << field.name() << nl << endl;
 
-            field.write();
-        }
+        field.write();
     }
 }
 
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H
index bdaf5383ed5b7aa90f1e51063e5d7587dea5b1d9..f1b67ae08b5812583c57bca9f159f9593a8af65c 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::calcFvcGrad
+    Foam::functionObjects::calcFvcGrad
 
 Group
     grpFVFunctionObjects
@@ -59,6 +59,9 @@ class polyMesh;
 class mapPolyMesh;
 class dimensionSet;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                          Class calcFvcGrad Declaration
 \*---------------------------------------------------------------------------*/
@@ -73,9 +76,6 @@ class calcFvcGrad
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of field to process
         word fieldName_;
 
@@ -129,6 +129,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~calcFvcGrad();
@@ -169,6 +179,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H
index 0c3f5806976dd07ed117f016a94d6cbe70ec94b3..a36516740d21e5d67d437bcb9ed5b2a4b950c344 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<calcFvcGrad> calcFvcGradFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::calcFvcGrad>
+        calcFvcGradFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C
index 0a570b9872cb1b3ba845912ab44ef73abf61f4dc..3f20974adffc9afdafbc77efecdef0cca6bb38da 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C
@@ -35,7 +35,11 @@ Foam::GeometricField
     Foam::fvPatchField,
     Foam::volMesh
 >&
-Foam::calcFvcGrad::gradField(const word& gradName, const dimensionSet& dims)
+Foam::functionObjects::calcFvcGrad::gradField
+(
+    const word& gradName,
+    const dimensionSet& dims
+)
 {
     Info<< "gradField" << endl;
 
@@ -78,7 +82,7 @@ Foam::calcFvcGrad::gradField(const word& gradName, const dimensionSet& dims)
 
 
 template<class Type>
-void Foam::calcFvcGrad::calcGrad
+void Foam::functionObjects::calcFvcGrad::calcGrad
 (
     const word& fieldName,
     const word& resultName,
diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C
index f867746c3c8097f3193103ce641871aa389388ce..73e0b8b28687719ef31afa178f6cdc45affbce69 100644
--- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C
+++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,13 +32,16 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(calcMag, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(calcMag, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::calcMag::calcMag
+Foam::functionObjects::calcMag::calcMag
 (
     const word& name,
     const objectRegistry& obr,
@@ -48,96 +51,85 @@ Foam::calcMag::calcMag
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldName_("undefined-fieldName"),
     resultName_("undefined-resultName")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating." << nl
-            << endl;
-    }
-
     read(dict);
 }
 
 
+bool Foam::functionObjects::calcMag::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::calcMag::~calcMag()
+Foam::functionObjects::calcMag::~calcMag()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::calcMag::read(const dictionary& dict)
+void Foam::functionObjects::calcMag::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        dict.lookup("fieldName") >> fieldName_;
-        dict.lookup("resultName") >> resultName_;
+    dict.lookup("fieldName") >> fieldName_;
+    dict.lookup("resultName") >> resultName_;
 
-        if (resultName_ == "none")
-        {
-            resultName_ = "mag(" + fieldName_ + ")";
-        }
+    if (resultName_ == "none")
+    {
+        resultName_ = "mag(" + fieldName_ + ")";
     }
 }
 
 
-void Foam::calcMag::execute()
+void Foam::functionObjects::calcMag::execute()
 {
-    if (active_)
-    {
-        bool processed = false;
-
-        calc<scalar>(fieldName_, resultName_, processed);
-        calc<vector>(fieldName_, resultName_, processed);
-        calc<sphericalTensor>(fieldName_, resultName_, processed);
-        calc<symmTensor>(fieldName_, resultName_, processed);
-        calc<tensor>(fieldName_, resultName_, processed);
-
-        if (!processed)
-        {
-            WarningInFunction
-                << "Unprocessed field " << fieldName_ << endl;
-        }
-    }
-}
+    bool processed = false;
 
+    calc<scalar>(fieldName_, resultName_, processed);
+    calc<vector>(fieldName_, resultName_, processed);
+    calc<sphericalTensor>(fieldName_, resultName_, processed);
+    calc<symmTensor>(fieldName_, resultName_, processed);
+    calc<tensor>(fieldName_, resultName_, processed);
 
-void Foam::calcMag::end()
-{
-    if (active_)
+    if (!processed)
     {
-        execute();
+        WarningInFunction
+            << "Unprocessed field " << fieldName_ << endl;
     }
 }
 
 
-void Foam::calcMag::timeSet()
+void Foam::functionObjects::calcMag::end()
 {
-    // Do nothing
+    execute();
 }
 
 
-void Foam::calcMag::write()
+void Foam::functionObjects::calcMag::timeSet()
+{}
+
+
+void Foam::functionObjects::calcMag::write()
 {
-    if (active_)
+    if (obr_.foundObject<regIOobject>(resultName_))
     {
-        if (obr_.foundObject<regIOobject>(resultName_))
-        {
-            const regIOobject& field =
-                obr_.lookupObject<regIOobject>(resultName_);
+        const regIOobject& field =
+            obr_.lookupObject<regIOobject>(resultName_);
 
-            Info<< type() << " " << name_ << " output:" << nl
-                << "    writing field " << field.name() << nl << endl;
+        Info<< type() << " " << name_ << " output:" << nl
+            << "    writing field " << field.name() << nl << endl;
 
-            field.write();
-        }
+        field.write();
     }
 }
 
diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H
index 76f10721117618a00c503b554b219c8e91c69fc7..d8cb5ca3d50ce001768d27fa125982c1587f9d6c 100644
--- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H
+++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::calcMag
+    Foam::functionObjects::calcMag
 
 Group
     grpFVFunctionObjects
@@ -59,6 +59,9 @@ class polyMesh;
 class mapPolyMesh;
 class dimensionSet;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                            Class calcMag Declaration
 \*---------------------------------------------------------------------------*/
@@ -73,9 +76,6 @@ class calcMag
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of field to process
         word fieldName_;
 
@@ -123,6 +123,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~calcMag();
@@ -163,6 +173,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H
index ea143666e13716be46d6aa79ad5812a940d52f3f..b83e6817a519e185cd04c4b32d99245fb77e40ac 100644
--- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H
+++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<calcMag> calcMagFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::calcMag>
+        calcMagFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C
index f9db9368f7d4ae78084845a2a0fcf1d03b3d8ad7..8b942e95a6fb3840fb76d1eaec7138d5d60636c3 100644
--- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C
+++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,7 +29,7 @@ License
 #include "surfaceFields.H"
 
 template<class FieldType>
-FieldType& Foam::calcMag::magField
+FieldType& Foam::functionObjects::calcMag::magField
 (
     const word& magName,
     const dimensionSet& dims
@@ -68,7 +68,7 @@ FieldType& Foam::calcMag::magField
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::calcMag::calc
+void Foam::functionObjects::calcMag::calc
 (
     const word& fieldName,
     const word& resultName,
diff --git a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.C b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.C
index 34ba7d032fa24300278ee8a7bf05a04d7199072f..8706db08595ab0d5009ac9cd1b141ff44a22ead9 100644
--- a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.C
+++ b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,35 +34,34 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(abortCalculation, 0);
-}
-
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
+namespace functionObjects
 {
-    template<>
-    const char* Foam::NamedEnum
-    <
-        Foam::abortCalculation::actionType,
-        3
-    >::names[] =
-    {
-        "noWriteNow",
-        "writeNow",
-        "nextWrite"
-    };
+    defineTypeNameAndDebug(abortCalculation, 0);
+}
 }
 
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::abortCalculation::actionType,
+    3
+>::names[] =
+{
+    "noWriteNow",
+    "writeNow",
+    "nextWrite"
+};
 
-const Foam::NamedEnum<Foam::abortCalculation::actionType, 3>
-    Foam::abortCalculation::actionTypeNames_;
+const Foam::NamedEnum
+<
+    Foam::functionObjects::abortCalculation::actionType,
+    3
+> Foam::functionObjects::abortCalculation::actionTypeNames_;
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::abortCalculation::removeFile() const
+void Foam::functionObjects::abortCalculation::removeFile() const
 {
     bool hasAbort = isFile(abortFile_);
     reduce(hasAbort, orOp<bool>());
@@ -77,7 +76,7 @@ void Foam::abortCalculation::removeFile() const
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::abortCalculation::abortCalculation
+Foam::functionObjects::abortCalculation::abortCalculation
 (
     const word& name,
     const objectRegistry& obr,
@@ -98,15 +97,28 @@ Foam::abortCalculation::abortCalculation
 }
 
 
+bool Foam::functionObjects::abortCalculation::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    return true;
+}
+
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::abortCalculation::~abortCalculation()
+Foam::functionObjects::abortCalculation::~abortCalculation()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::abortCalculation::read(const dictionary& dict)
+void Foam::functionObjects::abortCalculation::read(const dictionary& dict)
 {
     if (dict.found("action"))
     {
@@ -124,7 +136,7 @@ void Foam::abortCalculation::read(const dictionary& dict)
 }
 
 
-void Foam::abortCalculation::execute()
+void Foam::functionObjects::abortCalculation::execute()
 {
     bool hasAbort = isFile(abortFile_);
     reduce(hasAbort, orOp<bool>());
@@ -173,22 +185,18 @@ void Foam::abortCalculation::execute()
 }
 
 
-void Foam::abortCalculation::end()
+void Foam::functionObjects::abortCalculation::end()
 {
     removeFile();
 }
 
 
-void Foam::abortCalculation::timeSet()
-{
-    // Do nothing - only valid on execute
-}
+void Foam::functionObjects::abortCalculation::timeSet()
+{}
 
 
-void Foam::abortCalculation::write()
-{
-    // Do nothing - only valid on execute
-}
+void Foam::functionObjects::abortCalculation::write()
+{}
 
 
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H
index 95e1994fd47d6ce9022bc08362b2baafd211310e..21c0650080ded7fb162bcb09590380e1f84a0ec0 100644
--- a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H
+++ b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::abortCalculation
+    Foam::functionObjects::abortCalculation
 
 Group
     grpJobControlFunctionObjects
@@ -58,6 +58,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                       Class abortCalculation Declaration
 \*---------------------------------------------------------------------------*/
@@ -124,6 +127,16 @@ public:
             const bool loadFromFilesUnused = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~abortCalculation();
@@ -164,6 +177,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.H b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.H
index 920677f16a268c129a9bd9e64b578f67d5b9e1e4..97150ced98d50470e4cb13172eab38654533cc49 100644
--- a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.H
+++ b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<abortCalculation>
+    typedef OutputFilterFunctionObject<functionObjects::abortCalculation>
         abortCalculationFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.C b/src/postProcessing/functionObjects/systemCall/systemCall.C
index 1ad82b58d359d98648e76eed4e56cc4e88fd8d67..2462b526fedbfbd0967236210990ae33b5c937ea 100644
--- a/src/postProcessing/functionObjects/systemCall/systemCall.C
+++ b/src/postProcessing/functionObjects/systemCall/systemCall.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,13 +31,16 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(systemCall, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(systemCall, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::systemCall::systemCall
+Foam::functionObjects::systemCall::systemCall
 (
     const word& name,
     const objectRegistry&,
@@ -54,15 +57,27 @@ Foam::systemCall::systemCall
 }
 
 
+bool Foam::functionObjects::systemCall::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    return true;
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::systemCall::~systemCall()
+Foam::functionObjects::systemCall::~systemCall()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::systemCall::read(const dictionary& dict)
+void Foam::functionObjects::systemCall::read(const dictionary& dict)
 {
     dict.readIfPresent("executeCalls", executeCalls_);
     dict.readIfPresent("endCalls", endCalls_);
@@ -93,7 +108,7 @@ void Foam::systemCall::read(const dictionary& dict)
 }
 
 
-void Foam::systemCall::execute()
+void Foam::functionObjects::systemCall::execute()
 {
     forAll(executeCalls_, callI)
     {
@@ -102,7 +117,7 @@ void Foam::systemCall::execute()
 }
 
 
-void Foam::systemCall::end()
+void Foam::functionObjects::systemCall::end()
 {
     forAll(endCalls_, callI)
     {
@@ -111,13 +126,11 @@ void Foam::systemCall::end()
 }
 
 
-void Foam::systemCall::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::systemCall::timeSet()
+{}
 
 
-void Foam::systemCall::write()
+void Foam::functionObjects::systemCall::write()
 {
     forAll(writeCalls_, callI)
     {
diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.H b/src/postProcessing/functionObjects/systemCall/systemCall.H
index eb9202c01b3e10d1f3e570ada671e45645912f26..38ec3deff43a60d950d7603c5175fd033aa62297 100644
--- a/src/postProcessing/functionObjects/systemCall/systemCall.H
+++ b/src/postProcessing/functionObjects/systemCall/systemCall.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::systemCall
+    Foam::functionObjects::systemCall
 
 Group
     grpFunctionObjects
@@ -100,6 +100,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                          Class systemCall Declaration
 \*---------------------------------------------------------------------------*/
@@ -152,6 +155,16 @@ public:
             const bool loadFromFilesUnused = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~systemCall();
@@ -192,6 +205,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H
index 574b7598597c2faba4ca5c61bcb5ce872d9b66a4..b0fdf35ea61f685747fb6134550e22a0b1f5002b 100644
--- a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H
+++ b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<systemCall>
+    typedef OutputFilterFunctionObject<functionObjects::systemCall>
         systemCallFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C
index a98e6f2c0071f6104c48a319a191053586f05662..13a4e61c936747e17c76d169dd6470e1e2f45834 100644
--- a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C
+++ b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C
@@ -31,15 +31,18 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(CourantNo, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 Foam::tmp<Foam::volScalarField::Internal>
-Foam::CourantNo::byRho
+Foam::functionObjects::CourantNo::byRho
 (
     const tmp<volScalarField::Internal>& Co
 ) const
@@ -57,7 +60,7 @@ Foam::CourantNo::byRho
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::CourantNo::CourantNo
+Foam::functionObjects::CourantNo::CourantNo
 (
     const word& name,
     const objectRegistry& obr,
@@ -67,118 +70,105 @@ Foam::CourantNo::CourantNo
 :
     name_(name),
     obr_(obr),
-    active_(true),
     phiName_("phi"),
     rhoName_("rho")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volScalarField* CourantNoPtr
+    volScalarField* CourantNoPtr
+    (
+        new volScalarField
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    type(),
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                type(),
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("0", dimless, 0.0),
-                zeroGradientFvPatchScalarField::typeName
-            )
-        );
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("0", dimless, 0.0),
+            zeroGradientFvPatchScalarField::typeName
+        )
+    );
+
+    mesh.objectRegistry::store(CourantNoPtr);
+}
 
-        mesh.objectRegistry::store(CourantNoPtr);
-    }
+
+bool Foam::functionObjects::CourantNo::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::CourantNo::~CourantNo()
+Foam::functionObjects::CourantNo::~CourantNo()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::CourantNo::read(const dictionary& dict)
+void Foam::functionObjects::CourantNo::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
-        rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho");
-    }
+    phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
+    rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho");
 }
 
 
-void Foam::CourantNo::execute()
+void Foam::functionObjects::CourantNo::execute()
 {
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
-
-        const surfaceScalarField& phi =
-            mesh.lookupObject<surfaceScalarField>(phiName_);
-
-        volScalarField& Co =
-            const_cast<volScalarField&>
-            (
-                mesh.lookupObject<volScalarField>(type())
-            );
-
-        Co.ref() = byRho
-        (
-            (0.5*mesh.time().deltaT())
-           *fvc::surfaceSum(mag(phi))()()
-           /mesh.V()
-        );
-        Co.correctBoundaryConditions();
-    }
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
+
+    const surfaceScalarField& phi =
+        mesh.lookupObject<surfaceScalarField>(phiName_);
+
+    volScalarField& Co = const_cast<volScalarField&>
+    (
+        mesh.lookupObject<volScalarField>(type())
+    );
+
+    Co.ref() = byRho
+    (
+        (0.5*mesh.time().deltaT())
+       *fvc::surfaceSum(mag(phi))()()
+       /mesh.V()
+    );
+    Co.correctBoundaryConditions();
 }
 
 
-void Foam::CourantNo::end()
+void Foam::functionObjects::CourantNo::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::CourantNo::timeSet()
+void Foam::functionObjects::CourantNo::timeSet()
 {}
 
 
-void Foam::CourantNo::write()
+void Foam::functionObjects::CourantNo::write()
 {
-    if (active_)
-    {
-        const volScalarField& CourantNo =
-            obr_.lookupObject<volScalarField>(type());
+    const volScalarField& CourantNo =
+        obr_.lookupObject<volScalarField>(type());
 
-        Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << CourantNo.name() << nl
-            << endl;
+    Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << CourantNo.name() << nl
+        << endl;
 
-        CourantNo.write();
-    }
+    CourantNo.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H
index eff16de0cb289eeef526d97884dc8dbf52b8a675..a0796ea7a07712e0007befd3bb7255d3e6815c5e 100644
--- a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H
+++ b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::CourantNo
+    Foam::functionObjects::CourantNo
 
 Group
     grpUtilitiesFunctionObjects
@@ -54,6 +54,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                           Class CourantNo Declaration
 \*---------------------------------------------------------------------------*/
@@ -68,9 +71,6 @@ class CourantNo
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of flux field, default is "phi"
         word phiName_;
 
@@ -111,6 +111,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~CourantNo();
@@ -151,6 +161,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H
index 1586e771abdd78d3e69e461223ec65942054cb2e..6bab35fc09206c5a4af99f89799db175d5a1b4fb 100644
--- a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<CourantNo> CourantNoFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::CourantNo>
+        CourantNoFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H b/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H
index 5be7eb4eb9f764bfb846ebfcb90a5539d8eeddbe..33006b3e504beda0d29e9f4b8a4eb5478fc6ffc2 100644
--- a/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H
+++ b/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<CourantNo> IOCourantNo;
+    typedef IOOutputFilter<functionObjects::CourantNo> IOCourantNo;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H b/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H
index 0aacf47e94ca018fc96f4895622e9b14b5890985..d8fd9a81adb4086caeb250ee2b65dff6530f951b 100644
--- a/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H
+++ b/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<Lambda2> IOLambda2;
+    typedef IOOutputFilter<functionObjects::Lambda2> IOLambda2;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C
index 1fc38cd5bf1a353a8facf2f8a25d70527ceffc5a..23345a25ae4e9ef2b7164c12846f70d68eb67fd4 100644
--- a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C
+++ b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,14 +32,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(Lambda2, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::Lambda2::Lambda2
+Foam::functionObjects::Lambda2::Lambda2
 (
     const word& name,
     const objectRegistry& obr,
@@ -49,119 +52,105 @@ Foam::Lambda2::Lambda2
 :
     name_(name),
     obr_(obr),
-    active_(true),
     UName_("U")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volScalarField* Lambda2Ptr
+    volScalarField* Lambda2Ptr
+    (
+        new volScalarField
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    type(),
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                type(),
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("0", dimless/sqr(dimTime), 0.0)
-            )
-        );
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("0", dimless/sqr(dimTime), 0.0)
+        )
+    );
+
+    mesh.objectRegistry::store(Lambda2Ptr);
+}
 
-        mesh.objectRegistry::store(Lambda2Ptr);
-    }
+
+bool Foam::functionObjects::Lambda2::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::Lambda2::~Lambda2()
+Foam::functionObjects::Lambda2::~Lambda2()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::Lambda2::read(const dictionary& dict)
+void Foam::functionObjects::Lambda2::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        UName_ = dict.lookupOrDefault<word>("UName", "U");
-    }
+    UName_ = dict.lookupOrDefault<word>("UName", "U");
 }
 
 
-void Foam::Lambda2::execute()
+void Foam::functionObjects::Lambda2::execute()
 {
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        const volVectorField& U =
-            mesh.lookupObject<volVectorField>(UName_);
+    const volVectorField& U =
+        mesh.lookupObject<volVectorField>(UName_);
 
-        const volTensorField gradU(fvc::grad(U));
+    const volTensorField gradU(fvc::grad(U));
 
-        const volTensorField SSplusWW
+    const volTensorField SSplusWW
+    (
+        (symm(gradU) & symm(gradU))
+      + (skew(gradU) & skew(gradU))
+    );
+
+    volScalarField& Lambda2 =
+        const_cast<volScalarField&>
         (
-            (symm(gradU) & symm(gradU))
-          + (skew(gradU) & skew(gradU))
+            mesh.lookupObject<volScalarField>(type())
         );
 
-        volScalarField& Lambda2 =
-            const_cast<volScalarField&>
-            (
-                mesh.lookupObject<volScalarField>(type())
-            );
-
-        Lambda2 = -eigenValues(SSplusWW)().component(vector::Y);
-    }
+    Lambda2 = -eigenValues(SSplusWW)().component(vector::Y);
 }
 
 
-void Foam::Lambda2::end()
+void Foam::functionObjects::Lambda2::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::Lambda2::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::Lambda2::timeSet()
+{}
 
 
-void Foam::Lambda2::write()
+void Foam::functionObjects::Lambda2::write()
 {
-    if (active_)
-    {
-        const volScalarField& Lambda2 =
-            obr_.lookupObject<volScalarField>(type());
+    const volScalarField& Lambda2 =
+        obr_.lookupObject<volScalarField>(type());
 
-        Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << Lambda2.name() << nl
-            << endl;
+    Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << Lambda2.name() << nl
+        << endl;
 
-        Lambda2.write();
-    }
+    Lambda2.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H
index f4360f46404b714b6043422eb95bbc71042a307d..a394b9b5a815205294425594df0c1999aa61710e 100644
--- a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H
+++ b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::Lambda2
+    Foam::functionObjects::Lambda2
 
 Group
     grpUtilitiesFunctionObjects
@@ -57,6 +57,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                           Class Lambda2 Declaration
 \*---------------------------------------------------------------------------*/
@@ -71,9 +74,6 @@ class Lambda2
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of velocity field, default is "U"
         word UName_;
 
@@ -105,6 +105,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~Lambda2();
@@ -145,6 +155,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H
index e63d04a721dc2992e270aa4bf5d9d17d708495a4..63031374cbb46c4096c50853456d43cd4ff5fd37 100644
--- a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<Lambda2> Lambda2FunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::Lambda2>
+        Lambda2FunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H b/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H
index ea49009d559ed41bcc7902208851ef0b1e1b345f..16449b1cb3e6f68e9d5946e4050bc93769e23eb6 100644
--- a/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H
+++ b/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<Peclet> IOPeclet;
+    typedef IOOutputFilter<functionObjects::Peclet> IOPeclet;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C
index 076d3b47ed4ff79c6a20fc7362055c655243c92b..ced9ace56d73be6749568af046b6f861b1b6dafa 100644
--- a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C
+++ b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,14 +34,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(Peclet, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::Peclet::Peclet
+Foam::functionObjects::Peclet::Peclet
 (
     const word& name,
     const objectRegistry& obr,
@@ -51,178 +54,164 @@ Foam::Peclet::Peclet
 :
     name_(name),
     obr_(obr),
-    active_(true),
     phiName_("phi"),
     rhoName_("rho")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        surfaceScalarField* PecletPtr
+    surfaceScalarField* PecletPtr
+    (
+        new surfaceScalarField
         (
-            new surfaceScalarField
+            IOobject
             (
-                IOobject
-                (
-                    type(),
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                type(),
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("0", dimless, 0.0)
-            )
-        );
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("0", dimless, 0.0)
+        )
+    );
 
-        mesh.objectRegistry::store(PecletPtr);
-    }
+    mesh.objectRegistry::store(PecletPtr);
+}
+
+
+bool Foam::functionObjects::Peclet::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::Peclet::~Peclet()
+Foam::functionObjects::Peclet::~Peclet()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::Peclet::read(const dictionary& dict)
+void Foam::functionObjects::Peclet::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
-        rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho");
-    }
+    phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
+    rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho");
 }
 
 
-void Foam::Peclet::execute()
+void Foam::functionObjects::Peclet::execute()
 {
     typedef compressible::turbulenceModel cmpTurbModel;
     typedef incompressible::turbulenceModel icoTurbModel;
 
-    if (active_)
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
+
+    tmp<volScalarField> nuEff;
+    if (mesh.foundObject<cmpTurbModel>(turbulenceModel::propertiesName))
     {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+        const cmpTurbModel& model =
+            mesh.lookupObject<cmpTurbModel>
+            (
+                turbulenceModel::propertiesName
+            );
 
-        tmp<volScalarField> nuEff;
-        if (mesh.foundObject<cmpTurbModel>(turbulenceModel::propertiesName))
-        {
-            const cmpTurbModel& model =
-                mesh.lookupObject<cmpTurbModel>
-                (
-                    turbulenceModel::propertiesName
-                );
+        const volScalarField& rho =
+            mesh.lookupObject<volScalarField>(rhoName_);
 
-            const volScalarField& rho =
-                mesh.lookupObject<volScalarField>(rhoName_);
+        nuEff = model.muEff()/rho;
+    }
+    else if
+    (
+        mesh.foundObject<icoTurbModel>(turbulenceModel::propertiesName)
+    )
+    {
+        const icoTurbModel& model =
+            mesh.lookupObject<icoTurbModel>
+            (
+                turbulenceModel::propertiesName
+            );
 
-            nuEff = model.muEff()/rho;
-        }
-        else if
-        (
-            mesh.foundObject<icoTurbModel>(turbulenceModel::propertiesName)
-        )
-        {
-            const icoTurbModel& model =
-                mesh.lookupObject<icoTurbModel>
-                (
-                    turbulenceModel::propertiesName
-                );
-
-            nuEff = model.nuEff();
-        }
-        else if (mesh.foundObject<dictionary>("transportProperties"))
-        {
-            const dictionary& model =
-                mesh.lookupObject<dictionary>("transportProperties");
-
-            nuEff =
-                tmp<volScalarField>
+        nuEff = model.nuEff();
+    }
+    else if (mesh.foundObject<dictionary>("transportProperties"))
+    {
+        const dictionary& model =
+            mesh.lookupObject<dictionary>("transportProperties");
+
+        nuEff =
+            tmp<volScalarField>
+            (
+                new volScalarField
                 (
-                    new volScalarField
+                    IOobject
                     (
-                        IOobject
-                        (
-                            "nuEff",
-                            mesh.time().timeName(),
-                            mesh,
-                            IOobject::NO_READ,
-                            IOobject::NO_WRITE
-                        ),
+                        "nuEff",
+                        mesh.time().timeName(),
                         mesh,
-                        dimensionedScalar(model.lookup("nu"))
-                    )
-                );
-        }
-        else
-        {
-            FatalErrorInFunction
-                << "Unable to determine the viscosity"
-                << exit(FatalError);
-        }
-
-        const surfaceScalarField& phi =
-            mesh.lookupObject<surfaceScalarField>(phiName_);
-
-        surfaceScalarField& Peclet =
-            const_cast<surfaceScalarField&>
-            (
-                mesh.lookupObject<surfaceScalarField>(type())
-            );
-
-        Peclet =
-            mag(phi)
-           /(
-                mesh.magSf()
-               *mesh.surfaceInterpolation::deltaCoeffs()
-               *fvc::interpolate(nuEff)
+                        IOobject::NO_READ,
+                        IOobject::NO_WRITE
+                    ),
+                    mesh,
+                    dimensionedScalar(model.lookup("nu"))
+                )
             );
     }
-}
-
-
-void Foam::Peclet::end()
-{
-    if (active_)
+    else
     {
-        execute();
+        FatalErrorInFunction
+            << "Unable to determine the viscosity"
+            << exit(FatalError);
     }
+
+    const surfaceScalarField& phi =
+        mesh.lookupObject<surfaceScalarField>(phiName_);
+
+    surfaceScalarField& Peclet =
+        const_cast<surfaceScalarField&>
+        (
+            mesh.lookupObject<surfaceScalarField>(type())
+        );
+
+    Peclet =
+        mag(phi)
+       /(
+            mesh.magSf()
+           *mesh.surfaceInterpolation::deltaCoeffs()
+           *fvc::interpolate(nuEff)
+        );
 }
 
-void Foam::Peclet::timeSet()
+
+void Foam::functionObjects::Peclet::end()
 {
-    // Do nothing
+    execute();
 }
 
+void Foam::functionObjects::Peclet::timeSet()
+{}
 
-void Foam::Peclet::write()
+
+void Foam::functionObjects::Peclet::write()
 {
-    if (active_)
-    {
-        const surfaceScalarField& Peclet =
-            obr_.lookupObject<surfaceScalarField>(type());
+    const surfaceScalarField& Peclet =
+        obr_.lookupObject<surfaceScalarField>(type());
 
-        Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << Peclet.name() << nl
-            << endl;
+    Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << Peclet.name() << nl
+        << endl;
 
-        Peclet.write();
-    }
+    Peclet.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H
index 5becbe93e951172d1697de0d4f5c7bdb3017896d..dba87188aba491df33b948a75105e6b3cef46965 100644
--- a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H
+++ b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::Peclet
+    Foam::functionObjects::Peclet
 
 Group
     grpUtilitiesFunctionObjects
@@ -56,6 +56,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                           Class Peclet Declaration
 \*---------------------------------------------------------------------------*/
@@ -70,9 +73,6 @@ class Peclet
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of flux field, default is "phi"
         word phiName_;
 
@@ -107,6 +107,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~Peclet();
@@ -147,6 +157,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H b/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H
index fdeca7e571739bc36c4e34751a3452add4bb186b..a740de23d67acbf1477175dd209989647e410fef 100644
--- a/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<Peclet> PecletFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::Peclet>
+        PecletFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Q/Q.C b/src/postProcessing/functionObjects/utilities/Q/Q.C
index 1e13c375a93f967517dc1f487928d0f9df597cb4..7e4fb2ff31275971f0846d11f8998eaef8d920fa 100644
--- a/src/postProcessing/functionObjects/utilities/Q/Q.C
+++ b/src/postProcessing/functionObjects/utilities/Q/Q.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,13 +32,16 @@ License
 
 namespace Foam
 {
-defineTypeNameAndDebug(Q, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(Q, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::Q::Q
+Foam::functionObjects::Q::Q
 (
     const word& name,
     const objectRegistry& obr,
@@ -48,113 +51,99 @@ Foam::Q::Q
 :
     name_(name),
     obr_(obr),
-    active_(true),
     UName_("U")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volScalarField* QPtr
+    volScalarField* QPtr
+    (
+        new volScalarField
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    type(),
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                type(),
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("0", dimless/sqr(dimTime), 0.0)
-            )
-        );
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("0", dimless/sqr(dimTime), 0.0)
+        )
+    );
+
+    mesh.objectRegistry::store(QPtr);
+}
 
-        mesh.objectRegistry::store(QPtr);
-    }
+
+bool Foam::functionObjects::Q::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::Q::~Q()
+Foam::functionObjects::Q::~Q()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::Q::read(const dictionary& dict)
+void Foam::functionObjects::Q::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        UName_ = dict.lookupOrDefault<word>("UName", "U");
-    }
+    UName_ = dict.lookupOrDefault<word>("UName", "U");
 }
 
 
-void Foam::Q::execute()
+void Foam::functionObjects::Q::execute()
 {
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        const volVectorField& U =
-            mesh.lookupObject<volVectorField>(UName_);
+    const volVectorField& U =
+        mesh.lookupObject<volVectorField>(UName_);
 
-        const volTensorField gradU(fvc::grad(U));
+    const volTensorField gradU(fvc::grad(U));
 
-        volScalarField& Q =
-            const_cast<volScalarField&>
-            (
-                mesh.lookupObject<volScalarField>(type())
-            );
+    volScalarField& Q =
+        const_cast<volScalarField&>
+        (
+            mesh.lookupObject<volScalarField>(type())
+        );
 
-        Q = 0.5*(sqr(tr(gradU)) - tr(((gradU) & (gradU))));
-    }
+    Q = 0.5*(sqr(tr(gradU)) - tr(((gradU) & (gradU))));
 }
 
 
-void Foam::Q::end()
+void Foam::functionObjects::Q::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::Q::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::Q::timeSet()
+{}
 
 
-void Foam::Q::write()
+void Foam::functionObjects::Q::write()
 {
-    if (active_)
-    {
-        const volScalarField& Q =
-            obr_.lookupObject<volScalarField>(type());
+    const volScalarField& Q =
+        obr_.lookupObject<volScalarField>(type());
 
-        Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << Q.name() << nl
-            << endl;
+    Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << Q.name() << nl
+        << endl;
 
-        Q.write();
-    }
+    Q.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/Q/Q.H b/src/postProcessing/functionObjects/utilities/Q/Q.H
index aed626228c8c61d627fa166907da83af6b0b8506..56e00833c3642f5f64fe254eeec38196e26ec0e7 100644
--- a/src/postProcessing/functionObjects/utilities/Q/Q.H
+++ b/src/postProcessing/functionObjects/utilities/Q/Q.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::Q
+    Foam::functionObjects::Q
 
 Group
     grpUtilitiesFunctionObjects
@@ -60,6 +60,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                           Class Q Declaration
 \*---------------------------------------------------------------------------*/
@@ -74,9 +77,6 @@ class Q
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of velocity field, default is "U"
         word UName_;
 
@@ -108,6 +108,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~Q();
@@ -148,6 +158,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H b/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H
index 4c96aac505475107ae423e482e2ebcadcd300dd6..27d72f6aa110b7e09120fdf2ce36ac9148fec2b4 100644
--- a/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<Q> QFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::Q>
+        QFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H b/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H
index 2d1ae3dc1e4885eeed8272ef93d3331f45a1a17c..ceef2c02fb50d292d78cacd52761de7f0a91e940 100644
--- a/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H
+++ b/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<blendingFactor> IOblendingFactor;
+    typedef IOOutputFilter<functionObjects::blendingFactor> IOblendingFactor;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C
index 05da696bae85810fe864d0c07f744dc577ebb1b3..64863bcfc657597086bd24aa0a5ada2473539aed 100644
--- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C
+++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,14 +29,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(blendingFactor, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::blendingFactor::blendingFactor
+Foam::functionObjects::blendingFactor::blendingFactor
 (
     const word& name,
     const objectRegistry& obr,
@@ -46,80 +49,69 @@ Foam::blendingFactor::blendingFactor
 :
     name_(name),
     obr_(obr),
-    active_(true),
     phiName_("unknown-phiName"),
     fieldName_("unknown-fieldName")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 }
 
 
+bool Foam::functionObjects::blendingFactor::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::blendingFactor::~blendingFactor()
+Foam::functionObjects::blendingFactor::~blendingFactor()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::blendingFactor::read(const dictionary& dict)
+void Foam::functionObjects::blendingFactor::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
-        dict.lookup("fieldName") >> fieldName_;
-    }
+    phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
+    dict.lookup("fieldName") >> fieldName_;
 }
 
 
-void Foam::blendingFactor::execute()
+void Foam::functionObjects::blendingFactor::execute()
 {
-    if (active_)
-    {
-        calc<scalar>();
-        calc<vector>();
-    }
+    calc<scalar>();
+    calc<vector>();
 }
 
 
-void Foam::blendingFactor::end()
+void Foam::functionObjects::blendingFactor::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
-void Foam::blendingFactor::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::blendingFactor::timeSet()
+{}
 
 
-void Foam::blendingFactor::write()
+void Foam::functionObjects::blendingFactor::write()
 {
-    if (active_)
-    {
-        const word fieldName = "blendingFactor:" + fieldName_;
+    const word fieldName = "blendingFactor:" + fieldName_;
 
-        const volScalarField& blendingFactor =
-            obr_.lookupObject<volScalarField>(fieldName);
+    const volScalarField& blendingFactor =
+        obr_.lookupObject<volScalarField>(fieldName);
 
-        Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << blendingFactor.name() << nl
-            << endl;
+    Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << blendingFactor.name() << nl
+        << endl;
 
-        blendingFactor.write();
-    }
+    blendingFactor.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H
index 8b86a25cea60707f2cd5dc7208c6af2344f064b3..8e739442ccc4ca52ce0f93dcbec02d07d6661a78 100644
--- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H
+++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::blendingFactor
+    Foam::functionObjects::blendingFactor
 
 Group
     grpUtilitiesFunctionObjects
@@ -58,6 +58,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                           Class blendingFactor Declaration
 \*---------------------------------------------------------------------------*/
@@ -72,9 +75,6 @@ class blendingFactor
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of flux field, default is "phi"
         word phiName_;
 
@@ -120,6 +120,17 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
+
 
     //- Destructor
     virtual ~blendingFactor();
@@ -160,6 +171,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H
index b2e2369ebe191138b2ee919473590a3e917b2096..301d365d1315de7c2d07eff2c90ec48a2ca31034 100644
--- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<blendingFactor>
+    typedef OutputFilterFunctionObject<functionObjects::blendingFactor>
         blendingFactorFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C
index a2275cf5f030015934136d8cf89cc8c043818d31..d2df84d3cbed5e14142e120dcbdc4511429e2a3d 100644
--- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C
+++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C
@@ -31,7 +31,7 @@ License
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
-Foam::volScalarField& Foam::blendingFactor::factor
+Foam::volScalarField& Foam::functionObjects::blendingFactor::factor
 (
     const GeometricField<Type, fvPatchField, volMesh>& field
 )
@@ -70,7 +70,7 @@ Foam::volScalarField& Foam::blendingFactor::factor
 
 
 template<class Type>
-void Foam::blendingFactor::calc()
+void Foam::functionObjects::blendingFactor::calc()
 {
     typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
 
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C
index 095a801c2e850314a475bd2566dfda43cf497e53..33722637d657c14c9b11f75a74c266c01ee5d947 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C
@@ -36,13 +36,16 @@ using namespace Foam::constant;
 
 namespace Foam
 {
-defineTypeNameAndDebug(dsmcFields, 0);
+namespace functionObjects
+{
+    defineTypeNameAndDebug(dsmcFields, 0);
+}
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::dsmcFields::dsmcFields
+Foam::functionObjects::dsmcFields::dsmcFields
 (
     const word& name,
     const objectRegistry& obr,
@@ -51,231 +54,220 @@ Foam::dsmcFields::dsmcFields
 )
 :
     name_(name),
-    obr_(obr),
-    active_(true)
+    obr_(obr)
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 }
 
 
+bool Foam::functionObjects::dsmcFields::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::dsmcFields::~dsmcFields()
+Foam::functionObjects::dsmcFields::~dsmcFields()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::dsmcFields::read(const dictionary& dict)
-{
-    if (active_)
-    {
-
-    }
-}
+void Foam::functionObjects::dsmcFields::read(const dictionary& dict)
+{}
 
 
-void Foam::dsmcFields::execute()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::dsmcFields::execute()
+{}
 
 
-void Foam::dsmcFields::end()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::dsmcFields::end()
+{}
 
 
-void Foam::dsmcFields::timeSet()
-{
-    // Do nothing - only valid on write
-}
+void Foam::functionObjects::dsmcFields::timeSet()
+{}
 
 
-void Foam::dsmcFields::write()
+void Foam::functionObjects::dsmcFields::write()
 {
-    if (active_)
+    word rhoNMeanName = "rhoNMean";
+    word rhoMMeanName = "rhoMMean";
+    word momentumMeanName = "momentumMean";
+    word linearKEMeanName = "linearKEMean";
+    word internalEMeanName = "internalEMean";
+    word iDofMeanName = "iDofMean";
+    word fDMeanName = "fDMean";
+
+    const volScalarField& rhoNMean = obr_.lookupObject<volScalarField>
+    (
+        rhoNMeanName
+    );
+
+    const volScalarField& rhoMMean = obr_.lookupObject<volScalarField>
+    (
+        rhoMMeanName
+    );
+
+    const volVectorField& momentumMean = obr_.lookupObject<volVectorField>
+    (
+        momentumMeanName
+    );
+
+    const volScalarField& linearKEMean = obr_.lookupObject<volScalarField>
+    (
+        linearKEMeanName
+    );
+
+    const volScalarField& internalEMean = obr_.lookupObject<volScalarField>
+    (
+        internalEMeanName
+    );
+
+    const volScalarField& iDofMean = obr_.lookupObject<volScalarField>
+    (
+        iDofMeanName
+    );
+
+    const volVectorField& fDMean = obr_.lookupObject<volVectorField>
+    (
+        fDMeanName
+    );
+
+    if (min(mag(rhoNMean)).value() > VSMALL)
     {
-        word rhoNMeanName = "rhoNMean";
-        word rhoMMeanName = "rhoMMean";
-        word momentumMeanName = "momentumMean";
-        word linearKEMeanName = "linearKEMean";
-        word internalEMeanName = "internalEMean";
-        word iDofMeanName = "iDofMean";
-        word fDMeanName = "fDMean";
-
-        const volScalarField& rhoNMean = obr_.lookupObject<volScalarField>
-        (
-            rhoNMeanName
-        );
-
-        const volScalarField& rhoMMean = obr_.lookupObject<volScalarField>
-        (
-            rhoMMeanName
-        );
+        Info<< "Calculating dsmcFields." << endl;
 
-        const volVectorField& momentumMean = obr_.lookupObject<volVectorField>
+        Info<< "    Calculating UMean field." << endl;
+        volVectorField UMean
         (
-            momentumMeanName
+            IOobject
+            (
+                "UMean",
+                obr_.time().timeName(),
+                obr_,
+                IOobject::NO_READ
+            ),
+            momentumMean/rhoMMean
         );
 
-        const volScalarField& linearKEMean = obr_.lookupObject<volScalarField>
+        Info<< "    Calculating translationalT field." << endl;
+        volScalarField translationalT
         (
-            linearKEMeanName
+            IOobject
+            (
+                "translationalT",
+                obr_.time().timeName(),
+                obr_,
+                IOobject::NO_READ
+            ),
+
+            2.0/(3.0*physicoChemical::k.value()*rhoNMean)
+           *(linearKEMean - 0.5*rhoMMean*(UMean & UMean))
         );
 
-        const volScalarField& internalEMean = obr_.lookupObject<volScalarField>
+        Info<< "    Calculating internalT field." << endl;
+        volScalarField internalT
         (
-            internalEMeanName
+            IOobject
+            (
+                "internalT",
+                obr_.time().timeName(),
+                obr_,
+                IOobject::NO_READ
+            ),
+            (2.0/physicoChemical::k.value())*(internalEMean/iDofMean)
         );
 
-        const volScalarField& iDofMean = obr_.lookupObject<volScalarField>
+        Info<< "    Calculating overallT field." << endl;
+        volScalarField overallT
         (
-            iDofMeanName
+            IOobject
+            (
+                "overallT",
+                obr_.time().timeName(),
+                obr_,
+                IOobject::NO_READ
+            ),
+            2.0/(physicoChemical::k.value()*(3.0*rhoNMean + iDofMean))
+           *(linearKEMean - 0.5*rhoMMean*(UMean & UMean) + internalEMean)
         );
 
-        const volVectorField& fDMean = obr_.lookupObject<volVectorField>
+        Info<< "    Calculating pressure field." << endl;
+        volScalarField p
         (
-            fDMeanName
+            IOobject
+            (
+                "p",
+                obr_.time().timeName(),
+                obr_,
+                IOobject::NO_READ
+            ),
+            physicoChemical::k.value()*rhoNMean*translationalT
         );
 
-        if (min(mag(rhoNMean)).value() > VSMALL)
-        {
-            Info<< "Calculating dsmcFields." << endl;
-
-            Info<< "    Calculating UMean field." << endl;
-            volVectorField UMean
-            (
-                IOobject
-                (
-                    "UMean",
-                    obr_.time().timeName(),
-                    obr_,
-                    IOobject::NO_READ
-                ),
-                momentumMean/rhoMMean
-            );
-
-            Info<< "    Calculating translationalT field." << endl;
-            volScalarField translationalT
-            (
-                IOobject
-                (
-                    "translationalT",
-                    obr_.time().timeName(),
-                    obr_,
-                    IOobject::NO_READ
-                ),
-
-                2.0/(3.0*physicoChemical::k.value()*rhoNMean)
-               *(linearKEMean - 0.5*rhoMMean*(UMean & UMean))
-            );
-
-            Info<< "    Calculating internalT field." << endl;
-            volScalarField internalT
-            (
-                IOobject
-                (
-                    "internalT",
-                    obr_.time().timeName(),
-                    obr_,
-                    IOobject::NO_READ
-                ),
-                (2.0/physicoChemical::k.value())*(internalEMean/iDofMean)
-            );
-
-            Info<< "    Calculating overallT field." << endl;
-            volScalarField overallT
-            (
-                IOobject
-                (
-                    "overallT",
-                    obr_.time().timeName(),
-                    obr_,
-                    IOobject::NO_READ
-                ),
-                2.0/(physicoChemical::k.value()*(3.0*rhoNMean + iDofMean))
-               *(linearKEMean - 0.5*rhoMMean*(UMean & UMean) + internalEMean)
-            );
-
-            Info<< "    Calculating pressure field." << endl;
-            volScalarField p
-            (
-                IOobject
-                (
-                    "p",
-                    obr_.time().timeName(),
-                    obr_,
-                    IOobject::NO_READ
-                ),
-                physicoChemical::k.value()*rhoNMean*translationalT
-            );
+        const fvMesh& mesh = fDMean.mesh();
 
-            const fvMesh& mesh = fDMean.mesh();
+        volScalarField::Boundary& pBf = p.boundaryFieldRef();
 
-            volScalarField::Boundary& pBf = p.boundaryFieldRef();
+        forAll(mesh.boundaryMesh(), i)
+        {
+            const polyPatch& patch = mesh.boundaryMesh()[i];
 
-            forAll(mesh.boundaryMesh(), i)
+            if (isA<wallPolyPatch>(patch))
             {
-                const polyPatch& patch = mesh.boundaryMesh()[i];
-
-                if (isA<wallPolyPatch>(patch))
-                {
-                    pBf[i] =
-                        fDMean.boundaryField()[i]
-                      & (patch.faceAreas()/mag(patch.faceAreas()));
-                }
+                pBf[i] =
+                    fDMean.boundaryField()[i]
+                  & (patch.faceAreas()/mag(patch.faceAreas()));
             }
+        }
 
-            Info<< "    mag(UMean) max/min : "
-                << max(mag(UMean)).value() << " "
-                << min(mag(UMean)).value() << endl;
+        Info<< "    mag(UMean) max/min : "
+            << max(mag(UMean)).value() << " "
+            << min(mag(UMean)).value() << endl;
 
-            Info<< "    translationalT max/min : "
-                << max(translationalT).value() << " "
-                << min(translationalT).value() << endl;
+        Info<< "    translationalT max/min : "
+            << max(translationalT).value() << " "
+            << min(translationalT).value() << endl;
 
-            Info<< "    internalT max/min : "
-                << max(internalT).value() << " "
-                << min(internalT).value() << endl;
+        Info<< "    internalT max/min : "
+            << max(internalT).value() << " "
+            << min(internalT).value() << endl;
 
-            Info<< "    overallT max/min : "
-                << max(overallT).value() << " "
-                << min(overallT).value() << endl;
+        Info<< "    overallT max/min : "
+            << max(overallT).value() << " "
+            << min(overallT).value() << endl;
 
-            Info<< "    p max/min : "
-                << max(p).value() << " "
-                << min(p).value() << endl;
+        Info<< "    p max/min : "
+            << max(p).value() << " "
+            << min(p).value() << endl;
 
-            UMean.write();
+        UMean.write();
 
-            translationalT.write();
+        translationalT.write();
 
-            internalT.write();
+        internalT.write();
 
-            overallT.write();
+        overallT.write();
 
-            p.write();
+        p.write();
 
-            Info<< "dsmcFields written." << nl << endl;
-        }
-        else
-        {
-            Info<< "Small value (" << min(mag(rhoNMean))
-                << ") found in rhoNMean field. "
-                << "Not calculating dsmcFields to avoid division by zero."
-                << endl;
-        }
+        Info<< "dsmcFields written." << nl << endl;
+    }
+    else
+    {
+        Info<< "Small value (" << min(mag(rhoNMean))
+            << ") found in rhoNMean field. "
+            << "Not calculating dsmcFields to avoid division by zero."
+            << endl;
     }
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H
index b6f7ae68d61dc0bd968fbfc4b8eef43cf3bd02fb..e702a01abde5d5a30801dd62f18cb45737de5b8d 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::dsmcFields
+    Foam::functionObjects::dsmcFields
 
 Group
     grpUtilitiesFunctionObjects
@@ -45,6 +45,7 @@ SourceFiles
 #define dsmcFields_H
 
 #include "typeInfo.H"
+#include "autoPtr.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -57,6 +58,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                          Class dsmcFields Declaration
 \*---------------------------------------------------------------------------*/
@@ -70,9 +74,6 @@ class dsmcFields
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
 
     // Private Member Functions
 
@@ -101,6 +102,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~dsmcFields();
@@ -141,6 +152,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H
index 95501a1446f3489160e0cc563e11f3e3339429ca..7a220c4bbab91647cb9d942a0c6e11c70152bf80 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<dsmcFields>
+    typedef OutputFilterFunctionObject<functionObjects::dsmcFields>
         dsmcFieldsFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H b/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H
index 4d10f447209725030c82cbb79d85aa4e423e274c..7119cff70d0e4dc48a7aa57d83fcfbbbe4ba3a7b 100644
--- a/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H
+++ b/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<pressureTools> IOpressureTools;
+    typedef IOOutputFilter<functionObjects::pressureTools> IOpressureTools;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C
index 84a50de5f8093aa8088775f23aa3d7722e412ae7..c4315511235ede30b331986fa80080e6ca3a65f0 100644
--- a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C
+++ b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C
@@ -30,14 +30,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(pressureTools, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-Foam::word Foam::pressureTools::pName() const
+Foam::word Foam::functionObjects::pressureTools::pName() const
 {
     word fieldName = pName_;
 
@@ -59,7 +62,7 @@ Foam::word Foam::pressureTools::pName() const
 }
 
 
-Foam::dimensionedScalar Foam::pressureTools::rhoScale
+Foam::dimensionedScalar Foam::functionObjects::pressureTools::rhoScale
 (
     const volScalarField& p
 ) const
@@ -75,7 +78,7 @@ Foam::dimensionedScalar Foam::pressureTools::rhoScale
 }
 
 
-Foam::tmp<Foam::volScalarField> Foam::pressureTools::rho
+Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressureTools::rho
 (
     const volScalarField& p
 ) const
@@ -107,7 +110,7 @@ Foam::tmp<Foam::volScalarField> Foam::pressureTools::rho
 }
 
 
-Foam::dimensionedScalar Foam::pressureTools::pRef() const
+Foam::dimensionedScalar Foam::functionObjects::pressureTools::pRef() const
 {
     dimensionedScalar value("pRef", dimPressure, 0.0);
 
@@ -120,7 +123,7 @@ Foam::dimensionedScalar Foam::pressureTools::pRef() const
 }
 
 
-Foam::tmp<Foam::volScalarField> Foam::pressureTools::pDyn
+Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressureTools::pDyn
 (
     const volScalarField& p
 ) const
@@ -155,7 +158,8 @@ Foam::tmp<Foam::volScalarField> Foam::pressureTools::pDyn
 }
 
 
-Foam::tmp<Foam::volScalarField> Foam::pressureTools::convertToCoeff
+Foam::tmp<Foam::volScalarField>
+Foam::functionObjects::pressureTools::convertToCoeff
 (
     const volScalarField& p
 ) const
@@ -179,7 +183,7 @@ Foam::tmp<Foam::volScalarField> Foam::pressureTools::convertToCoeff
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::pressureTools::pressureTools
+Foam::functionObjects::pressureTools::pressureTools
 (
     const word& name,
     const objectRegistry& obr,
@@ -189,7 +193,6 @@ Foam::pressureTools::pressureTools
 :
     name_(name),
     obr_(obr),
-    active_(true),
     pName_("p"),
     UName_("U"),
     rhoName_("rho"),
@@ -200,144 +203,130 @@ Foam::pressureTools::pressureTools
     UInf_(Zero),
     rhoInf_(0.0)
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 
-    if (active_)
-    {
-        dimensionSet pDims(dimPressure);
+    dimensionSet pDims(dimPressure);
 
-        if (calcCoeff_)
-        {
-            pDims /= dimPressure;
-        }
+    if (calcCoeff_)
+    {
+        pDims /= dimPressure;
+    }
 
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volScalarField* pPtr
+    volScalarField* pPtr
+    (
+        new volScalarField
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    pName(),
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                pName(),
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("0", pDims, 0.0)
-            )
-        );
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("0", pDims, 0.0)
+        )
+    );
 
-        mesh.objectRegistry::store(pPtr);
-    }
+    mesh.objectRegistry::store(pPtr);
+}
+
+
+bool Foam::functionObjects::pressureTools::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::pressureTools::~pressureTools()
+Foam::functionObjects::pressureTools::~pressureTools()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::pressureTools::read(const dictionary& dict)
+void Foam::functionObjects::pressureTools::read(const dictionary& dict)
 {
-    if (active_)
+    dict.readIfPresent("pName", pName_);
+    dict.readIfPresent("UName", UName_);
+    dict.readIfPresent("rhoName", rhoName_);
+
+    if (rhoName_ == "rhoInf")
     {
-        dict.readIfPresent("pName", pName_);
-        dict.readIfPresent("UName", UName_);
-        dict.readIfPresent("rhoName", rhoName_);
+        dict.lookup("rhoInf") >> rhoInf_;
+    }
 
-        if (rhoName_ == "rhoInf")
-        {
-            dict.lookup("rhoInf") >> rhoInf_;
-        }
+    dict.lookup("calcTotal") >> calcTotal_;
+    if (calcTotal_)
+    {
+        dict.lookup("pRef") >> pRef_;
+    }
 
-        dict.lookup("calcTotal") >> calcTotal_;
-        if (calcTotal_)
-        {
-            dict.lookup("pRef") >> pRef_;
-        }
+    dict.lookup("calcCoeff") >> calcCoeff_;
+    if (calcCoeff_)
+    {
+        dict.lookup("pInf") >> pInf_;
+        dict.lookup("UInf") >> UInf_;
+        dict.lookup("rhoInf") >> rhoInf_;
 
-        dict.lookup("calcCoeff") >> calcCoeff_;
-        if (calcCoeff_)
+        scalar zeroCheck = 0.5*rhoInf_*magSqr(UInf_) + pInf_;
+
+        if (mag(zeroCheck) < ROOTVSMALL)
         {
-            dict.lookup("pInf") >> pInf_;
-            dict.lookup("UInf") >> UInf_;
-            dict.lookup("rhoInf") >> rhoInf_;
-
-            scalar zeroCheck = 0.5*rhoInf_*magSqr(UInf_) + pInf_;
-
-            if (mag(zeroCheck) < ROOTVSMALL)
-            {
-                WarningInFunction
-                    << type() << " " << name_ << ": "
-                    << "Coefficient calculation requested, but reference "
-                    << "pressure level is zero.  Please check the supplied "
-                    << "values of pInf, UInf and rhoInf" << endl;
-            }
+            WarningInFunction
+                << type() << " " << name_ << ": "
+                << "Coefficient calculation requested, but reference "
+                << "pressure level is zero.  Please check the supplied "
+                << "values of pInf, UInf and rhoInf" << endl;
         }
     }
 }
 
 
-void Foam::pressureTools::execute()
+void Foam::functionObjects::pressureTools::execute()
 {
-    if (active_)
-    {
-        const volScalarField& p = obr_.lookupObject<volScalarField>(pName_);
+    const volScalarField& p = obr_.lookupObject<volScalarField>(pName_);
 
-        volScalarField& pResult =
-            const_cast<volScalarField&>
-            (
-                obr_.lookupObject<volScalarField>(pName())
-            );
+    volScalarField& pResult = const_cast<volScalarField&>
+    (
+        obr_.lookupObject<volScalarField>(pName())
+    );
 
-        pResult == convertToCoeff(rhoScale(p)*p + pDyn(p) + pRef());
-    }
+    pResult == convertToCoeff(rhoScale(p)*p + pDyn(p) + pRef());
 }
 
 
-void Foam::pressureTools::end()
+void Foam::functionObjects::pressureTools::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::pressureTools::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::pressureTools::timeSet()
+{}
 
 
-void Foam::pressureTools::write()
+void Foam::functionObjects::pressureTools::write()
 {
-    if (active_)
-    {
-        const volScalarField& pResult =
-            obr_.lookupObject<volScalarField>(pName());
+    const volScalarField& pResult =
+        obr_.lookupObject<volScalarField>(pName());
 
-        Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << pResult.name() << nl
-            << endl;
+    Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << pResult.name() << nl
+        << endl;
 
-        pResult.write();
-    }
+    pResult.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H
index 6d80b388d107eb205d8de7cb08f8b438a993a8b0..d06fb776ab34aaeb6a363877378b9c61e1888152 100644
--- a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H
+++ b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::pressureTools
+    Foam::functionObjects::pressureTools
 
 Group
     grpUtilitiesFunctionObjects
@@ -123,6 +123,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                         Class pressureTools Declaration
 \*---------------------------------------------------------------------------*/
@@ -137,9 +140,6 @@ class pressureTools
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of pressure field, default is "p"
         word pName_;
 
@@ -219,6 +219,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~pressureTools();
@@ -259,6 +269,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H b/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H
index 0b83c7d148ddb5a02c7b0d92690b274d504b933b..39141da9f92aa2ac298dad676a1dd84dba0283b5 100644
--- a/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<pressureTools>
+    typedef OutputFilterFunctionObject<functionObjects::pressureTools>
         pressureToolsFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H b/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H
index 1f74ab27a3a4189ee7c8858c03baf749893f75e0..249e4ec5d8e67628981f221680146cb7e0a1e12d 100644
--- a/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H
+++ b/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2015-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<residuals> IOresiduals;
+    typedef IOOutputFilter<functionObjects::residuals> IOresiduals;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/residuals/residuals.C b/src/postProcessing/functionObjects/utilities/residuals/residuals.C
index 9c7eca1be09f36fc3fc20af431030635fa9cc49d..ee63506ac32dcd20540c72a445c65392fd8770f6 100644
--- a/src/postProcessing/functionObjects/utilities/residuals/residuals.C
+++ b/src/postProcessing/functionObjects/utilities/residuals/residuals.C
@@ -31,14 +31,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(residuals, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::residuals::residuals
+Foam::functionObjects::residuals::residuals
 (
     const word& name,
     const objectRegistry& obr,
@@ -49,40 +52,40 @@ Foam::residuals::residuals
     functionObjectFiles(obr, name, typeName),
     name_(name),
     obr_(obr),
-    active_(true),
     fieldSet_()
 {
-    // Check if the available mesh is an fvMesh otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
-    }
-
     read(dict);
 }
 
 
+bool Foam::functionObjects::residuals::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::residuals::~residuals()
+Foam::functionObjects::residuals::~residuals()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::residuals::read(const dictionary& dict)
+void Foam::functionObjects::residuals::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        dict.lookup("fields") >> fieldSet_;
-    }
+    dict.lookup("fields") >> fieldSet_;
 }
 
 
-void Foam::residuals::writeFileHeader(const label i)
+void Foam::functionObjects::residuals::writeFileHeader(const label i)
 {
     if (Pstream::master())
     {
@@ -105,41 +108,38 @@ void Foam::residuals::writeFileHeader(const label i)
 }
 
 
-void Foam::residuals::execute()
+void Foam::functionObjects::residuals::execute()
 {}
 
 
-void Foam::residuals::end()
+void Foam::functionObjects::residuals::end()
 {}
 
 
-void Foam::residuals::timeSet()
+void Foam::functionObjects::residuals::timeSet()
 {}
 
 
-void Foam::residuals::write()
+void Foam::functionObjects::residuals::write()
 {
-    if (active_)
+    functionObjectFiles::write();
+
+    if (Pstream::master())
     {
-        functionObjectFiles::write();
+        writeTime(file());
 
-        if (Pstream::master())
+        forAll(fieldSet_, fieldI)
         {
-            writeTime(file());
-
-            forAll(fieldSet_, fieldI)
-            {
-                const word& fieldName = fieldSet_[fieldI];
-
-                writeResidual<scalar>(fieldName);
-                writeResidual<vector>(fieldName);
-                writeResidual<sphericalTensor>(fieldName);
-                writeResidual<symmTensor>(fieldName);
-                writeResidual<tensor>(fieldName);
-            }
+            const word& fieldName = fieldSet_[fieldI];
 
-            file() << endl;
+            writeResidual<scalar>(fieldName);
+            writeResidual<vector>(fieldName);
+            writeResidual<sphericalTensor>(fieldName);
+            writeResidual<symmTensor>(fieldName);
+            writeResidual<tensor>(fieldName);
         }
+
+        file() << endl;
     }
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/residuals/residuals.H b/src/postProcessing/functionObjects/utilities/residuals/residuals.H
index 06192df6b5e1dfef126d3810d17e294387eb21a2..01a44e0c3e0ec0712e12ca1d44e5cc401413623d 100644
--- a/src/postProcessing/functionObjects/utilities/residuals/residuals.H
+++ b/src/postProcessing/functionObjects/utilities/residuals/residuals.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::residuals
+    Foam::functionObjects::residuals
 
 Group
     grpUtilitiesFunctionObjects
@@ -82,6 +82,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                        Class residuals Declaration
 \*---------------------------------------------------------------------------*/
@@ -100,9 +103,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Fields to write residuals
         wordList fieldSet_;
 
@@ -146,6 +146,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~residuals();
@@ -190,6 +200,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H b/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H
index 9bc49f984e13278316838e933782bf15bc12042c..3d28368f6ef40b50c0e729e47a4b05ebf92957d3 100644
--- a/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2015-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<residuals>
+    typedef OutputFilterFunctionObject<functionObjects::residuals>
         residualsFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C b/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C
index 6709a0827ffac2922319d7588fca7dd3998c05ab..b7647242bca6e1ee31faef35e29d62c0d7ca7f6b 100644
--- a/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C
+++ b/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C
@@ -32,7 +32,7 @@ License
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::residuals::writeFileHeader(const word& fieldName)
+void Foam::functionObjects::residuals::writeFileHeader(const word& fieldName)
 {
     typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
 
@@ -62,7 +62,7 @@ void Foam::residuals::writeFileHeader(const word& fieldName)
 
 
 template<class Type>
-void Foam::residuals::writeResidual(const word& fieldName)
+void Foam::functionObjects::residuals::writeResidual(const word& fieldName)
 {
     typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
 
diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H b/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H
index 37d3ef0f3d61b31b74e254ba84838a06c007bdd6..e6c9c1dc4c7f26633dd6870e584b5573aa96f2e5 100644
--- a/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H
+++ b/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,8 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<scalarTransport> IOscalarTransport;
+    typedef IOOutputFilter<functionObjects::scalarTransport>
+        IOscalarTransport;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C
index 3281ea4ffd4c9c933738232416a46ea380980161..a4bfb5bbbc02634c8c28456c74bd6a6721b347ea 100644
--- a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C
+++ b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C
@@ -40,14 +40,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(scalarTransport, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-Foam::wordList Foam::scalarTransport::boundaryTypes() const
+Foam::wordList Foam::functionObjects::scalarTransport::boundaryTypes() const
 {
     const volVectorField& U = mesh_.lookupObject<volVectorField>(UName_);
 
@@ -70,7 +73,7 @@ Foam::wordList Foam::scalarTransport::boundaryTypes() const
 }
 
 
-Foam::tmp<Foam::volScalarField> Foam::scalarTransport::DT
+Foam::tmp<Foam::volScalarField> Foam::functionObjects::scalarTransport::DT
 (
     const surfaceScalarField& phi
 ) const
@@ -139,7 +142,7 @@ Foam::tmp<Foam::volScalarField> Foam::scalarTransport::DT
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::scalarTransport::scalarTransport
+Foam::functionObjects::scalarTransport::scalarTransport
 (
     const word& name,
     const objectRegistry& obr,
@@ -182,15 +185,28 @@ Foam::scalarTransport::scalarTransport
 }
 
 
+bool Foam::functionObjects::scalarTransport::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::scalarTransport::~scalarTransport()
+Foam::functionObjects::scalarTransport::~scalarTransport()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::scalarTransport::read(const dictionary& dict)
+void Foam::functionObjects::scalarTransport::read(const dictionary& dict)
 {
     Info<< type() << ":" << nl;
 
@@ -214,7 +230,7 @@ void Foam::scalarTransport::read(const dictionary& dict)
 }
 
 
-void Foam::scalarTransport::execute()
+void Foam::functionObjects::scalarTransport::execute()
 {
     Info<< type() << " output:" << endl;
 
@@ -298,17 +314,17 @@ void Foam::scalarTransport::execute()
 }
 
 
-void Foam::scalarTransport::end()
+void Foam::functionObjects::scalarTransport::end()
 {
     execute();
 }
 
 
-void Foam::scalarTransport::timeSet()
+void Foam::functionObjects::scalarTransport::timeSet()
 {}
 
 
-void Foam::scalarTransport::write()
+void Foam::functionObjects::scalarTransport::write()
 {}
 
 
diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H
index 8ba8c9ce2c13f748752237ea5c0907307d27452f..21724bfb3d6fdb2c298e5df261f35c1492bbd3b3 100644
--- a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H
+++ b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::scalarTransport
+    Foam::functionObjects::scalarTransport
 
 Group
     grpUtilitiesFunctionObjects
@@ -64,6 +64,9 @@ class objectRegistry;
 class dictionary;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                        Class scalarTransport Declaration
 \*---------------------------------------------------------------------------*/
@@ -142,6 +145,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~scalarTransport();
@@ -182,6 +195,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H
index f5a417f4fdec04a7d24bf11989c1ba513ab478e7..cea384054cb89d6e07b2a0c66e2d8c61e2aba3f0 100644
--- a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<scalarTransport>
+    typedef OutputFilterFunctionObject<functionObjects::scalarTransport>
         scalarTransportFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.H b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.H
index 5aac253afbf7d09954ac2e87f1683f3013529789..4d4d3ac408af8ba263fb5ec3e054abf8077c97cb 100644
--- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.H
+++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,8 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<timeActivatedFileUpdate> IOtimeActivatedFileUpdate;
+    typedef IOOutputFilter<functionObjects::timeActivatedFileUpdate>
+        IOtimeActivatedFileUpdate;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C
index caef71319ff6730afc1e150438c599cf48b1edd0..acee1ecfb5a83bec56203b1384ccd76bd7ea2c89 100644
--- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C
+++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,14 +31,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(timeActivatedFileUpdate, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::timeActivatedFileUpdate::updateFile()
+void Foam::functionObjects::timeActivatedFileUpdate::updateFile()
 {
     label i = lastIndex_;
     while
@@ -63,7 +66,7 @@ void Foam::timeActivatedFileUpdate::updateFile()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::timeActivatedFileUpdate::timeActivatedFileUpdate
+Foam::functionObjects::timeActivatedFileUpdate::timeActivatedFileUpdate
 (
     const word& name,
     const objectRegistry& obr,
@@ -73,7 +76,6 @@ Foam::timeActivatedFileUpdate::timeActivatedFileUpdate
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fileToUpdate_(dict.lookup("fileToUpdate")),
     timeVsFile_(),
     lastIndex_(-1)
@@ -82,73 +84,75 @@ Foam::timeActivatedFileUpdate::timeActivatedFileUpdate
 }
 
 
+bool Foam::functionObjects::timeActivatedFileUpdate::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    return true;
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::timeActivatedFileUpdate::~timeActivatedFileUpdate()
+Foam::functionObjects::timeActivatedFileUpdate::~timeActivatedFileUpdate()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::timeActivatedFileUpdate::read(const dictionary& dict)
+void Foam::functionObjects::timeActivatedFileUpdate::read
+(
+    const dictionary& dict
+)
 {
-    if (active_)
-    {
-        dict.lookup("fileToUpdate") >> fileToUpdate_;
-        dict.lookup("timeVsFile") >> timeVsFile_;
+    dict.lookup("fileToUpdate") >> fileToUpdate_;
+    dict.lookup("timeVsFile") >> timeVsFile_;
 
-        lastIndex_ = -1;
-        fileToUpdate_.expand();
+    lastIndex_ = -1;
+    fileToUpdate_.expand();
 
-        Info<< type() << ": time vs file list:" << nl;
-        forAll(timeVsFile_, i)
+    Info<< type() << ": time vs file list:" << nl;
+    forAll(timeVsFile_, i)
+    {
+        timeVsFile_[i].second() = timeVsFile_[i].second().expand();
+        if (!isFile(timeVsFile_[i].second()))
         {
-            timeVsFile_[i].second() = timeVsFile_[i].second().expand();
-            if (!isFile(timeVsFile_[i].second()))
-            {
-                FatalErrorInFunction
-                    << "File: " << timeVsFile_[i].second() << " not found"
-                    << nl << exit(FatalError);
-            }
-
-            Info<< "    " << timeVsFile_[i].first() << tab
-                << timeVsFile_[i].second() << endl;
+            FatalErrorInFunction
+                << "File: " << timeVsFile_[i].second() << " not found"
+                << nl << exit(FatalError);
         }
-        Info<< endl;
 
-        updateFile();
+        Info<< "    " << timeVsFile_[i].first() << tab
+            << timeVsFile_[i].second() << endl;
     }
+    Info<< endl;
+
+    updateFile();
 }
 
 
-void Foam::timeActivatedFileUpdate::execute()
+void Foam::functionObjects::timeActivatedFileUpdate::execute()
 {
-    if (active_)
-    {
-        updateFile();
-    }
+    updateFile();
 }
 
 
-void Foam::timeActivatedFileUpdate::end()
+void Foam::functionObjects::timeActivatedFileUpdate::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::timeActivatedFileUpdate::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::timeActivatedFileUpdate::timeSet()
+{}
 
 
-void Foam::timeActivatedFileUpdate::write()
-{
-    // Do nothing
-}
+void Foam::functionObjects::timeActivatedFileUpdate::write()
+{}
 
 
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H
index 42e5144a87dd3c590f56b479747e368f4d2b32c1..40d6ae37b413637946ec4d23e7eeec5ac6c01141 100644
--- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H
+++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::timeActivatedFileUpdate
+    Foam::functionObjects::timeActivatedFileUpdate
 
 Group
     grpUtilitiesFunctionObjects
@@ -73,6 +73,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                   Class timeActivatedFileUpdate Declaration
 \*---------------------------------------------------------------------------*/
@@ -87,9 +90,6 @@ class timeActivatedFileUpdate
         //- Owner database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of file to update
         fileName fileToUpdate_;
 
@@ -130,6 +130,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~timeActivatedFileUpdate();
@@ -170,6 +180,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.H b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.H
index d661d81901d7f72edd4a6eb1cb254635e17325c7..af8d9e4cc9888a6e093cab15762c7c8224db2d62 100644
--- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<timeActivatedFileUpdate>
+    typedef OutputFilterFunctionObject<functionObjects::timeActivatedFileUpdate>
         timeActivatedFileUpdateFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H b/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H
index c6005f8e37bc114edfcf4bb0224872a4dd3d065b..da664cdb78757bf427a808aa9a29fcdc1d98b021 100644
--- a/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H
+++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,8 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<turbulenceFields> IOturbulenceFields;
+    typedef IOOutputFilter<functionObjects::turbulenceFields>
+        IOturbulenceFields;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C
index 85c33035e5d0645eb0a5d24c78febb93831abe11..158622444958f3b8d5aa8956d3ecc3ce53f5b6e6 100644
--- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C
+++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,44 +31,66 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(turbulenceFields, 0);
-
-    template<>
-    const char* NamedEnum<turbulenceFields::compressibleField, 8>::names[] =
-    {
-        "k",
-        "epsilon",
-        "mut",
-        "muEff",
-        "alphat",
-        "alphaEff",
-        "R",
-        "devRhoReff"
-    };
-    const NamedEnum<turbulenceFields::compressibleField, 8>
-        turbulenceFields::compressibleFieldNames_;
-
-    template<>
-    const char* NamedEnum<turbulenceFields::incompressibleField, 6>::names[] =
-    {
-        "k",
-        "epsilon",
-        "nut",
-        "nuEff",
-        "R",
-        "devReff"
-    };
-    const NamedEnum<turbulenceFields::incompressibleField, 6>
-        turbulenceFields::incompressibleFieldNames_;
-
-    const word turbulenceFields::modelName = turbulenceModel::propertiesName;
+}
 }
 
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::turbulenceFields::compressibleField,
+    8
+>::names[] =
+{
+    "k",
+    "epsilon",
+    "mut",
+    "muEff",
+    "alphat",
+    "alphaEff",
+    "R",
+    "devRhoReff"
+};
+
+const Foam::NamedEnum
+<
+    Foam::functionObjects::turbulenceFields::compressibleField,
+    8
+> Foam::functionObjects::turbulenceFields::compressibleFieldNames_;
+
+template<>
+const char* Foam::NamedEnum
+<
+    Foam::functionObjects::turbulenceFields::incompressibleField,
+    6
+>::names[] =
+{
+    "k",
+    "epsilon",
+    "nut",
+    "nuEff",
+    "R",
+    "devReff"
+};
+
+const Foam::NamedEnum
+<
+    Foam::functionObjects::turbulenceFields::incompressibleField,
+    6
+> Foam::functionObjects::turbulenceFields::incompressibleFieldNames_;
+
+const Foam::word Foam::functionObjects::turbulenceFields::modelName
+(
+    Foam::turbulenceModel::propertiesName
+);
+
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
-bool Foam::turbulenceFields::compressible()
+bool Foam::functionObjects::turbulenceFields::compressible()
 {
     if (obr_.foundObject<compressible::turbulenceModel>(modelName))
     {
@@ -80,9 +102,9 @@ bool Foam::turbulenceFields::compressible()
     }
     else
     {
-        WarningInFunction
-            << "Turbulence model not found in database, deactivating";
-        active_ = false;
+        FatalErrorInFunction
+            << "Turbulence model not found in database, deactivating"
+            << exit(FatalError);
     }
 
     return false;
@@ -91,7 +113,7 @@ bool Foam::turbulenceFields::compressible()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::turbulenceFields::turbulenceFields
+Foam::functionObjects::turbulenceFields::turbulenceFields
 (
     const word& name,
     const objectRegistry& obr,
@@ -101,65 +123,74 @@ Foam::turbulenceFields::turbulenceFields
 :
     name_(name),
     obr_(obr),
-    active_(true),
     fieldSet_()
 {
-    // Check if the available mesh is an fvMesh otherise deactivate
-    if (isA<fvMesh>(obr_))
+    read(dict);
+}
+
+
+bool Foam::functionObjects::turbulenceFields::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    if (!isA<fvMesh>(obr))
+    {
+        return false;
+    }
+
+    if
+    (
+        obr.foundObject<compressible::turbulenceModel>(modelName)
+     || obr.foundObject<incompressible::turbulenceModel>(modelName)
+    )
     {
-        read(dict);
+        return true;
     }
     else
     {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_
-            << endl;
+        return false;
     }
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::turbulenceFields::~turbulenceFields()
+Foam::functionObjects::turbulenceFields::~turbulenceFields()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::turbulenceFields::read(const dictionary& dict)
+void Foam::functionObjects::turbulenceFields::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        fieldSet_.insert(wordList(dict.lookup("fields")));
+    fieldSet_.insert(wordList(dict.lookup("fields")));
 
-        Info<< type() << " " << name_ << ": ";
-        if (fieldSet_.size())
-        {
-            Info<< "storing fields:" << nl;
-            forAllConstIter(wordHashSet, fieldSet_, iter)
-            {
-                Info<< "    " << modelName << ':' << iter.key() << nl;
-            }
-            Info<< endl;
-        }
-        else
+    Info<< type() << " " << name_ << ": ";
+    if (fieldSet_.size())
+    {
+        Info<< "storing fields:" << nl;
+        forAllConstIter(wordHashSet, fieldSet_, iter)
         {
-            Info<< "no fields requested to be stored" << nl << endl;
+            Info<< "    " << modelName << ':' << iter.key() << nl;
         }
+        Info<< endl;
+    }
+    else
+    {
+        Info<< "no fields requested to be stored" << nl << endl;
     }
 }
 
 
-void Foam::turbulenceFields::execute()
+void Foam::functionObjects::turbulenceFields::execute()
 {
     bool comp = compressible();
 
-    if (!active_)
-    {
-        return;
-    }
-
     if (comp)
     {
         const compressible::turbulenceModel& model =
@@ -269,20 +300,17 @@ void Foam::turbulenceFields::execute()
 }
 
 
-void Foam::turbulenceFields::end()
+void Foam::functionObjects::turbulenceFields::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::turbulenceFields::timeSet()
+void Foam::functionObjects::turbulenceFields::timeSet()
 {}
 
 
-void Foam::turbulenceFields::write()
+void Foam::functionObjects::turbulenceFields::write()
 {}
 
 
diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H
index af37dc1cbcb9e4498ce1b2e32ca8a3ea1eaedd70..c31eaceca40f156f7afec5bd5441ed90eb1022cf 100644
--- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H
+++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::turbulenceFields
+    Foam::functionObjects::turbulenceFields
 
 Group
     grpFieldFunctionObjects
@@ -103,6 +103,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                       Class turbulenceFields Declaration
 \*---------------------------------------------------------------------------*/
@@ -147,9 +150,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Fields to load
         wordHashSet fieldSet_;
 
@@ -197,6 +197,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~turbulenceFields();
@@ -237,6 +247,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H
index e9e393d170dc17a59365d7b3e0fdffe81add1a28..6d600f7ce72aff37e897a0b58338e379113a2733 100644
--- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<turbulenceFields>
+    typedef OutputFilterFunctionObject<functionObjects::turbulenceFields>
         turbulenceFieldsFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C
index 727917928acd49e6637a6930b542a8b2ff86df21..b8c2b6440f314ffcf88b9555bbefd80a998d64f3 100644
--- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C
+++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C
@@ -28,7 +28,7 @@ License
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class Type>
-void Foam::turbulenceFields::processField
+void Foam::functionObjects::turbulenceFields::processField
 (
     const word& fieldName,
     const tmp<GeometricField<Type, fvPatchField, volMesh>>& tvalue
diff --git a/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H b/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H
index c2ac753b1fbe5d82186792db82ca3921b8e78871..1d04fae2f8f6fd793af2d26b12f9405729d84b10 100644
--- a/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H
+++ b/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<vorticity> IOvorticity;
+    typedef IOOutputFilter<functionObjects::vorticity> IOvorticity;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C
index 6d22f5a97729912007b4bc62e7e5464306c87c6d..fd45701ecf2bcacb13f3fb3edc02e9b25365db48 100644
--- a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C
+++ b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C
@@ -31,14 +31,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(vorticity, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::vorticity::vorticity
+Foam::functionObjects::vorticity::vorticity
 (
     const word& name,
     const objectRegistry& obr,
@@ -48,113 +51,98 @@ Foam::vorticity::vorticity
 :
     name_(name),
     obr_(obr),
-    active_(true),
     UName_("U"),
     outputName_(typeName)
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
     read(dict);
 
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volVectorField* vorticityPtr
+    volVectorField* vorticityPtr
+    (
+        new volVectorField
         (
-            new volVectorField
+            IOobject
             (
-                IOobject
-                (
-                    outputName_,
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                outputName_,
+                mesh.time().timeName(),
                 mesh,
-                dimensionedVector("0", dimless/dimTime, Zero)
-            )
-        );
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedVector("0", dimless/dimTime, Zero)
+        )
+    );
+
+    mesh.objectRegistry::store(vorticityPtr);
+}
 
-        mesh.objectRegistry::store(vorticityPtr);
-    }
+
+bool Foam::functionObjects::vorticity::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::vorticity::~vorticity()
+Foam::functionObjects::vorticity::~vorticity()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::vorticity::read(const dictionary& dict)
+void Foam::functionObjects::vorticity::read(const dictionary& dict)
 {
-    if (active_)
+    UName_ = dict.lookupOrDefault<word>("UName", "U");
+    if (UName_ != "U")
     {
-        UName_ = dict.lookupOrDefault<word>("UName", "U");
-        if (UName_ != "U")
-        {
-            outputName_ = typeName + "(" + UName_ + ")";
-        }
+        outputName_ = typeName + "(" + UName_ + ")";
     }
 }
 
 
-void Foam::vorticity::execute()
+void Foam::functionObjects::vorticity::execute()
 {
-    if (active_)
-    {
-        const volVectorField& U = obr_.lookupObject<volVectorField>(UName_);
+    const volVectorField& U = obr_.lookupObject<volVectorField>(UName_);
 
-        volVectorField& vorticity =
-            const_cast<volVectorField&>
-            (
-                obr_.lookupObject<volVectorField>(outputName_)
-            );
+    volVectorField& vorticity = const_cast<volVectorField&>
+    (
+        obr_.lookupObject<volVectorField>(outputName_)
+    );
 
-        vorticity = fvc::curl(U);
-    }
+    vorticity = fvc::curl(U);
 }
 
 
-void Foam::vorticity::end()
+void Foam::functionObjects::vorticity::end()
 {
-    if (active_)
-    {
-        execute();
-    }
+    execute();
 }
 
 
-void Foam::vorticity::timeSet()
-{
-    // Do nothing
-}
+void Foam::functionObjects::vorticity::timeSet()
+{}
 
 
-void Foam::vorticity::write()
+void Foam::functionObjects::vorticity::write()
 {
-    if (active_)
-    {
-        const volVectorField& vorticity =
-            obr_.lookupObject<volVectorField>(outputName_);
+    const volVectorField& vorticity =
+        obr_.lookupObject<volVectorField>(outputName_);
 
-        Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << vorticity.name() << nl
-            << endl;
+    Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << vorticity.name() << nl
+        << endl;
 
-        vorticity.write();
-    }
+    vorticity.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H
index bce5d943ebc1a1390cda05422b706c5565f80419..dd6a7dff0744240f91bb3ffa2ffcc28e0683d1f6 100644
--- a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H
+++ b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::vorticity
+    Foam::functionObjects::vorticity
 
 Group
     grpUtilitiesFunctionObjects
@@ -52,6 +52,9 @@ class dictionary;
 class polyMesh;
 class mapPolyMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                           Class vorticity Declaration
 \*---------------------------------------------------------------------------*/
@@ -66,9 +69,6 @@ class vorticity
         //- Reference to the database
         const objectRegistry& obr_;
 
-        //- On/off switch
-        bool active_;
-
         //- Name of velocity field, default is "U"
         word UName_;
 
@@ -103,6 +103,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~vorticity();
@@ -143,6 +153,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H b/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H
index 765ec1e6f9b73876eed8d76549037068c9e344aa..aee3f04f8e1bd5dc78e6e7407eeac628f91cb474 100644
--- a/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<vorticity> vorticityFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::vorticity>
+        vorticityFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H b/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H
index c7e453b1d8626d0154171d08119464efa973cef6..3a38e7fc0c8ce781180169cbe1ed4db37386d021 100644
--- a/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H
+++ b/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<wallShearStress> IOwallShearStress;
+    typedef IOOutputFilter<functionObjects::wallShearStress> IOwallShearStress;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C
index d64abbf03ca3e3fb54b8bdfb98a298c560d55459..e2160e34311dcb6adc6f2bca9ea2586955c0f4bd 100644
--- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C
+++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C
@@ -33,14 +33,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(wallShearStress, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * //
 
-void Foam::wallShearStress::writeFileHeader(const label i)
+void Foam::functionObjects::wallShearStress::writeFileHeader(const label i)
 {
     // Add headers to output data
     writeHeader(file(), "Wall shear stress");
@@ -52,7 +55,7 @@ void Foam::wallShearStress::writeFileHeader(const label i)
 }
 
 
-void Foam::wallShearStress::calcShearStress
+void Foam::functionObjects::wallShearStress::calcShearStress
 (
     const fvMesh& mesh,
     const volSymmTensorField& Reff,
@@ -91,7 +94,7 @@ void Foam::wallShearStress::calcShearStress
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::wallShearStress::wallShearStress
+Foam::functionObjects::wallShearStress::wallShearStress
 (
     const word& name,
     const objectRegistry& obr,
@@ -102,194 +105,180 @@ Foam::wallShearStress::wallShearStress
     functionObjectFiles(obr, name, typeName),
     name_(name),
     obr_(obr),
-    active_(true),
     log_(true),
     patchSet_()
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
-
-        volVectorField* wallShearStressPtr
+    volVectorField* wallShearStressPtr
+    (
+        new volVectorField
         (
-            new volVectorField
+            IOobject
             (
-                IOobject
-                (
-                    type(),
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                type(),
+                mesh.time().timeName(),
                 mesh,
-                dimensionedVector
-                (
-                    "0",
-                    sqr(dimLength)/sqr(dimTime),
-                    Zero
-                )
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedVector
+            (
+                "0",
+                sqr(dimLength)/sqr(dimTime),
+                Zero
             )
-        );
+        )
+    );
 
-        mesh.objectRegistry::store(wallShearStressPtr);
-    }
+    mesh.objectRegistry::store(wallShearStressPtr);
 
     read(dict);
 }
 
 
+bool Foam::functionObjects::wallShearStress::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::wallShearStress::~wallShearStress()
+Foam::functionObjects::wallShearStress::~wallShearStress()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::wallShearStress::read(const dictionary& dict)
+void Foam::functionObjects::wallShearStress::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        log_ = dict.lookupOrDefault<Switch>("log", true);
+    log_ = dict.lookupOrDefault<Switch>("log", true);
 
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
-        const polyBoundaryMesh& pbm = mesh.boundaryMesh();
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const polyBoundaryMesh& pbm = mesh.boundaryMesh();
 
-        patchSet_ =
-            mesh.boundaryMesh().patchSet
-            (
-                wordReList(dict.lookupOrDefault("patches", wordReList()))
-            );
+    patchSet_ =
+        mesh.boundaryMesh().patchSet
+        (
+            wordReList(dict.lookupOrDefault("patches", wordReList()))
+        );
 
-        Info<< type() << " " << name_ << ":" << nl;
+    Info<< type() << " " << name_ << ":" << nl;
 
-        if (patchSet_.empty())
+    if (patchSet_.empty())
+    {
+        forAll(pbm, patchi)
         {
-            forAll(pbm, patchi)
+            if (isA<wallPolyPatch>(pbm[patchi]))
             {
-                if (isA<wallPolyPatch>(pbm[patchi]))
-                {
-                    patchSet_.insert(patchi);
-                }
+                patchSet_.insert(patchi);
             }
-
-            Info<< "    processing all wall patches" << nl << endl;
         }
-        else
+
+        Info<< "    processing all wall patches" << nl << endl;
+    }
+    else
+    {
+        Info<< "    processing wall patches: " << nl;
+        labelHashSet filteredPatchSet;
+        forAllConstIter(labelHashSet, patchSet_, iter)
         {
-            Info<< "    processing wall patches: " << nl;
-            labelHashSet filteredPatchSet;
-            forAllConstIter(labelHashSet, patchSet_, iter)
+            label patchi = iter.key();
+            if (isA<wallPolyPatch>(pbm[patchi]))
             {
-                label patchi = iter.key();
-                if (isA<wallPolyPatch>(pbm[patchi]))
-                {
-                    filteredPatchSet.insert(patchi);
-                    Info<< "        " << pbm[patchi].name() << endl;
-                }
-                else
-                {
-                    WarningInFunction
-                        << "Requested wall shear stress on non-wall boundary "
-                        << "type patch: " << pbm[patchi].name() << endl;
-                }
+                filteredPatchSet.insert(patchi);
+                Info<< "        " << pbm[patchi].name() << endl;
             }
+            else
+            {
+                WarningInFunction
+                    << "Requested wall shear stress on non-wall boundary "
+                    << "type patch: " << pbm[patchi].name() << endl;
+            }
+        }
 
-            Info<< endl;
+        Info<< endl;
 
-            patchSet_ = filteredPatchSet;
-        }
+        patchSet_ = filteredPatchSet;
     }
 }
 
 
-void Foam::wallShearStress::execute()
+void Foam::functionObjects::wallShearStress::execute()
 {
     typedef compressible::turbulenceModel cmpModel;
     typedef incompressible::turbulenceModel icoModel;
 
-    if (active_)
-    {
-        functionObjectFiles::write();
-
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
-
-        volVectorField& wallShearStress =
-            const_cast<volVectorField&>
-            (
-                mesh.lookupObject<volVectorField>(type())
-            );
+    functionObjectFiles::write();
 
-        if (log_) Info<< type() << " " << name_ << " output:" << nl;
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
+    volVectorField& wallShearStress =
+        const_cast<volVectorField&>
+        (
+            mesh.lookupObject<volVectorField>(type())
+        );
 
-        tmp<volSymmTensorField> Reff;
-        if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName))
-        {
-            const cmpModel& model =
-                mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName);
+    if (log_) Info<< type() << " " << name_ << " output:" << nl;
 
-            Reff = model.devRhoReff();
-        }
-        else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName))
-        {
-            const icoModel& model =
-                mesh.lookupObject<icoModel>(turbulenceModel::propertiesName);
 
-            Reff = model.devReff();
-        }
-        else
-        {
-            FatalErrorInFunction
-                << "Unable to find turbulence model in the "
-                << "database" << exit(FatalError);
-        }
+    tmp<volSymmTensorField> Reff;
+    if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName))
+    {
+        const cmpModel& model =
+            mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName);
 
-        calcShearStress(mesh, Reff(), wallShearStress);
+        Reff = model.devRhoReff();
     }
-}
-
+    else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName))
+    {
+        const icoModel& model =
+            mesh.lookupObject<icoModel>(turbulenceModel::propertiesName);
 
-void Foam::wallShearStress::end()
-{
-    if (active_)
+        Reff = model.devReff();
+    }
+    else
     {
-        execute();
+        FatalErrorInFunction
+            << "Unable to find turbulence model in the "
+            << "database" << exit(FatalError);
     }
+
+    calcShearStress(mesh, Reff(), wallShearStress);
 }
 
 
-void Foam::wallShearStress::timeSet()
+void Foam::functionObjects::wallShearStress::end()
 {
-    // Do nothing
+    execute();
 }
 
 
-void Foam::wallShearStress::write()
+void Foam::functionObjects::wallShearStress::timeSet()
+{}
+
+
+void Foam::functionObjects::wallShearStress::write()
 {
-    if (active_)
-    {
-        functionObjectFiles::write();
+    functionObjectFiles::write();
 
-        const volVectorField& wallShearStress =
-            obr_.lookupObject<volVectorField>(type());
+    const volVectorField& wallShearStress =
+        obr_.lookupObject<volVectorField>(type());
 
-        if (log_) Info<< type() << " " << name_ << " output:" << nl
-            << "    writing field " << wallShearStress.name() << nl
-            << endl;
+    if (log_) Info<< type() << " " << name_ << " output:" << nl
+        << "    writing field " << wallShearStress.name() << nl
+        << endl;
 
-        wallShearStress.write();
-    }
+    wallShearStress.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H
index b99c08ad6f6299d690a93cfabb0b9658f2991e69..519851b4a4a0a13e1a1156da36dca492372775b0 100644
--- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H
+++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::wallShearStress
+    Foam::functionObjects::wallShearStress
 
 Group
     grpUtilitiesFunctionObjects
@@ -90,6 +90,9 @@ class polyMesh;
 class mapPolyMesh;
 class fvMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                        Class wallShearStress Declaration
 \*---------------------------------------------------------------------------*/
@@ -107,9 +110,6 @@ protected:
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Switch to send output to Info as well as to file
         Switch log_;
 
@@ -160,6 +160,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~wallShearStress();
@@ -200,6 +210,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H
index 6b0dfc47f4894e04f98fed53a86af7c757290a0d..5e15293c548da2ff003335b5049fe25b4e9a7b99 100644
--- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<wallShearStress>
+    typedef OutputFilterFunctionObject<functionObjects::wallShearStress>
         wallShearStressFunctionObject;
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H b/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H
index dc2eaef11e7a628a6c51e93b2365ce912964b190..9276c243ee8929be4d853cffc6ba0e01b8d72041 100644
--- a/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H
+++ b/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
 
 namespace Foam
 {
-    typedef IOOutputFilter<yPlus> IOyPlus;
+    typedef IOOutputFilter<functionObjects::yPlus> IOyPlus;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C
index d5242319e27bbda40561d8aa45dd9daa84b697f8..9b6289a814f814fbd2ffa47dc9ca3a87fe3facb3 100644
--- a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C
+++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C
@@ -31,14 +31,17 @@ License
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
+{
+namespace functionObjects
 {
     defineTypeNameAndDebug(yPlus, 0);
 }
+}
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::yPlus::writeFileHeader(const label i)
+void Foam::functionObjects::yPlus::writeFileHeader(const label i)
 {
     writeHeader(file(), "y+ ()");
 
@@ -53,7 +56,7 @@ void Foam::yPlus::writeFileHeader(const label i)
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::yPlus::yPlus
+Foam::functionObjects::yPlus::yPlus
 (
     const word& name,
     const objectRegistry& obr,
@@ -64,135 +67,121 @@ Foam::yPlus::yPlus
     functionObjectFiles(obr, name, typeName),
     name_(name),
     obr_(obr),
-    active_(true),
     log_(true),
     phiName_("phi")
 {
-    // Check if the available mesh is an fvMesh, otherwise deactivate
-    if (!isA<fvMesh>(obr_))
-    {
-        active_ = false;
-        WarningInFunction
-            << "No fvMesh available, deactivating " << name_ << nl
-            << endl;
-    }
-
-    if (active_)
-    {
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volScalarField* yPlusPtr
+    volScalarField* yPlusPtr
+    (
+        new volScalarField
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    type(),
-                    mesh.time().timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                type(),
+                mesh.time().timeName(),
                 mesh,
-                dimensionedScalar("0", dimless, 0.0)
-            )
-        );
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("0", dimless, 0.0)
+        )
+    );
+
+    mesh.objectRegistry::store(yPlusPtr);
+}
 
-        mesh.objectRegistry::store(yPlusPtr);
-    }
+
+bool Foam::functionObjects::yPlus::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::yPlus::~yPlus()
+Foam::functionObjects::yPlus::~yPlus()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::yPlus::read(const dictionary& dict)
+void Foam::functionObjects::yPlus::read(const dictionary& dict)
 {
-    if (active_)
-    {
-        log_ = dict.lookupOrDefault<Switch>("log", true);
-        phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
-    }
+    log_ = dict.lookupOrDefault<Switch>("log", true);
+    phiName_ = dict.lookupOrDefault<word>("phiName", "phi");
 }
 
 
-void Foam::yPlus::execute()
+void Foam::functionObjects::yPlus::execute()
 {
     typedef compressible::turbulenceModel cmpModel;
     typedef incompressible::turbulenceModel icoModel;
 
-    if (active_)
-    {
-        functionObjectFiles::write();
+    functionObjectFiles::write();
 
-        const fvMesh& mesh = refCast<const fvMesh>(obr_);
+    const fvMesh& mesh = refCast<const fvMesh>(obr_);
 
-        volScalarField& yPlus =
-            const_cast<volScalarField&>
-            (
-                mesh.lookupObject<volScalarField>(type())
-            );
-
-        if (log_) Info<< type() << " " << name_ << " output:" << nl;
-
-        tmp<volSymmTensorField> Reff;
-        if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName))
-        {
-            const cmpModel& model =
-                mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName);
-
-            calcYPlus(model, mesh, yPlus);
-        }
-        else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName))
-        {
-            const icoModel& model =
-                mesh.lookupObject<icoModel>(turbulenceModel::propertiesName);
-
-            calcYPlus(model, mesh, yPlus);
-        }
-        else
-        {
-            FatalErrorInFunction
-                << "Unable to find turbulence model in the "
-                << "database" << exit(FatalError);
-        }
-    }
-}
+    volScalarField& yPlus =
+        const_cast<volScalarField&>
+        (
+            mesh.lookupObject<volScalarField>(type())
+        );
 
+    if (log_) Info<< type() << " " << name_ << " output:" << nl;
 
-void Foam::yPlus::end()
-{
-    if (active_)
+    tmp<volSymmTensorField> Reff;
+    if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName))
+    {
+        const cmpModel& model =
+            mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName);
+
+        calcYPlus(model, mesh, yPlus);
+    }
+    else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName))
     {
-        execute();
+        const icoModel& model =
+            mesh.lookupObject<icoModel>(turbulenceModel::propertiesName);
+
+        calcYPlus(model, mesh, yPlus);
+    }
+    else
+    {
+        FatalErrorInFunction
+            << "Unable to find turbulence model in the "
+            << "database" << exit(FatalError);
     }
 }
 
 
-void Foam::yPlus::timeSet()
+void Foam::functionObjects::yPlus::end()
 {
-    // Do nothing
+    execute();
 }
 
 
-void Foam::yPlus::write()
+void Foam::functionObjects::yPlus::timeSet()
+{}
+
+
+void Foam::functionObjects::yPlus::write()
 {
-    if (active_)
-    {
-        functionObjectFiles::write();
+    functionObjectFiles::write();
 
-        const volScalarField& yPlus =
-            obr_.lookupObject<volScalarField>(type());
+    const volScalarField& yPlus =
+        obr_.lookupObject<volScalarField>(type());
 
-        if (log_) Info<< "    writing field " << yPlus.name() << nl << endl;
+    if (log_) Info<< "    writing field " << yPlus.name() << nl << endl;
 
-        yPlus.write();
-    }
+    yPlus.write();
 }
 
 
diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H
index e1653107cd73a7a2dcc27cadb059ba19ada6ac25..7b026d977135387bf0f5caea98173d4c5ad61ee7 100644
--- a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H
+++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::yPlus
+    Foam::functionObjects::yPlus
 
 Group
     grpUtilitiesFunctionObjects
@@ -57,6 +57,9 @@ class polyMesh;
 class mapPolyMesh;
 class fvMesh;
 
+namespace functionObjects
+{
+
 /*---------------------------------------------------------------------------*\
                           Class yPlus Declaration
 \*---------------------------------------------------------------------------*/
@@ -72,9 +75,6 @@ class yPlus
 
         const objectRegistry& obr_;
 
-        //- on/off switch
-        bool active_;
-
         //- Switch to send output to Info as well as to file
         Switch log_;
 
@@ -121,6 +121,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~yPlus();
@@ -161,6 +171,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace functionObjects
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H b/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H
index dd54426043a5f337ad3ff4710880ccd1b7544e99..7075ea2729dfca5f923e30eb4b7ce243fc5384b9 100644
--- a/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,8 @@ SourceFiles
 
 namespace Foam
 {
-    typedef OutputFilterFunctionObject<yPlus> yPlusFunctionObject;
+    typedef OutputFilterFunctionObject<functionObjects::yPlus>
+        yPlusFunctionObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C b/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C
index 189a6b3d9f9433e8296f2ed005d82ede2771f66b..6577f516819a8b043e09eda9539e430f5ee6aba4 100644
--- a/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C
+++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C
@@ -31,7 +31,7 @@ License
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class TurbulenceModel>
-void Foam::yPlus::calcYPlus
+void Foam::functionObjects::yPlus::calcYPlus
 (
     const TurbulenceModel& turbulenceModel,
     const fvMesh& mesh,
diff --git a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C
index 5534767806434bb1a6cb752eb49630f37318cbc3..8e01df73ef6d50a24765884490642c85f8d87e17 100644
--- a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C
+++ b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -135,15 +135,11 @@ noPyrolysis::~noPyrolysis()
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void noPyrolysis::preEvolveRegion()
-{
-    //Do nothing
-}
+{}
 
 
 void noPyrolysis::evolveRegion()
-{
-    //Do nothing
-}
+{}
 
 
 const volScalarField& noPyrolysis::rho() const
diff --git a/src/sampling/meshToMesh0/meshToMesh0Templates.C b/src/sampling/meshToMesh0/meshToMesh0Templates.C
index e4d4f49ab56a561dd8de7f5f35f71bd8cadc5da0..2eae59e4fc4fbaafba9882a72a0e11c96d213591 100644
--- a/src/sampling/meshToMesh0/meshToMesh0Templates.C
+++ b/src/sampling/meshToMesh0/meshToMesh0Templates.C
@@ -303,7 +303,6 @@ void Foam::meshToMesh0::interpolate
                 }
                 case CELL_VOLUME_WEIGHT:
                 {
-                    // Do nothing
                     break;
                 }
 
diff --git a/src/sampling/probes/patchProbes.C b/src/sampling/probes/patchProbes.C
index 0d4acb2de6d6e189618858dc5d4003666d4e839c..0541cd5c7e3ed7c112fac59fb280ea41c938b7a8 100644
--- a/src/sampling/probes/patchProbes.C
+++ b/src/sampling/probes/patchProbes.C
@@ -202,6 +202,18 @@ Foam::patchProbes::patchProbes
 }
 
 
+bool Foam::patchProbes::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    return true;
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 Foam::patchProbes::~patchProbes()
diff --git a/src/sampling/probes/patchProbes.H b/src/sampling/probes/patchProbes.H
index 7ee2e796d0bf48446fe6bbd80d4950402543b93f..447463ebe97f4e443306848e55a87918719e98fc 100644
--- a/src/sampling/probes/patchProbes.H
+++ b/src/sampling/probes/patchProbes.H
@@ -138,6 +138,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~patchProbes();
diff --git a/src/sampling/probes/probes.C b/src/sampling/probes/probes.C
index 8d4b50f97f612632e4b0f34236084a5b74345585..661bba6a4dd7ff391ed0d93ecf0b8268d840a113 100644
--- a/src/sampling/probes/probes.C
+++ b/src/sampling/probes/probes.C
@@ -287,6 +287,18 @@ Foam::probes::probes
 }
 
 
+bool Foam::probes::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    return true;
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 Foam::probes::~probes()
@@ -296,21 +308,15 @@ Foam::probes::~probes()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 void Foam::probes::execute()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::probes::end()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::probes::timeSet()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::probes::write()
diff --git a/src/sampling/probes/probes.H b/src/sampling/probes/probes.H
index 2d7e8c1d767bc5c20f2836d452138030aa98e219..18de7b51510f1a5a008656459101948180f80afc 100644
--- a/src/sampling/probes/probes.H
+++ b/src/sampling/probes/probes.H
@@ -210,6 +210,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~probes();
diff --git a/src/sampling/sampledSet/sampledSets/sampledSets.C b/src/sampling/sampledSet/sampledSets/sampledSets.C
index 538249d1afc7c64f3294ccba2427d08e3a839afd..1a0723762fd21b79db96fd9138b112f94fe7e122 100644
--- a/src/sampling/sampledSet/sampledSets/sampledSets.C
+++ b/src/sampling/sampledSet/sampledSets/sampledSets.C
@@ -162,6 +162,18 @@ Foam::sampledSets::sampledSets
 }
 
 
+bool Foam::sampledSets::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    return true;
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 Foam::sampledSets::~sampledSets()
@@ -177,21 +189,15 @@ void Foam::sampledSets::verbose(const bool verbosity)
 
 
 void Foam::sampledSets::execute()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::sampledSets::end()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::sampledSets::timeSet()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::sampledSets::write()
diff --git a/src/sampling/sampledSet/sampledSets/sampledSets.H b/src/sampling/sampledSet/sampledSets/sampledSets.H
index 26e494c28d3b8da0f703c53be3337fc693a7e01e..332efc2e533a33275dfb9a5895580c3b5e979440 100644
--- a/src/sampling/sampledSet/sampledSets/sampledSets.H
+++ b/src/sampling/sampledSet/sampledSets/sampledSets.H
@@ -266,6 +266,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~sampledSets();
diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C
index 220a61baee674efb9babf13b088fe7719637d49e..41ac7b56e1411202df6bc6f363dd32ac4bf97f05 100644
--- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C
+++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -115,6 +115,19 @@ Foam::sampledSurfaces::sampledSurfaces
 }
 
 
+bool Foam::sampledSurfaces::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    return true;
+}
+
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 Foam::sampledSurfaces::~sampledSurfaces()
@@ -130,21 +143,15 @@ void Foam::sampledSurfaces::verbose(const bool verbosity)
 
 
 void Foam::sampledSurfaces::execute()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::sampledSurfaces::end()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::sampledSurfaces::timeSet()
-{
-    // Do nothing - only valid on write
-}
+{}
 
 
 void Foam::sampledSurfaces::write()
diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H
index f2c2430e5a693bb363e699b47637e5a98c3c0f1d..50b6f2710a8bbb4a73f91a20ecd138d16ccfb20b 100644
--- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H
+++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H
@@ -186,6 +186,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~sampledSurfaces();
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
index 282c77a8a26156b7f607d64145628aecaca54bdb..866fbe8d2be9daea7968f9988182c942e9622764 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C
@@ -136,8 +136,6 @@ updateCoeffs()
         return;
     }
 
-    // Do nothing
-
     if (debug)
     {
         scalar Q = gSum((*this)*patch().magSf());
diff --git a/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C b/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C
index e89127328ad83f30dc10977a07a1979cce5c9abf..c3233d5ebde0c2849e8ec58e9247dd1dca2c46f2 100644
--- a/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C
+++ b/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C
@@ -75,9 +75,7 @@ bool Foam::radiation::noRadiation::read()
 
 
 void Foam::radiation::noRadiation::calculate()
-{
-    // Do nothing
-}
+{}
 
 
 Foam::tmp<Foam::volScalarField> Foam::radiation::noRadiation::Rp() const
diff --git a/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C b/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C
index dd5b0268db018bca575cc9ba0cf5aa3a74431c80..740b9a94bbee499e4b76dc75ee129252cf5b3acb 100644
--- a/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C
+++ b/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C
@@ -76,9 +76,7 @@ bool Foam::radiation::opaqueSolid::read()
 
 
 void Foam::radiation::opaqueSolid::calculate()
-{
-    // Do nothing
-}
+{}
 
 
 Foam::tmp<Foam::volScalarField> Foam::radiation::opaqueSolid::Rp() const
diff --git a/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C b/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C
index 7b621ac7e3b415d90215d92a9edbed03a89511f3..42429fc5c727c0b4cf0afde945491dc80db00711 100644
--- a/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C
+++ b/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -61,9 +61,7 @@ Foam::radiation::noSoot::~noSoot()
 
 
 void Foam::radiation::noSoot::correct()
-{
-    //Do nothing
-}
+{}
 
 const Foam::volScalarField& Foam::radiation::noSoot::soot() const
 {
diff --git a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C
index 39e5e308da3ee4c7e9b86b5638193fae0861714f..f7d8bb51ab74f8ad314230a00ed8895610f9d4ad 100644
--- a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C
+++ b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C
@@ -102,6 +102,20 @@ Foam::moleFractions<ThermoType>::moleFractions
 }
 
 
+template<class ThermoType>
+bool Foam::moleFractions<ThermoType>::viable
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+{
+    // Construction is viable if the available mesh is an fvMesh
+    return isA<fvMesh>(obr);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class ThermoType>
diff --git a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H
index 05c7fa416a59a9f06cb72b1517f726bea36c15f4..7e6beb8c19f2e127ebfff92b213decd7ad427662 100644
--- a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H
+++ b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H
@@ -119,6 +119,16 @@ public:
             const bool loadFromFiles = false
         );
 
+        //- Return true if the construction of this functionObject is viable
+        //  i.e. the prerequisites for construction are available
+        static bool viable
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
 
     //- Destructor
     virtual ~moleFractions();