diff --git a/applications/utilities/postProcessing/sampling/sample/Make/files b/applications/utilities/postProcessing/sampling/sample/Make/files
deleted file mode 100644
index 287a5f8a83fd219e5c255db082dfe1673b0d5f01..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/sampling/sample/Make/files
+++ /dev/null
@@ -1,3 +0,0 @@
-sample.C
-
-EXE = $(FOAM_APPBIN)/sample
diff --git a/applications/utilities/postProcessing/sampling/sample/Make/options b/applications/utilities/postProcessing/sampling/sample/Make/options
deleted file mode 100644
index 4de726a20fe6d4836f6aa33f3576202aec07fcdc..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/sampling/sample/Make/options
+++ /dev/null
@@ -1,16 +0,0 @@
-EXE_INC = \
-    -I$(LIB_SRC)/finiteVolume/lnInclude \
-    -I$(LIB_SRC)/meshTools/lnInclude \
-    -I$(LIB_SRC)/fileFormats/lnInclude \
-    -I$(LIB_SRC)/sampling/lnInclude \
-    -I$(LIB_SRC)/surfMesh/lnInclude \
-    -I$(LIB_SRC)/lagrangian/basic/lnInclude
-
-EXE_LIBS = \
-    -lfiniteVolume \
-    -lgenericPatchFields \
-    -lmeshTools \
-    -lfileFormats \
-    -lsampling \
-    -lsurfMesh \
-    -llagrangian
diff --git a/applications/utilities/postProcessing/sampling/sample/sample.C b/applications/utilities/postProcessing/sampling/sample/sample.C
deleted file mode 100644
index 59abc2e2f18ec888ad66ac078f9d29a90f250a0a..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/sampling/sample/sample.C
+++ /dev/null
@@ -1,209 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-Application
-    sample
-
-Description
-    Sample field data with a choice of interpolation schemes, sampling options
-    and write formats.
-
-    Keywords:
-
-    \param setFormat : set output format, choice of \n
-      - xmgr
-      - jplot
-      - gnuplot
-      - raw
-
-    \param surfaceFormat : surface output format, choice of \n
-      - null        : suppress output
-      - foamFile    : separate points, faces and values file
-      - dx          : DX scalar or vector format
-      - vtk         : VTK ascii format
-      - raw         : x y z value format for use with e.g. gnuplot 'splot'.
-      - obj         : Wavefron stl. Does not contain values!
-      - stl         : ascii stl. Does not contain values!
-
-    \param interpolationScheme : interpolation scheme, choice of \n
-      - cell          : use cell-centre value; constant over cells (default)
-      - cellPoint     : use cell-centre and vertex values
-      - cellPointFace : use cell-centre, vertex and face values. \n
-        -# vertex values determined from neighbouring cell-centre values
-        -# face values determined using the current face interpolation scheme
-           for the field (linear, limitedLinear, etc.)
-
-    \param fields : list of fields to sample
-
-    \param sets : list of sets to sample, choice of \n
-      - uniform             evenly distributed points on line
-      - face                one point per face intersection
-      - midPoint            one point per cell, inbetween two face intersections
-      - midPointAndFace     combination of face and midPoint
-
-      - curve               specified points, not nessecary on line, uses
-                            tracking
-      - cloud               specified points, uses findCell
-
-        Option axis: how to write point coordinate. Choice of
-          - x/y/z: x/y/z coordinate only
-          - xyz: three columns
-            (probably does not make sense for anything but raw)
-          - distance: distance from start of sampling line (if uses line)
-            or distance from first specified sampling point
-
-        Type specific options:
-            uniform, face, midPoint, midPointAndFace : start and end coordinate
-            uniform: extra number of sampling points
-            curve, cloud: list of coordinates
-
-    \param surfaces : list of surfaces to sample, choice of \n
-      - plane : values on plane defined by point, normal.
-      - patch : values on patch.
-
-Notes
-    Runs in parallel
-
-\*---------------------------------------------------------------------------*/
-
-#include "argList.H"
-#include "timeSelector.H"
-#include "IOsampledSets.H"
-#include "IOsampledSurfaces.H"
-
-using namespace Foam;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-int main(int argc, char *argv[])
-{
-    timeSelector::addOptions();
-    #include "addRegionOption.H"
-    #include "addDictOption.H"
-    #include "setRootCase.H"
-    #include "createTime.H"
-    instantList timeDirs = timeSelector::select0(runTime, args);
-    #include "createNamedMesh.H"
-
-    const word dictName("sampleDict");
-
-    autoPtr<IOsampledSets> sSetsPtr;
-    autoPtr<IOsampledSurfaces> sSurfsPtr;
-
-    if (args.optionFound("dict"))
-    {
-        // Construct from fileName
-
-        fileName dictPath = args["dict"];
-        if (isDir(dictPath))
-        {
-            dictPath = dictPath / dictName;
-        }
-
-        sSetsPtr.reset
-        (
-            new IOsampledSets
-            (
-                sampledSets::typeName,
-                mesh,
-                dictPath,
-                IOobject::MUST_READ_IF_MODIFIED,
-                true
-            )
-        );
-
-        // Note: both IOsampledSets and IOsampledSurfaces read the
-        //       same dictionary. Unregister one to make sure no duplicates
-        //       trying to register
-        sSetsPtr().checkOut();
-
-        sSurfsPtr.reset
-        (
-            new IOsampledSurfaces
-            (
-                sampledSurfaces::typeName,
-                mesh,
-                dictPath,
-                IOobject::MUST_READ_IF_MODIFIED,
-                true
-            )
-        );
-    }
-    else
-    {
-        // Construct from name in system() directory
-
-        sSetsPtr.reset
-        (
-            new IOsampledSets
-            (
-                sampledSets::typeName,
-                mesh,
-                dictName,
-                IOobject::MUST_READ_IF_MODIFIED,
-                true
-            )
-        );
-
-        sSetsPtr().checkOut();
-
-        sSurfsPtr.reset
-        (
-            new IOsampledSurfaces
-            (
-                sampledSurfaces::typeName,
-                mesh,
-                dictName,
-                IOobject::MUST_READ_IF_MODIFIED,
-                true
-            )
-        );
-    }
-
-    IOsampledSets& sSets = sSetsPtr();
-    IOsampledSurfaces& sSurfs = sSurfsPtr();
-
-    forAll(timeDirs, timeI)
-    {
-        runTime.setTime(timeDirs[timeI], timeI);
-        Info<< "Time = " << runTime.timeName() << endl;
-
-        // Handle geometry/topology changes
-        polyMesh::readUpdateState state = mesh.readUpdate();
-
-        sSets.readUpdate(state);
-        sSurfs.readUpdate(state);
-
-        sSets.write();
-        sSurfs.write();
-
-        Info<< endl;
-    }
-
-    Info<< "End\n" << endl;
-
-    return 0;
-}
-
-
-// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/sampling/sample/sampleDict b/applications/utilities/postProcessing/sampling/sample/sampleDict
deleted file mode 100644
index 593bcf82bce021dcd38257a41e7d17bef78e4410..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/sampling/sample/sampleDict
+++ /dev/null
@@ -1,329 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  dev                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    object      sampleDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-// Set output format : choice of
-//      xmgr
-//      jplot
-//      gnuplot
-//      raw
-//      vtk
-//      ensight
-//      csv
-setFormat raw;
-
-// Surface output format. Choice of
-//      null        : suppress output
-//      ensight     : Ensight Gold format, one field per case file
-//      foamFile    : separate points, faces and values file
-//      dx          : DX scalar or vector format
-//      vtk         : VTK ascii format
-//      raw         : x y z value format for use with e.g. gnuplot 'splot'.
-//
-// Note:
-// other formats such as obj, stl, etc can also be written (by proxy)
-// but without any values!
-surfaceFormat vtk;
-
-// optionally define extra controls for the output formats
-formatOptions
-{
-    ensight
-    {
-        format  ascii;
-    }
-    raw
-    {
-         compression  uncompressed; // 'uncompressed' or 'compressed'
-    }
-}
-
-// interpolationScheme. choice of
-//      cell          : use cell-centre value only; constant over cells
-//                      (default)
-//      cellPoint     : use cell-centre and vertex values
-//      cellPointFace : use cell-centre, vertex and face values.
-//      pointMVC      : use point values only (Mean Value Coordinates)
-//      cellPatchConstrained : like 'cell' but uses cell-centre except on
-//                             boundary faces where it uses the boundary value.
-//                             For use with e.g. patchCloudSet.
-// 1] vertex values determined from neighbouring cell-centre values
-// 2] face values determined using the current face interpolation scheme
-//    for the field (linear, gamma, etc.)
-interpolationScheme cellPoint;
-
-// Fields to sample.
-fields
-(
-    p
-    U
-);
-
-// Set sampling definition: choice of
-//      uniform             evenly distributed points on line
-//      face                one point per face intersection
-//      midPoint            one point per cell, inbetween two face intersections
-//      midPointAndFace     combination of face and midPoint
-//
-//      polyLine            specified points, not nessecary on line, uses
-//                          tracking
-//      cloud               specified points, uses findCell
-//      triSurfaceMeshPointSet  points of triSurface
-//
-// axis: how to write point coordinate. Choice of
-// - x/y/z: x/y/z coordinate only
-// - xyz: three columns
-//  (probably does not make sense for anything but raw)
-// - distance: distance from start of sampling line (if uses line) or
-//             distance from first specified sampling point
-//
-// type specific:
-//      uniform, face, midPoint, midPointAndFace : start and end coordinate
-//      uniform: extra number of sampling points
-//      polyLine, cloud: list of coordinates
-//      patchCloud: list of coordinates and set of patches to look for nearest
-//      patchSeed: random sampling on set of patches. Points slightly off
-//                 face centre.
-sets
-(
-    lineX1
-    {
-        type        uniform;
-        axis        distance;
-
-        //- cavity. Slightly perturbed so not to align with face or edge.
-        start       (0.0201 0.05101 0.00501);
-        end         (0.0601 0.05101 0.00501);
-        nPoints     10;
-    }
-
-    lineX2
-    {
-        type        face;
-        axis        x;
-
-        //- cavity
-        start       (0.0001 0.0525 0.00501);
-        end         (0.0999 0.0525 0.00501);
-    }
-
-    somePoints
-    {
-        type    cloud;
-        axis    xyz;
-        points  ((0.049 0.049 0.00501)(0.051 0.049 0.00501));
-    }
-
-    somePatchPoints
-    {
-        // Sample nearest points on selected patches. Looks only up to
-        // maxDistance away. Any sampling point not found will get value
-        // pTraits<Type>::max (usually VGREAT)
-        // Use with interpolations:
-        // - cell (cell value)
-        // - cellPatchConstrained (boundary value)
-        // - cellPoint (interpolated boundary value)
-        type        patchCloud;
-        axis        xyz;
-        points      ((0.049 0.099 0.005)(0.051 0.054 0.005));
-        maxDistance 0.1;    // maximum distance to search
-        patches     (".*Wall.*");
-    }
-
-    patchSeed
-    {
-        type        patchSeed;
-        axis        xyz;
-        patches     (".*Wall.*");
-        // Number of points to seed. Divided amongst all processors according
-        // to fraction of patches they hold.
-        maxPoints   100;
-    }
-
-);
-
-
-// Surface sampling definition
-//
-// 1] patches are not triangulated by default
-// 2] planes are always triangulated
-// 3] iso-surfaces are always triangulated
-surfaces
-(
-    constantPlane
-    {
-        type            plane;    // always triangulated
-        basePoint       (0.0501 0.0501 0.005);
-        normalVector    (0.1 0.1 1);
-
-        //- Optional: restrict to a particular zone
-        // zone        zone1;
-
-        //- Optional: do not triangulate (only for surfaceFormats that support
-        //            polygons)
-        //triangulate     false;
-    }
-
-    interpolatedPlane
-    {
-        type            plane;    // always triangulated
-
-        // Make plane relative to the coordinateSystem (Cartesian)
-        coordinateSystem
-        {
-            origin      (0.0501 0.0501 0.005);
-
-            // Add a coordinate rotation
-            // (required, so here one that doesn't change anything)
-            coordinateRotation
-            {
-                type    axesRotation;
-                e1      (1 0 0);
-                e2      (0 1 0);
-            }
-        }
-        basePoint       (0 0 0);
-        normalVector    (0.1 0.1 1);
-        interpolate     true;
-    }
-
-    walls_constant
-    {
-        type            patch;
-        patches         ( ".*Wall.*" );
-        // Optional: whether to leave as faces (=default) or triangulate
-        // triangulate     false;
-    }
-
-    walls_interpolated
-    {
-        type            patch;
-        patches         ( ".*Wall.*" );
-        interpolate     true;
-        // Optional: whether to leave as faces (=default) or triangulate
-        // triangulate     false;
-    }
-
-    nearWalls_interpolated
-    {
-        // Sample cell values off patch. Does not need to be the near-wall
-        // cell, can be arbitrarily far away.
-        type            patchInternalField;
-        patches         ( ".*Wall.*" );
-        interpolate     true;
-
-
-        // Optional: specify how to obtain sampling points from the patch
-        //           face centres (default is 'normal')
-        //
-        //  //- Specify distance to offset in normal direction
-        offsetMode  normal;
-        distance    0.1;
-        //
-        //  //- Specify single uniform offset
-        //  offsetMode  uniform;
-        //  offset      (0 0 0.0001);
-        //
-        //  //- Specify offset per patch face
-        //  offsetMode  nonuniform;
-        //  offsets     ((0 0 0.0001) (0 0 0.0002));
-
-
-        // Optional: whether to leave as faces (=default) or triangulate
-        // triangulate     false;
-    }
-
-    interpolatedIso
-    {
-        // Iso surface for interpolated values only
-        type            isoSurface;    // always triangulated
-        isoField        rho;
-        isoValue        0.5;
-        interpolate     true;
-
-        //zone            ABC;          // Optional: zone only
-        //exposedPatchName fixedWalls;  // Optional: zone only
-
-        // regularise      false;    // Optional: do not simplify
-        // mergeTol        1e-10;    // Optional: fraction of mesh bounding box
-                                     // to merge points (default=1e-6)
-    }
-    constantIso
-    {
-        // Iso surface for constant values.
-        // Triangles guaranteed not to cross cells.
-        type            isoSurfaceCell;    // always triangulated
-        isoField        rho;
-        isoValue        0.5;
-        interpolate     false;
-        regularise      false;              // do not simplify
-        // mergeTol        1e-10;    // Optional: fraction of mesh bounding box
-                                     // to merge points (default=1e-6)
-    }
-
-    triangleCut
-    {
-        // Cutingplane using iso surface
-        type            cuttingPlane;
-        planeType       pointAndNormal;
-        pointAndNormalDict
-        {
-            basePoint       (0.4 0 0.4);
-            normalVector    (1 0.2 0.2);
-        }
-        interpolate     true;
-
-        //zone            ABC;          // Optional: zone only
-        //exposedPatchName fixedWalls;  // Optional: zone only
-
-        // regularise      false;    // Optional: do not simplify
-        // mergeTol        1e-10;    // Optional: fraction of mesh bounding box
-                                     // to merge points (default=1e-6)
-    }
-
-    distance
-    {
-        // Isosurface from signed/unsigned distance to surface
-        type            distanceSurface;
-        signed          true;
-
-        // Definition of surface
-        surfaceType     triSurfaceMesh;
-        surfaceName     integrationPlane.stl;
-        // Distance to surface
-        distance        0.0;
-
-        //cell            false;// optional: use isoSurface instead
-                                // of isoSurfaceCell
-        interpolate     false;
-        regularise      false;  // Optional: do not simplify
-        // mergeTol 1e-10;      // Optional: fraction of mesh bounding box
-                                // to merge points (default=1e-6)
-    }
-
-    triSurfaceSampling
-    {
-        // Sampling on triSurface
-        type        sampledTriSurfaceMesh;
-        surface     integrationPlane.stl;
-        source      boundaryFaces;  // What to sample: cells (nearest cell)
-                                    // insideCells (only triangles inside cell)
-                                    // boundaryFaces (nearest boundary face)
-        interpolate true;
-    }
-);
-
-
-// *********************************************************************** //
diff --git a/bin/foamCalc b/bin/foamCalc
index 0f2ede771c0be950ecbb2596ffcee9bf8dcb09be..2eac41bce7d09c1cccc80e4d017aaec067be2221 100755
--- a/bin/foamCalc
+++ b/bin/foamCalc
@@ -31,7 +31,7 @@
 #------------------------------------------------------------------------------
 
 echo "foamCalc has been superceded by the postProcess utility:"
-echo "postProcess -help"
+echo "    postProcess -help"
 postProcess -help
 
 #------------------------------------------------------------------------------
diff --git a/bin/patchAverage b/bin/patchAverage
index bd15b518c65bdf40a3657f560820a8f16e298ba7..d8d4600a1a3ef64c6f9f25f33a6b1cb6a503d61e 100755
--- a/bin/patchAverage
+++ b/bin/patchAverage
@@ -32,6 +32,6 @@
 Script=${0##*/}
 
 echo $Script "has been superceded by the postProcess utility:"
-echo "postProcess -func '"$Script"(name=inlet,p)'"
+echo "    postProcess -func '"$Script"(name=inlet,p)'"
 
 #------------------------------------------------------------------------------
diff --git a/bin/patchIntegrate b/bin/patchIntegrate
index 72c6021441fab43aff29fbdb5b73cf77ed7ef584..7ea9d142d5d33e2e77ad154c06a2a143e2e0223a 100755
--- a/bin/patchIntegrate
+++ b/bin/patchIntegrate
@@ -32,6 +32,6 @@
 Script=${0##*/}
 
 echo $Script "has been superceded by the postProcess utility:"
-echo "postProcess -func '"$Script"(name=inlet,p)'"
+echo "    postProcess -func '"$Script"(name=inlet,p)'"
 
 #------------------------------------------------------------------------------
diff --git a/bin/probeLocations b/bin/probeLocations
new file mode 100755
index 0000000000000000000000000000000000000000..352604ed28286ea9172617dde549866f8a97ad03
--- /dev/null
+++ b/bin/probeLocations
@@ -0,0 +1,39 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# =========                 |
+# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+#  \\    /   O peration     |
+#   \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
+#    \\/     M anipulation  |
+#-------------------------------------------------------------------------------
+# License
+#     This file is part of OpenFOAM.
+#
+#     OpenFOAM is free software: you can redistribute it and/or modify it
+#     under the terms of the GNU General Public License as published by
+#     the Free Software Foundation, either version 3 of the License, or
+#     (at your option) any later version.
+#
+#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+#     for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Script
+#     probeLocations
+#
+# Description
+#     Script to suggest using the new "postProcess" utility.
+#
+#------------------------------------------------------------------------------
+Script=${0##*/}
+
+echo $Script "has been superceded by the postProcess utility:"
+echo "    postProcess -func probes"
+echo "or"
+echo "    postProcess -func 'probes(p, U)'"
+
+#------------------------------------------------------------------------------
diff --git a/bin/sample b/bin/sample
new file mode 100755
index 0000000000000000000000000000000000000000..e96d79a7f677c15f4765eaa610d07bfc68ee6c50
--- /dev/null
+++ b/bin/sample
@@ -0,0 +1,43 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# =========                 |
+# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+#  \\    /   O peration     |
+#   \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
+#    \\/     M anipulation  |
+#-------------------------------------------------------------------------------
+# License
+#     This file is part of OpenFOAM.
+#
+#     OpenFOAM is free software: you can redistribute it and/or modify it
+#     under the terms of the GNU General Public License as published by
+#     the Free Software Foundation, either version 3 of the License, or
+#     (at your option) any later version.
+#
+#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+#     for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Script
+#     probeLocations
+#
+# Description
+#     Script to suggest using the new "postProcess" utility.
+#
+#------------------------------------------------------------------------------
+Script=${0##*/}
+
+echo $Script "has been superceded by the postProcess utility:"
+echo "    postProcess -func $Script"
+echo
+echo "To re-use existing 'sampleDict' files simply add the following entries:"
+echo "    type sets;"
+echo "    libs (\"libsampling.so\");"
+echo "and run"
+echo "    postProcess -func sampleDict"
+
+#------------------------------------------------------------------------------
diff --git a/bin/supercededByPostProcess b/bin/supercededByPostProcess
index f9fc9cdbe28b7c07a53742498040937b493f9f7a..25df27f5ce6291ffaef5f57f7089879ebf2626c0 100755
--- a/bin/supercededByPostProcess
+++ b/bin/supercededByPostProcess
@@ -32,6 +32,6 @@
 Script=${0##*/}
 
 echo $Script "has been superceded by the postProcess utility:"
-echo "postProcess -func" $Script
+echo "    postProcess -func" $Script
 
 #------------------------------------------------------------------------------
diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C
index 524930b76012c1710299d4675169c8da9a505275..d54bf8b6252803e32001d126d002dad9545d7182 100644
--- a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C
+++ b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C
@@ -233,7 +233,14 @@ bool Foam::functionObjectList::readFunctionObject
     // Read the functionObject dictionary
     IFstream fileStream(path);
     dictionary funcsDict(fileStream);
-    dictionary& funcDict = funcsDict.subDict(funcName);
+    dictionary* funcDictPtr = &funcsDict;
+
+    if (funcsDict.found(funcName) && funcsDict.isDict(funcName))
+    {
+        funcDictPtr = &funcsDict.subDict(funcName);
+    }
+
+    dictionary& funcDict = *funcDictPtr;
 
     // Insert the 'field' and/or 'fields' entry corresponding to the optional
     // arguments or read the 'field' or 'fields' entry and add the required
diff --git a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/sampleDict b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/sample
similarity index 95%
rename from tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/sampleDict
rename to tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/sample
index 5be2e5455b5232d8f2df636f01f8590661a9a2f7..f5f0cfad26f91a12131969aeb49924cc3761cb61 100644
--- a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/sampleDict
+++ b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/sample
@@ -11,10 +11,13 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      sampleDict;
+    object      sample;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+type sets;
+libs ("libsampling.so");
+
 interpolationScheme cellPointFace;
 
 writeFormat     raw;
diff --git a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/system/sampleDict b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/system/sample
similarity index 95%
rename from tutorials/compressible/rhoCentralFoam/biconic25-55Run35/system/sampleDict
rename to tutorials/compressible/rhoCentralFoam/biconic25-55Run35/system/sample
index aab9c22d979418630cc1e9706bcdb5de1ab19153..918f809846ec706d7ce9d2d79753c0315d596137 100644
--- a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/system/sampleDict
+++ b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/system/sample
@@ -11,10 +11,13 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      sampleDict;
+    object      sample;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+type sets;
+libs ("libsampling.so");
+
 interpolationScheme cellPointFace;
 
 setFormat       raw;
diff --git a/tutorials/compressible/rhoCentralFoam/shockTube/system/sampleDict b/tutorials/compressible/rhoCentralFoam/shockTube/system/sample
similarity index 94%
rename from tutorials/compressible/rhoCentralFoam/shockTube/system/sampleDict
rename to tutorials/compressible/rhoCentralFoam/shockTube/system/sample
index 3e3241f33ede98b5e97662bcc4db9f09e1e06506..403a1f6f6da0eb6684f6bae9242975a116a940e2 100644
--- a/tutorials/compressible/rhoCentralFoam/shockTube/system/sampleDict
+++ b/tutorials/compressible/rhoCentralFoam/shockTube/system/sample
@@ -11,10 +11,13 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      sampleDict;
+    object      sample;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+type sets;
+libs ("libsampling.so");
+
 interpolationScheme cellPoint;
 
 setFormat       raw;
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/Allrun b/tutorials/compressible/sonicFoam/laminar/shockTube/Allrun
index 2afbf27c03e0ba6e9eb4a3ce22feabf0b8f60fba..7cfeb167c50e51d7cb769a4c5035f4eeddb7d15d 100755
--- a/tutorials/compressible/sonicFoam/laminar/shockTube/Allrun
+++ b/tutorials/compressible/sonicFoam/laminar/shockTube/Allrun
@@ -9,6 +9,6 @@ application=`getApplication`
 runApplication blockMesh
 runApplication setFields
 runApplication $application
-runApplication sample
+runApplication postProcess -func sample
 
 #------------------------------------------------------------------------------
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/system/sampleDict b/tutorials/compressible/sonicFoam/laminar/shockTube/system/sample
similarity index 94%
rename from tutorials/compressible/sonicFoam/laminar/shockTube/system/sampleDict
rename to tutorials/compressible/sonicFoam/laminar/shockTube/system/sample
index 5690ad6976f14aa1e8fc470d9fecfdf4388d30ef..f04abd953839e51aa2fa7069d4a9dd287d1942eb 100644
--- a/tutorials/compressible/sonicFoam/laminar/shockTube/system/sampleDict
+++ b/tutorials/compressible/sonicFoam/laminar/shockTube/system/sample
@@ -11,10 +11,13 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      sampleDict;
+    object      sample;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+type sets;
+libs ("libsampling.so");
+
 interpolationScheme cellPoint;
 
 setFormat       raw;
diff --git a/tutorials/electromagnetics/mhdFoam/hartmann/Allrun b/tutorials/electromagnetics/mhdFoam/hartmann/Allrun
index 61a0786f47c3c36c039e6273712b96efadbdc861..c5296a889feca46c849d6bd5a8018b3ebbfeb02d 100755
--- a/tutorials/electromagnetics/mhdFoam/hartmann/Allrun
+++ b/tutorials/electromagnetics/mhdFoam/hartmann/Allrun
@@ -9,6 +9,6 @@ application=`getApplication`
 
 runApplication blockMesh
 runApplication $application
-runApplication sample
+runApplication postProcess -func sample
 
 #------------------------------------------------------------------------------
diff --git a/tutorials/electromagnetics/mhdFoam/hartmann/system/sampleDict b/tutorials/electromagnetics/mhdFoam/hartmann/system/sample
similarity index 96%
rename from tutorials/electromagnetics/mhdFoam/hartmann/system/sampleDict
rename to tutorials/electromagnetics/mhdFoam/hartmann/system/sample
index 829a7315b60c601b35644f1753612af2e17482c9..2973d94fffdaab31a0621cb04d9b2f7f50d4d668 100644
--- a/tutorials/electromagnetics/mhdFoam/hartmann/system/sampleDict
+++ b/tutorials/electromagnetics/mhdFoam/hartmann/system/sample
@@ -15,6 +15,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+type sets;
+libs ("libsampling.so");
+
 interpolationScheme cellPoint;
 
 setFormat       raw;
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allclean b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allclean
index f436bc02bbc0b9a414cb5c6f6d53a7a6b92f384e..bb7f5888ae2703ca93602dd921d5a177cf4c32eb 100755
--- a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allclean
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allclean
@@ -5,7 +5,6 @@ cd ${0%/*} || exit 1    # Run from this directory
 . $WM_PROJECT_DIR/bin/tools/CleanFunctions
 
 cleanCase
-rm -rf sets
 rm -f validation/*.eps
 
 #------------------------------------------------------------------------------
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun
index 740f3a5ed6583c98a7c1c95911d6e64798403c76..473be2d99746f8bfe86f3a02111cc18fd47a848b 100755
--- a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/Allrun
@@ -9,7 +9,7 @@ application=`getApplication`
 
 runApplication blockMesh
 runApplication $application
-runApplication sample -latestTime
+runApplication postProcess -latestTime -func sample
 
 ( cd validation && ./createGraphs )
 
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/system/sampleDict b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/system/sample
similarity index 97%
rename from tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/system/sampleDict
rename to tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/system/sample
index f623168a165d4151a54298a7aa95c5535031a87b..8a4f66987911d15f026af7e62af78ea209a895f2 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/system/sampleDict
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/system/sample
@@ -11,11 +11,14 @@ FoamFile
     format          ascii;
     class           dictionary;
     location        "system";
-    object          sampleDict;
+    object          sample;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+type sets;
+libs ("libsampling.so");
+
 interpolationScheme cellPointFace;
 
 setFormat raw;
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs
index 6f1957fffd3e06a09c57ebdd5e42a38dbc95485e..5566e9f677dab912e93d27a40c2f84d74942fd49 100755
--- a/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/buoyantCavity/validation/createGraphs
@@ -3,7 +3,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
@@ -86,7 +86,7 @@ then
     exit 1
 fi
 
-SETSDIR="../postProcessing/sets"
+SETSDIR="../postProcessing/sample"
 
 if [ ! -d $SETSDIR ]
 then