diff --git a/bin/foamNewFunctionObject b/bin/foamNewFunctionObject
new file mode 100755
index 0000000000000000000000000000000000000000..a6de93f70d271ecb9439b732947a93c703418f5a
--- /dev/null
+++ b/bin/foamNewFunctionObject
@@ -0,0 +1,83 @@
+#!/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
+#     foamNewFunctionObject
+#
+# Description
+#     Create directory with source and compilation files for a new function
+#     object
+#
+#------------------------------------------------------------------------------
+Script=${0##*/}
+DIR="$FOAM_ETC/codeTemplates/functionObject"
+
+usage() {
+    while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+    cat<<USAGE
+Usage: $Script [-h | -help] <functionObjectName>
+
+* Create directory with source and compilation files for a new function object
+  <functionObjectName> (dir)
+  - <functionObjectName>.H
+  - <functionObjectName>.C
+  - <functionObjectName>FunctionObject.H
+  - <functionObjectName>FunctionObject.C
+  - IO<functionObjectName>.H
+  - Make (dir)
+    - files
+    - options
+  Compiles a library named lib<functionObjectName>FunctionObject.so in
+  \$FOAM_USER_LIBBIN:
+  $FOAM_USER_LIBBIN
+USAGE
+    exit 1
+}
+
+case "$1" in
+(-h | -help)
+    usage
+    ;;
+-*)
+    usage "$1 is not a valid option/filename"
+    ;;
+esac
+
+[ "$#" -eq 1 ] || usage "Wrong number of arguments"
+[ -d "$1" ] && usage "$1 directory already exists, aborting..."
+
+NAME=$1
+
+echo "Creating function object code directory $NAME" && mkdir $NAME
+for F in $(ls ${DIR}/*.*)
+do
+    FILE=$(basename $F | sed "s#FUNCTIONOBJECT#${NAME}#g")
+    sed "s#FUNCTIONOBJECT#${NAME}#g" ${F} > ${NAME}/${FILE}
+done
+
+echo "Creating Make subdirectory" && mkdir $NAME/Make
+sed "s#FUNCTIONOBJECT#${NAME}#g" ${DIR}/Make/files > $NAME/Make/files
+cp ${DIR}/Make/options $NAME/Make
+
+#------------------------------------------------------------------------------
diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
new file mode 100644
index 0000000000000000000000000000000000000000..68189c6d43f17084575ff2f575ebb6b987098e86
--- /dev/null
+++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "FUNCTIONOBJECT.H"
+#include "dictionary.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+defineTypeNameAndDebug(FUNCTIONOBJECT, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::FUNCTIONOBJECT::FUNCTIONOBJECT
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+:
+    name_(name),
+    obr_(obr),
+    wordData_(dict.lookupOrDefault<word>("wordData", "defaultWord")),
+    scalarData_(readScalar(dict.lookup("scalarData"))),
+    labelData_(readLabel(dict.lookup("labelData")))
+{
+    read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::FUNCTIONOBJECT::~FUNCTIONOBJECT()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::FUNCTIONOBJECT::read(const dictionary& dict)
+{
+    dict.readIfPresent("wordData", wordData_);
+    dict.lookup("scalarData") >> scalarData_;
+    dict.lookup("labelData") >> labelData_;
+}
+
+
+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/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H
new file mode 100644
index 0000000000000000000000000000000000000000..62fdf144e206437a4179b76b9f835660755cb115
--- /dev/null
+++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.H
@@ -0,0 +1,176 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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/>.
+
+Class
+    Foam::FUNCTIONOBJECT
+
+Group
+
+Description
+    This function object...
+
+    Example of function object specification:
+    \verbatim
+    FUNCTIONOBJECT1
+    {
+        type           FUNCTIONOBJECT;
+        functionObjectLibs ("libFUNCTIONOBJECTFunctionObject.so");
+        ...
+        wordData       someWord;
+        scalarData     1.0;
+        labelData      1;
+    }
+    \endverbatim
+
+    \heading Function object usage
+    \table
+        Property     | Description               | Required | Default value
+        type         | type name: FUNCTIONOBJECT | yes      |
+        wordData     | some word option...       | no       | defaultWord
+        scalarData   | some scalar value...      | yes      |
+        labelData    | some label value...       | yes      |
+    \endtable
+
+SourceFiles
+    FUNCTIONOBJECT.C
+    IOFUNCTIONOBJECT.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef FUNCTIONOBJECT_H
+#define FUNCTIONOBJECT_H
+
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class objectRegistry;
+class dictionary;
+class polyMesh;
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                   Class FUNCTIONOBJECT Declaration
+\*---------------------------------------------------------------------------*/
+
+class FUNCTIONOBJECT
+{
+    // Private data
+
+        //- Name of this set of FUNCTIONOBJECT
+        word name_;
+
+        //- Refererence to Db
+        const objectRegistry& obr_;
+
+        // Read from dictionary
+
+            //- word
+            word wordData_;
+
+            //- scalar
+            scalar scalarData_;
+
+            //- label
+            label labelData_;
+
+
+    // Private Member Functions
+
+
+        //- Disallow default bitwise copy construct
+        FUNCTIONOBJECT(const FUNCTIONOBJECT&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const FUNCTIONOBJECT&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("FUNCTIONOBJECT");
+
+
+    // Constructors
+
+        //- Construct for given objectRegistry and dictionary.
+        //  Allow the possibility to load fields from files
+        FUNCTIONOBJECT
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
+
+    //- Destructor
+    virtual ~FUNCTIONOBJECT();
+
+
+    // Member Functions
+
+        //- Return name of the FUNCTIONOBJECT
+        virtual const word& name() const
+        {
+            return name_;
+        }
+
+        //- Read the FUNCTIONOBJECT data
+        virtual void read(const dictionary&);
+
+        //- Execute, currently does nothing
+        virtual void execute();
+
+        //- Execute at the final time-loop, currently does nothing
+        virtual void end();
+
+        //- Called when time was set at the end of the Time::operator++
+        virtual void timeSet();
+
+        //- Write the FUNCTIONOBJECT
+        virtual void write();
+
+        //- Update for changes of mesh
+        virtual void updateMesh(const mapPolyMesh&)
+        {}
+
+        //- Update for changes of mesh
+        virtual void movePoints(const polyMesh&)
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECTFunctionObject.C b/etc/codeTemplates/functionObject/FUNCTIONOBJECTFunctionObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..b10ecc50983f34e4d1545b802bc3233d6aebcd83
--- /dev/null
+++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECTFunctionObject.C
@@ -0,0 +1,46 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "FUNCTIONOBJECTFunctionObject.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineNamedTemplateTypeNameAndDebug
+    (
+        FUNCTIONOBJECTFunctionObject,
+        0
+    );
+
+    addToRunTimeSelectionTable
+    (
+        functionObject,
+        FUNCTIONOBJECTFunctionObject,
+        dictionary
+    );
+}
+
+// ************************************************************************* //
diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECTFunctionObject.H b/etc/codeTemplates/functionObject/FUNCTIONOBJECTFunctionObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..78e6a7f0b96cc1e2d3d31980574b42e9f77c7a50
--- /dev/null
+++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECTFunctionObject.H
@@ -0,0 +1,54 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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/>.
+
+Typedef
+    Foam::FUNCTIONOBJECTFunctionObject
+
+Description
+    FunctionObject wrapper around FUNCTIONOBJECT to allow them to be
+    created via the functions entry within controlDict.
+
+SourceFiles
+    FUNCTIONOBJECTFunctionObject.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef FUNCTIONOBJECTFunctionObject_H
+#define FUNCTIONOBJECTFunctionObject_H
+
+#include "FUNCTIONOBJECT.H"
+#include "OutputFilterFunctionObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef OutputFilterFunctionObject<FUNCTIONOBJECT>
+        FUNCTIONOBJECTFunctionObject;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/etc/codeTemplates/functionObject/IOFUNCTIONOBJECT.H b/etc/codeTemplates/functionObject/IOFUNCTIONOBJECT.H
new file mode 100644
index 0000000000000000000000000000000000000000..0075f798a1452ca1c474d87965cf47f17043921d
--- /dev/null
+++ b/etc/codeTemplates/functionObject/IOFUNCTIONOBJECT.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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/>.
+
+Typedef
+    Foam::IOFUNCTIONOBJECT
+
+Description
+    Instance of the generic IOOutputFilter for FUNCTIONOBJECT.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOFUNCTIONOBJECT_H
+#define IOFUNCTIONOBJECT_H
+
+#include "FUNCTIONOBJECT.H"
+#include "IOOutputFilter.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef IOOutputFilter<FUNCTIONOBJECT> IOFUNCTIONOBJECT;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/etc/codeTemplates/functionObject/Make/files b/etc/codeTemplates/functionObject/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..73b99560319cbbcee4a083b7fba1a5bdb5f20ae8
--- /dev/null
+++ b/etc/codeTemplates/functionObject/Make/files
@@ -0,0 +1,4 @@
+FUNCTIONOBJECT.C
+FUNCTIONOBJECTFunctionObject.C
+
+LIB = $(FOAM_USER_LIBBIN)/libFUNCTIONOBJECTFunctionObject
diff --git a/etc/codeTemplates/functionObject/Make/options b/etc/codeTemplates/functionObject/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..a3ae8da833177387e9eecf75b5e2675fc7b481f5
--- /dev/null
+++ b/etc/codeTemplates/functionObject/Make/options
@@ -0,0 +1,7 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools