diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/calculateAverages.H b/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/calculateAverages.H
deleted file mode 100644
index aad4a99cb71c912fcf77db9dcef1f160a499a241..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/calculateAverages.H
+++ /dev/null
@@ -1,10 +0,0 @@
-    nAveragingSteps++;
-
-    scalar nm1Coeff = scalar(nAveragingSteps - 1)/nAveragingSteps;
-    scalar nCoeff = 1.0/nAveragingSteps;
-
-    UaMean = nm1Coeff*UaMean + nCoeff*Ua;
-    UbMean = nm1Coeff*UbMean + nCoeff*Ub;
-
-    alphaMean = nm1Coeff*alphaMean + nCoeff*alpha;
-    pMean = nm1Coeff*pMean + nCoeff*p;
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/createAverages.H b/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/createAverages.H
deleted file mode 100644
index 5d6973da1e06c1a049d0a13cbe2fbd6e06bc1bd5..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/createAverages.H
+++ /dev/null
@@ -1,138 +0,0 @@
-    label nAveragingSteps = 1;
-
-    IFstream nAveragingStepsFile
-    (
-        runTime.path()/runTime.timeName()/"nAveragingSteps.raw"
-    );
-
-
-    volVectorField* UaMeanPtr;
-    volVectorField* UbMeanPtr;
- 
-    volScalarField* alphaMeanPtr;
-    volScalarField* pMeanPtr;
-
-    if (nAveragingStepsFile.good())
-    {
-        nAveragingStepsFile >> nAveragingSteps;
-
-        Info<< "Reading field UaMean\n" << endl;
-        UaMeanPtr = new volVectorField
-        (
-            IOobject
-            (
-                "UaMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::MUST_READ,
-                IOobject::AUTO_WRITE
-            ),
-            mesh
-        );
-        
-        Info<< "Reading field UbMean\n" << endl;
-        UbMeanPtr = new volVectorField
-        (
-            IOobject
-            (
-                "UbMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::MUST_READ,
-                IOobject::AUTO_WRITE
-            ),
-            mesh
-        );
-
-        Info<< "Reading field alphaMean\n" << endl;
-        alphaMeanPtr = new volScalarField
-        (
-            IOobject
-            (
-                "alphaMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::MUST_READ,
-                IOobject::AUTO_WRITE
-            ),
-            mesh
-        );
-
-        Info<< "Reading field pMean\n" << endl;
-        pMeanPtr = new volScalarField
-        (
-            IOobject
-            (
-                "pMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::MUST_READ,
-                IOobject::AUTO_WRITE
-            ),
-            mesh
-        );
-    }
-    else
-    {
-        Info<< "Creating field UaMean\n" << endl;
-        UaMeanPtr = new volVectorField
-        (
-            IOobject
-            (
-                "UaMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::NO_READ,
-                IOobject::AUTO_WRITE
-            ),
-            Ua
-        );
-        
-        Info<< "Creating field UbMean\n" << endl;
-        UbMeanPtr = new volVectorField
-        (
-            IOobject
-            (
-                "UbMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::NO_READ,
-                IOobject::AUTO_WRITE
-            ),
-            Ub
-        );
-
-        Info<< "Creating field alphaMean\n" << endl;
-        alphaMeanPtr = new volScalarField
-        (
-            IOobject
-            (
-                "alphaMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::NO_READ,
-                IOobject::AUTO_WRITE
-            ),
-            alpha
-        );
-
-        Info<< "Creating field pMean\n" << endl;
-        pMeanPtr = new volScalarField
-        (
-            IOobject
-            (
-                "pMean",
-                runTime.timeName(),
-                mesh,
-                IOobject::NO_READ,
-                IOobject::AUTO_WRITE
-            ),
-            p
-        );
-    }
-
-    volVectorField& UaMean = *UaMeanPtr;
-    volVectorField& UbMean = *UbMeanPtr;
-
-    volScalarField& alphaMean = *alphaMeanPtr;
-    volScalarField& pMean = *pMeanPtr;
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/writeNaveragingSteps.H b/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/writeNaveragingSteps.H
deleted file mode 100644
index 009eafd4b98a8fb9a640c9c54c737946e6048344..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/averaging/writeNaveragingSteps.H
+++ /dev/null
@@ -1,21 +0,0 @@
-    if (runTime.outputTime())
-    {
-        OFstream nAveragingStepsFile
-        (
-            runTime.path()/runTime.timeName()/"nAveragingSteps.raw"
-        );
-
-        if (nAveragingStepsFile.good())
-        {
-            nAveragingStepsFile << nAveragingSteps << endl;
-        }
-        else
-        {
-            FatalErrorIn(args.executable())
-                << "Cannot open file "
-                << runTime.path()/runTime.timeName()/"nAveragingSteps.raw"
-                << abort(FatalError);
-        }
-        
-        mkDir(runTime.path()/runTime.timeName()/"data");
-    }
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
index 6daf59441b8f58b80e61bb094d7eda1f74c33a73..1d35db43f0eba8e4fa1de6416fade46b1914eecc 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
@@ -54,7 +54,6 @@ int main(int argc, char *argv[])
 #   include "createMesh.H"
 #   include "readEnvironmentalProperties.H"
 #   include "createFields.H"
-#   include "createAverages.H"
 #   include "readPPProperties.H"
 #   include "initContinuityErrs.H"
 #   include "readTimeControls.H"
@@ -100,9 +99,7 @@ int main(int argc, char *argv[])
             kineticTheory.solve();
             nuEffa += kineticTheory.mua()/rhoa;
         }
-#       include "calculateAverages.H"
 #       include "write.H"
-#       include "writeNaveragingSteps.H"
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
diff --git a/tutorials/twoPhaseEulerFoam/bed/system/controlDict b/tutorials/twoPhaseEulerFoam/bed/system/controlDict
index d625e80f716f0b7d5f49ddefe2ddef09c0538acb..1fc42f5c6e6ce9d65058b976e1ac59ecbafe8931 100644
--- a/tutorials/twoPhaseEulerFoam/bed/system/controlDict
+++ b/tutorials/twoPhaseEulerFoam/bed/system/controlDict
@@ -50,4 +50,45 @@ maxCo           0.5;
 
 maxDeltaT      1;
 
+functions
+(
+    fieldAverage1
+    {
+        // Type of functionObject
+        type fieldAverage;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libfieldAverage.so");
+
+        // Fields to be  averaged - runTime modifiable
+        fields
+        (
+            Ua
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            Ub
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            alpha
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            p
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+        );
+    }
+);
+
 // ************************************************************************* //
diff --git a/tutorials/twoPhaseEulerFoam/bed2/system/controlDict b/tutorials/twoPhaseEulerFoam/bed2/system/controlDict
index 738c600db40fd6de4b2ff3b3637f2c7273e4b923..1ed9c8e8a3f5a710227e311c34470702b854e101 100644
--- a/tutorials/twoPhaseEulerFoam/bed2/system/controlDict
+++ b/tutorials/twoPhaseEulerFoam/bed2/system/controlDict
@@ -50,4 +50,45 @@ maxCo           0.9;
 
 maxDeltaT       1e-5;
 
+functions
+(
+    fieldAverage1
+    {
+        // Type of functionObject
+        type fieldAverage;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libfieldAverage.so");
+
+        // Fields to be  averaged - runTime modifiable
+        fields
+        (
+            Ua
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            Ub
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            alpha
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            p
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+        );
+    }
+);
+
 // ************************************************************************* //
diff --git a/tutorials/twoPhaseEulerFoam/bubbleColumn/system/controlDict b/tutorials/twoPhaseEulerFoam/bubbleColumn/system/controlDict
index cf8e7f8953bb46449e561f13523665c320a3ebce..0b3fc80653f6a0dff52b497d35b8b904e063180b 100644
--- a/tutorials/twoPhaseEulerFoam/bubbleColumn/system/controlDict
+++ b/tutorials/twoPhaseEulerFoam/bubbleColumn/system/controlDict
@@ -50,4 +50,45 @@ maxCo          0.5;
 
 maxDeltaT      1;
 
+functions
+(
+    fieldAverage1
+    {
+        // Type of functionObject
+        type fieldAverage;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libfieldAverage.so");
+
+        // Fields to be  averaged - runTime modifiable
+        fields
+        (
+            Ua
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            Ub
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            alpha
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+            p
+            {
+                mean            on;
+                prime2Mean      off;
+                base            time;
+            }
+        );
+    }
+);
+
 // ************************************************************************* //