diff --git a/applications/utilities/mesh/generation/Allwmake b/applications/utilities/mesh/generation/Allwmake
index 0869795ef828b9a7079645439a1ff327fbfe7c2d..4abbf97bc2ec2474f081c50b0e15792f2dcd9b40 100755
--- a/applications/utilities/mesh/generation/Allwmake
+++ b/applications/utilities/mesh/generation/Allwmake
@@ -8,10 +8,6 @@ wmake -all $targetType extrude
 wmake -all $targetType extrude2DMesh
 wmake -all $targetType snappyHexMesh
 
-if [ -n "$FOAMY_HEX_MESH" ]
-then
-    foamyMesh/Allwmake $targetType $*
-fi
-
+foamyMesh/Allwmake $targetType $*
 
 #------------------------------------------------------------------------------
diff --git a/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options b/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options
index f9a4d17aafc15baa3ea4fe88a56e203124adb1af..aa1ba3b9bbc8e810b7a0061f035e830a5ebe7fd2 100644
--- a/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options
@@ -25,8 +25,6 @@ EXE_INC =  \
 
 EXE_LIBS =  \
     $(CGAL_LIBS) \
-    -lmpfr \
-    -lboost_thread \
     -lconformalVoronoiMesh \
     -lfiniteVolume    \
     -lmeshTools \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options
index c7c5ebdb075974c98f3d4077c2718ad76d3cfab5..625763f59762663c38696a79301e29dd6b364c51 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options
@@ -22,9 +22,6 @@ EXE_INC = \
 
 EXE_LIBS = \
     $(CGAL_LIBS) \
-    -lboost_thread \
-    -lmpfr \
-    -lgmp \
     -lconformalVoronoiMesh \
     -ldecompositionMethods /* -L$(FOAM_LIBBIN)/dummy -lscotchDecomp */ \
     -ldecompose \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options
index 5cb1f8676ddc626dcede0ee8e65034f443e9a68a..1a24c89f7036a2f9094910b27f19c951eebf20bb 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options
@@ -16,8 +16,6 @@ EXE_INC = \
 
 EXE_LIBS = \
     $(CGAL_LIBS) \
-    -lboost_thread \
-    -lmpfr \
     -L$(FASTDUALOCTREE_SRC_PATH) -lperf_main \
     -lGL \
     -lconformalVoronoiMesh \
diff --git a/etc/bashrc b/etc/bashrc
index 81bf28feaf927b59acf4f05dcc5653cd38f2b382..fad4f475ae99e120bb4de77ce30e1763ccc83f02 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -57,7 +57,7 @@ export FOAM_INST_DIR=$HOME/$WM_PROJECT
 # $FOAM_INST_DIR/site/$WM_PROJECT_VERSION or $FOAM_INST_DIR/site
 
 #- Compiler location:
-#    WM_COMPILER_TYPE= system | ThirdParty (OpenFOAM)
+#    WM_COMPILER_TYPE= system | ThirdParty
 export WM_COMPILER_TYPE=system
 
 #- Compiler:
@@ -173,10 +173,7 @@ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools`
 
-if [ ! -z "$FOAMY_HEX_MESH" ]
-then
-    _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL`
-fi
+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/scotch`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/FFTW`
 
diff --git a/etc/config.csh/aliases b/etc/config.csh/aliases
index 33bb0e4a98d93b9ead91d6615e07e3e2efff019b..f04b6e811479b6cba3b6f29df5cc8fc2a7a23fd4 100644
--- a/etc/config.csh/aliases
+++ b/etc/config.csh/aliases
@@ -82,7 +82,7 @@ alias foamVersion \
 # Change ParaView version
 # ~~~~~~~~~~~~~~~~~~~~~~~
 alias foamPV \
-    'source $WM_PROJECT_DIR/etc/config.csh/paraview ParaView_VERSION=\!*; echo paraview-$ParaView_VERSION'
+    'source $WM_PROJECT_DIR/etc/config.csh/paraview ParaView_VERSION=\!*; echo ${ParaView_DIR:t}'
 
 
 #------------------------------------------------------------------------------
diff --git a/etc/config.csh/compiler b/etc/config.csh/compiler
index 3e28c20b71ebe793ccecd994646a1e551afa510a..7d8f757b23eb13680a5545b489e7ef40e55fa657 100644
--- a/etc/config.csh/compiler
+++ b/etc/config.csh/compiler
@@ -31,7 +31,6 @@
 #------------------------------------------------------------------------------
 
 switch ("$WM_COMPILER_TYPE")
-case OpenFOAM:
 case ThirdParty:
     # Default versions of GMP, MPFR and MPC, override as necessary
     set gmp_version=gmp-system
diff --git a/etc/config.csh/paraview b/etc/config.csh/paraview
index 16fa58d48a0d92b058e64218c89da2ea31176232..ba718b0c0cab999e4db14978b8e7860068d72dc4 100644
--- a/etc/config.csh/paraview
+++ b/etc/config.csh/paraview
@@ -3,7 +3,7 @@
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
 #   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-#    \\/     M anipulation  |
+#    \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 #------------------------------------------------------------------------------
 # License
 #     This file is part of OpenFOAM.
@@ -25,40 +25,50 @@
 #     config.csh/paraview
 #
 # Description
-#     Setup file for paraview-[3-5].x
+#     Setup file for paraview (and cmake)
 #     Sourced from OpenFOAM-<VERSION>/etc/cshrc or from foamPV alias
 #
+#     If using system-wide installation for cmake, use the following settings:
+#
+#         cmake_version=cmake-system
+#
 # Note
-#     The env. variables 'ParaView_DIR' and 'ParaView_MAJOR'
-#     are required for building plugins
+#     The following env. variables are required for building plugins:
+#         ParaView_DIR
+#         ParaView_INCLUDE_DIR
+#         PV_PLUGIN_PATH
+#
+#     If using a central installation not located under ThirdParty, you will
+#     need to set some environment values directly. For example,
+#
+#         setenv ParaView_DIR /opt/paraview/paraview-5.0.1
+#         setenv ParaView_INCLUDE_DIR $ParaView_DIR/include/paraview-5.0
+#         setenv PV_PLUGIN_PATH $FOAM_LIBBIN/paraview-5.0
+#
+#         setenv PATH ${ParaView_DIR}/bin:${PATH}
+#         setenv LD_LIBRARY_PATH ${ParaView_DIR}/lib/paraview-5.0:${LD_LIBRARY_PATH}
+#         unsetenv ParaView_VERSION     # avoid using ThirdParty settings
 #
 #------------------------------------------------------------------------------
 
+setenv ParaView_VERSION 5.0.1
+setenv ParaView_MAJOR   detect          # Automatically determine major version
+
+set cmake_version=cmake-system
+
+#------------------------------------------------------------------------------
+
 # Clean the PATH
 set cleaned=`$WM_PROJECT_DIR/bin/foamCleanPath "$PATH" "$ParaView_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/cmake- $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-"`
 if ( $status == 0 ) setenv PATH $cleaned
 
-# Determine the cmake to be used
+# Environment for ThirdParty cmake
 unsetenv CMAKE_HOME
-foreach cmake ( cmake-3.2.1 cmake-2.8.12.1 cmake-2.8.8 cmake-2.8.4 cmake-2.8.3 cmake-2.8.1 )
-    set cmake=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cmake
-    if ( -r $cmake ) then
-        setenv CMAKE_HOME $cmake
-        setenv PATH ${CMAKE_HOME}/bin:${PATH}
-        break
-    endif
-end
-
-#- ParaView version, automatically determine major version:
-#setenv ParaView_VERSION 3.12.0
-#setenv ParaView_VERSION 4.0.1
-#setenv ParaView_VERSION 4.1.0
-#setenv ParaView_VERSION 4.3.1
-#setenv ParaView_VERSION 4.4.0
-#setenv ParaView_VERSION 5.0.0
-setenv ParaView_VERSION 5.0.1
-setenv ParaView_MAJOR detect
-
+set cmake=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cmake_version
+if ( -r $cmake ) then
+    setenv CMAKE_HOME $cmake
+    setenv PATH ${CMAKE_HOME}/bin:${PATH}
+endif
 
 # Evaluate command-line parameters for ParaView
 while ( $#argv > 0 )
@@ -72,62 +82,64 @@ while ( $#argv > 0 )
 end
 
 
-# Set MAJOR version to correspond to VERSION
-# ParaView_MAJOR is "<digits>.<digits>" from ParaView_VERSION
-switch ("$ParaView_VERSION")
-case "$ParaView_MAJOR".*:
-    # Version and major appear to correspond
-    breaksw
-
-case [0-9]*:
-    # Extract major from the version
-    setenv ParaView_MAJOR `echo ${ParaView_VERSION} | \
-        sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`
-    breaksw
-endsw
-
-
-set paraviewInstDir=$WM_THIRD_PARTY_DIR/ParaView-${ParaView_VERSION}
-set paraviewArchName=ParaView-$ParaView_VERSION
-
-setenv ParaView_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$paraviewArchName
-
-# Set paths if binaries or source are present
-if ( -r $ParaView_DIR || -r $paraviewInstDir ) then
-    setenv ParaView_INCLUDE_DIR $ParaView_DIR/include/paraview-${ParaView_MAJOR}
-    if (! -r $ParaView_INCLUDE_DIR && -r $ParaView_DIR/include/paraview-3.0) then
-        setenv ParaView_INCLUDE_DIR $ParaView_DIR/include/paraview-3.0
-    endif
-
-    set ParaView_LIB_DIR=${ParaView_DIR}/lib/paraview-${ParaView_MAJOR}
+# Require that ParaView_VERSION has not been unset.
+# Avoids conflict with an alternative (non-ThirdParty) installation.
+if ( $?ParaView_VERSION ) then
 
-    setenv PATH ${ParaView_DIR}/bin:${PATH}
-    setenv LD_LIBRARY_PATH "${ParaView_LIB_DIR}:${LD_LIBRARY_PATH}"
-    setenv PV_PLUGIN_PATH $FOAM_LIBBIN/paraview-${ParaView_MAJOR}
+    # Set MAJOR version to correspond to VERSION
+    # ParaView_MAJOR is "<digits>.<digits>" from ParaView_VERSION
+    switch ("$ParaView_VERSION")
+    case "$ParaView_MAJOR".*:
+        # Version and major appear to correspond
+        breaksw
 
-    if ($?FOAM_VERBOSE && $?prompt) then
-        echo "Using paraview"
-        echo "    ParaView_DIR         : $ParaView_DIR"
-        echo "    ParaView_LIB_DIR     : $ParaView_LIB_DIR"
-        echo "    ParaView_INCLUDE_DIR : $ParaView_INCLUDE_DIR"
-        echo "    PV_PLUGIN_PATH       : $PV_PLUGIN_PATH"
-    endif
+    case [0-9]*:
+        # Extract major from the version
+        setenv ParaView_MAJOR `echo ${ParaView_VERSION} | \
+            sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`
+        breaksw
+    endsw
 
+    set pvName=ParaView-$ParaView_VERSION
+    set pvMajor=paraview-$ParaView_MAJOR
+    set pvSrcDir=$WM_THIRD_PARTY_DIR/$pvName
+
+    setenv ParaView_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$pvName
+
+    # Set paths if binaries or source are present
+    if ( -r $ParaView_DIR || -r $pvSrcDir ) then
+        set pvLibDir=${ParaView_DIR}/lib/$pvMajor
+        set pvPython=$ParaView_DIR/Utilities/VTKPythonWrapping
+
+        setenv ParaView_INCLUDE_DIR $ParaView_DIR/include/$pvMajor
+        setenv PV_PLUGIN_PATH $FOAM_LIBBIN/$pvMajor
+        setenv PATH ${ParaView_DIR}/bin:${PATH}
+        setenv LD_LIBRARY_PATH "${pvLibDir}:${LD_LIBRARY_PATH}"
+
+        # Add in python libraries if required
+        if ( -r $pvPython ) then
+            if ($?PYTHONPATH) then
+                setenv PYTHONPATH ${PYTHONPATH}:${pvPython}:$pvLibDir
+            else
+                setenv PYTHONPATH ${pvPython}:$pvLibDir
+            endif
+        endif
 
-    # Add in python libraries if required
-    set paraviewPython=$ParaView_DIR/Utilities/VTKPythonWrapping
-    if ( -r $paraviewPython ) then
-        if ($?PYTHONPATH) then
-            setenv PYTHONPATH ${PYTHONPATH}:${paraviewPython}:$ParaView_LIB_DIR
-        else
-            setenv PYTHONPATH ${paraviewPython}:$ParaView_LIB_DIR
+        if ($?FOAM_VERBOSE && $?prompt) then
+            echo "Using paraview"
+            echo "    ParaView_DIR         : $ParaView_DIR"
+            echo "    ParaView_INCLUDE_DIR : $ParaView_INCLUDE_DIR"
+            echo "    library dir          : $pvLibDir"
+            echo "    PV_PLUGIN_PATH       : $PV_PLUGIN_PATH"
         endif
+    else
+        unsetenv ParaView_INCLUDE_DIR PV_PLUGIN_PATH
+        setenv ParaView_DIR   # Defined but empty (used by foamPV alias)
     endif
-else
-    unsetenv PV_PLUGIN_PATH
-endif
 
+endif
 
-unset cleaned cmake paraviewInstDir paraviewPython
+unset cleaned cmake cmake_version pvName pvMajor pvSrcDir pvLibDir pvPython
+unsetenv ParaView_VERSION ParaView_MAJOR
 
 #------------------------------------------------------------------------------
diff --git a/etc/config.csh/settings b/etc/config.csh/settings
index 1cee3fcd91aede29df5600e34202ba898202de8f..659b4c5ae22ae09995ba6f7f1f20558060f421e5 100644
--- a/etc/config.csh/settings
+++ b/etc/config.csh/settings
@@ -204,14 +204,9 @@ _foamAddLib  ${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}:${FOAM_LIBBIN}:${FOAM_EXT_L
 unset gcc_version gmp_version mpfr_version mpc_version
 unsetenv GMP_ARCH_PATH MPFR_ARCH_PATH
 
-
-# Location of compiler installation
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-if ( ! $?WM_COMPILER_TYPE ) then
-    setenv WM_COMPILER_TYPE system
-    echo "Warning in $WM_PROJECT_DIR/etc/config.csh/settings:"
-    echo "    WM_COMPILER_TYPE not set, using '$WM_COMPILER_TYPE'"
-endif
+# Compiler installation - default to system
+# ~~~~~~~~~~~~~~~~~~~~~
+if ( ! $?WM_COMPILER_TYPE ) setenv WM_COMPILER_TYPE system
 
 # Load configured compiler versions, regardless of the compiler type
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -235,13 +230,16 @@ case ThirdParty:
 
         # Check that the compiler directory can be found
         if ( ! -d "$gccDir" ) then
-            echo
-            echo "Warning in $WM_PROJECT_DIR/etc/config.csh/settings:"
-            echo "    Cannot find $gccDir installation."
-            echo "    Please install this compiler version or if you wish to" \
-                 " use the system compiler,"
-            echo "    change the 'WM_COMPILER_TYPE' setting to 'system'"
-            echo
+            cat << GCC_NOT_FOUND
+===============================================================================
+Warning in $WM_PROJECT_DIR/etc/config.csh/settings:
+Cannot find '$WM_COMPILER' compiler installation
+    $gccDir
+
+    Either install this compiler version, or use the system compiler by setting
+    WM_COMPILER_TYPE to 'system' in \$WM_PROJECT_DIR/etc/cshrc.
+===============================================================================
+GCC_NOT_FOUND
         endif
 
         _foamAddMan     $gccDir/man
@@ -268,18 +266,22 @@ case ThirdParty:
             echo "    ${gccDir:t} (${gmpDir:t} ${mpfrDir:t} ${mpcDir:t})"
         endif
     endif
+
     if ( $?clang_version ) then
         set clangDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$clang_version
 
         # Check that the compiler directory can be found
         if ( ! -d "$clangDir" ) then
-            echo
-            echo "Warning in $WM_PROJECT_DIR/etc/config.csh/settings:"
-            echo "    Cannot find $clangDir installation."
-            echo "    Please install this compiler version or if you wish to" \
-                 " use the system compiler,"
-            echo "    change the 'WM_COMPILER_TYPE' setting to 'system'"
-            echo
+            cat << CLANG_NOT_FOUND
+===============================================================================
+Warning in $WM_PROJECT_DIR/etc/config.csh/settings:
+Cannot find '$WM_COMPILER' compiler installation
+    $clangDir
+
+    Either install this compiler version, or use the system compiler by setting
+    WM_COMPILER_TYPE to 'system' in \$WM_PROJECT_DIR/etc/cshrc.
+===============================================================================
+CLANG_NOT_FOUND
         endif
 
         _foamAddMan     $clangDir/man
diff --git a/etc/config.csh/unset b/etc/config.csh/unset
index bc077f20f8e07c2f7f8c7dcbf6f88841337e4870..7194f4853c6177dcf0f5aa4cb9812a335b1e3f37 100644
--- a/etc/config.csh/unset
+++ b/etc/config.csh/unset
@@ -136,12 +136,6 @@ unsetenv GMP_ARCH_PATH
 unsetenv MPFR_ARCH_PATH
 unsetenv SCOTCH_ARCH_PATH
 
-#------------------------------------------------------------------------------
-# Unset foamyHexMesh-related environment variables
-
-unsetenv FOAMY_HEX_MESH
-
-
 #------------------------------------------------------------------------------
 # Cleanup environment
 # PATH, LD_LIBRARY_PATH, MANPATH
diff --git a/etc/config.sh/aliases b/etc/config.sh/aliases
index 2e0f67146b9c2e8b07d33734db4a4152d5529b60..4fa36c11c9ab015a74e107f577c2bc03e47dedb7 100644
--- a/etc/config.sh/aliases
+++ b/etc/config.sh/aliases
@@ -70,7 +70,7 @@ alias run='cd $FOAM_RUN'
 # Refresh the environment
 # ~~~~~~~~~~~~~~~~~~~~~~~
 # For backward-compatibility unalias wmRefresh if it is defined as an alias
-[ "$(type -t wmRefresh)" = "alias" ] && unalias wmRefresh || unset wmRefresh
+[ "$(type -t wmRefresh)" = "alias" ] && unalias wmRefresh || unset -f wmRefresh
 wmRefresh()
 {
     wmProjectDir=$WM_PROJECT_DIR
@@ -82,7 +82,7 @@ wmRefresh()
 
 # Change OpenFOAM version
 # ~~~~~~~~~~~~~~~~~~~~~~~
-unset foamVersion
+unset -f foamVersion
 foamVersion()
 {
     if [ "$1" ]; then
@@ -99,11 +99,12 @@ foamVersion()
 
 # Change ParaView version
 # ~~~~~~~~~~~~~~~~~~~~~~~
-unset foamPV
+unset -f foamPV
 foamPV()
 {
-    . $WM_PROJECT_DIR/etc/config.sh/paraview ParaView_VERSION=${1:-none}
-    echo "paraview-$ParaView_VERSION  (major: $ParaView_MAJOR)" 1>&2
+    . $WM_PROJECT_DIR/etc/config.sh/paraview "${@+ParaView_VERSION=$1}"
+    local pvdir="${ParaView_DIR##*/}"
+    echo "${pvdir:-ParaView_DIR not set}" 1>&2
 }
 
 
diff --git a/etc/config.sh/compiler b/etc/config.sh/compiler
index 5cfc75e56cce5027873a3818b3907db156d9f651..0f27fab8a68bc7fb8dc3475ad4e9b79b78b7b020 100644
--- a/etc/config.sh/compiler
+++ b/etc/config.sh/compiler
@@ -31,7 +31,7 @@
 #------------------------------------------------------------------------------
 
 case "$WM_COMPILER_TYPE" in
-OpenFOAM | ThirdParty)
+ThirdParty)
     # Default versions of GMP, MPFR and MPC, override as necessary
     gmp_version=gmp-system
     mpfr_version=mpfr-system
diff --git a/etc/config.sh/paraview b/etc/config.sh/paraview
index 4d5c89911cf15280a7d07c89d76243217ad26abb..0438aa132391eb4f9fd6db789034a30a6c0a5207 100644
--- a/etc/config.sh/paraview
+++ b/etc/config.sh/paraview
@@ -3,7 +3,7 @@
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
 #   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-#    \\/     M anipulation  |
+#    \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 #------------------------------------------------------------------------------
 # License
 #     This file is part of OpenFOAM.
@@ -25,12 +25,37 @@
 #     etc/config.sh/paraview
 #
 # Description
-#     Setup file for paraview-[3-5].x
+#     Setup file for paraview (& cmake)
 #     Sourced from OpenFOAM-<VERSION>/etc/bashrc or from foamPV alias
 #
+#     If using system-wide installation for cmake, use the following settings:
+#
+#         cmake_version=cmake-system
+#
 # Note
-#     The env. variables 'ParaView_DIR' and 'ParaView_MAJOR'
-#     are required for building plugins
+#     The following env. variables are required for building plugins:
+#         ParaView_DIR
+#         ParaView_INCLUDE_DIR
+#         PV_PLUGIN_PATH
+#
+#     If using a central installation not located under ThirdParty, you will
+#     need to set some environment values directly. For example,
+#
+#         export ParaView_DIR=/opt/paraview/paraview-5.0.1
+#         export ParaView_INCLUDE_DIR=$ParaView_DIR/include/paraview-5.0
+#         export PV_PLUGIN_PATH=$FOAM_LIBBIN/paraview-5.0
+#
+#         export PATH=$ParaView_DIR/bin:$PATH
+#         export LD_LIBRARY_PATH=$ParaView_DIR/lib/paraview-5.0:$LD_LIBRARY_PATH
+#         unset ParaView_VERSION        # avoid using ThirdParty settings
+#
+#------------------------------------------------------------------------------
+
+ParaView_VERSION=5.0.1
+ParaView_MAJOR=detect                   # Automatically determine major version
+
+cmake_version=cmake-system
+
 #------------------------------------------------------------------------------
 
 # Clean the PATH
@@ -41,32 +66,15 @@ cleaned=$($WM_PROJECT_DIR/bin/foamCleanPath "$PATH" \
         ) \
         && PATH="$cleaned"
 
-# Determine the cmake to be used
+# Environment for ThirdParty cmake
 unset CMAKE_HOME
-for cmake in cmake-3.2.1 cmake-2.8.12.1 cmake-2.8.8 cmake-2.8.4 cmake-2.8.3 \
-             cmake-2.8.1
-do
-    cmake=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cmake
-    if [ -r $cmake ]
-    then
-        export CMAKE_HOME=$cmake
-        export CMAKE_ROOT=$cmake
-        export PATH=$CMAKE_HOME/bin:$PATH
-        break
-    fi
-done
-
-
-#- ParaView version, automatically determine major version
-#export ParaView_VERSION=3.12.0
-#export ParaView_VERSION=4.0.1
-#export ParaView_VERSION=4.1.0
-#export ParaView_VERSION=4.3.1
-#export ParaView_VERSION=4.4.0
-#export ParaView_VERSION=5.0.0
-export ParaView_VERSION=5.0.1
-export ParaView_MAJOR=detect
-
+cmake=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cmake_version
+if [ -r $cmake ]
+then
+    export CMAKE_HOME=$cmake
+    export CMAKE_ROOT=$cmake
+    export PATH=$CMAKE_HOME/bin:$PATH
+fi
 
 # Evaluate command-line parameters for ParaView
 _foamParaviewEval()
@@ -86,67 +94,69 @@ _foamParaviewEval()
 # Evaluate command-line parameters
 _foamParaviewEval $@
 
+# Require that ParaView_VERSION has not been unset.
+# Avoids conflict with an alternative (non-ThirdParty) installation.
+if [ -n "$ParaView_VERSION" ]
+then
 
-# Set MAJOR version to correspond to VERSION
-# ParaView_MAJOR is "<digits>.<digits>" from ParaView_VERSION
-case "$ParaView_VERSION" in
-"$ParaView_MAJOR".* )
-    # Version and major appear to correspond
-    ;;
+    # Set MAJOR version to correspond to VERSION
+    # ParaView_MAJOR is "<digits>.<digits>" from ParaView_VERSION
+    case "$ParaView_VERSION" in
+    "$ParaView_MAJOR".* )
+        # Version and major appear to correspond
+        ;;
 
-[0-9]*)
-    # Extract major from the version
-    ParaView_MAJOR=$(echo $ParaView_VERSION | \
-                   sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/')
-    ;;
-esac
-export ParaView_VERSION ParaView_MAJOR
+    [0-9]*)
+        # Extract major from the version
+        ParaView_MAJOR=$(echo $ParaView_VERSION | \
+                       sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/')
+        ;;
+    esac
 
-paraviewInstDir=$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION
-paraviewArchName=ParaView-$ParaView_VERSION
+    pvName=ParaView-$ParaView_VERSION
+    pvMajor=paraview-$ParaView_MAJOR
+    pvSrcDir=$WM_THIRD_PARTY_DIR/$pvName
 
-export ParaView_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$paraviewArchName
+    export ParaView_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$pvName
 
-# Set paths if binaries or source are present
-if [ -r $ParaView_DIR -o -r $paraviewInstDir ]
-then
-    export ParaView_INCLUDE_DIR=$ParaView_DIR/include/paraview-$ParaView_MAJOR
-    if [ ! -d $ParaView_INCLUDE_DIR -a -d $ParaView_DIR/include/paraview-3.0 ]
+    # Set paths if binaries or source are present
+    if [ -r $ParaView_DIR -o -r $pvSrcDir ]
     then
-        export ParaView_INCLUDE_DIR=$ParaView_DIR/include/paraview-3.0
-    fi
-
-    ParaView_LIB_DIR=$ParaView_DIR/lib/paraview-$ParaView_MAJOR
+        pvLibDir=$ParaView_DIR/lib/$pvMajor
+        pvPython=$ParaView_DIR/Utilities/VTKPythonWrapping
 
-    export PATH=$ParaView_DIR/bin:$PATH
-    export LD_LIBRARY_PATH=$ParaView_LIB_DIR:$LD_LIBRARY_PATH
-    export PV_PLUGIN_PATH=$FOAM_LIBBIN/paraview-$ParaView_MAJOR
+        export ParaView_INCLUDE_DIR=$ParaView_DIR/include/$pvMajor
+        export PV_PLUGIN_PATH=$FOAM_LIBBIN/$pvMajor
+        export PATH=$ParaView_DIR/bin:$PATH
+        export LD_LIBRARY_PATH=$pvLibDir:$LD_LIBRARY_PATH
 
-    if [ "$FOAM_VERBOSE" -a "$PS1" ]
-    then
-        echo "Using paraview"
-        echo "    ParaView_DIR         : $ParaView_DIR"
-        echo "    ParaView_LIB_DIR     : $ParaView_LIB_DIR"
-        echo "    ParaView_INCLUDE_DIR : $ParaView_INCLUDE_DIR"
-        echo "    PV_PLUGIN_PATH       : $PV_PLUGIN_PATH"
-    fi
+        # Add in python libraries if required
+        if [ -r $pvPython ]
+        then
+            if [ "$PYTHONPATH" ]
+            then
+                export PYTHONPATH=$PYTHONPATH:$pvPython:$pvLibDir
+            else
+                export PYTHONPATH=$pvPython:$pvLibDir
+            fi
+        fi
 
-    # Add in python libraries if required
-    paraviewPython=$ParaView_DIR/Utilities/VTKPythonWrapping
-    if [ -r $paraviewPython ]
-    then
-        if [ "$PYTHONPATH" ]
+        if [ "$FOAM_VERBOSE" -a "$PS1" ]
         then
-            export PYTHONPATH=$PYTHONPATH:$paraviewPython:$ParaView_LIB_DIR
-        else
-            export PYTHONPATH=$paraviewPython:$ParaView_LIB_DIR
+            echo "Using paraview"
+            echo "    ParaView_DIR         : $ParaView_DIR"
+            echo "    ParaView_INCLUDE_DIR : $ParaView_INCLUDE_DIR"
+            echo "    library dir          : $pvLibDir"
+            echo "    PV_PLUGIN_PATH       : $PV_PLUGIN_PATH"
         fi
+    else
+        unset ParaView_DIR ParaView_INCLUDE_DIR PV_PLUGIN_PATH
     fi
-else
-    unset PV_PLUGIN_PATH
+
 fi
 
-unset _foamParaviewEval
-unset cleaned cmake paraviewInstDir paraviewPython
+unset -f _foamParaviewEval
+unset cleaned cmake cmake_version pvName pvMajor pvSrcDir pvLibDir pvPython
+unset ParaView_VERSION ParaView_MAJOR
 
 #------------------------------------------------------------------------------
diff --git a/etc/config.sh/settings b/etc/config.sh/settings
index e67bf5126fe7b0beb66f75a3846568a0bbaa14fb..4e457c15c0022356bcf923c4da0ed1d1bccbf097 100644
--- a/etc/config.sh/settings
+++ b/etc/config.sh/settings
@@ -206,14 +206,9 @@ _foamAddLib  $FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN:$FOAM_EXT_LIBBIN:$
 unset gcc_version gmp_version mpfr_version mpc_version
 unset GMP_ARCH_PATH MPFR_ARCH_PATH
 
-# Location of compiler installation
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-if [ -z "$WM_COMPILER_TYPE" ]
-then
-    WM_COMPILER_TYPE=system
-    echo "Warning in $WM_PROJECT_DIR/etc/config.sh/settings:" 1>&2
-    echo "    WM_COMPILER_TYPE not set, using '$WM_COMPILER_TYPE'" 1>&2
-fi
+# Compiler installation - default to system
+# ~~~~~~~~~~~~~~~~~~~~~
+: ${WM_COMPILER_TYPE:=system}; export WM_COMPILER_TYPE
 
 # Load configured compiler versions, regardless of the compiler type
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -232,15 +227,16 @@ OpenFOAM | ThirdParty)
         mpcDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/${mpc_version:-mpc-system}
 
         # Check that the compiler directory can be found
-        [ -d "$gccDir" ] || {
-            echo 1>&2
-            echo "Warning in $WM_PROJECT_DIR/etc/config.sh/settings:" 1>&2
-            echo "    Cannot find $gccDir installation." 1>&2
-            echo "    Please install this compiler version or if you wish to" \
-                 " use the system compiler," 1>&2
-            echo "    change the 'WM_COMPILER_TYPE' setting to 'system'" 1>&2
-            echo
-        }
+        [ -d "$gccDir" ] || cat << GCC_NOT_FOUND 1>&2
+===============================================================================
+Warning in $WM_PROJECT_DIR/etc/config.sh/settings:
+Cannot find '$WM_COMPILER' compiler installation
+    $gccDir
+
+    Either install this compiler version, or use the system compiler by setting
+    WM_COMPILER_TYPE to 'system' in \$WM_PROJECT_DIR/etc/bashrc.
+===============================================================================
+GCC_NOT_FOUND
 
         _foamAddMan     $gccDir/man
         _foamAddPath    $gccDir/bin
@@ -276,15 +272,16 @@ OpenFOAM | ThirdParty)
         clangDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$clang_version
 
         # Check that the compiler directory can be found
-        [ -d "$clangDir" ] || {
-            echo 1>&2
-            echo "Warning in $WM_PROJECT_DIR/etc/config.sh/settings:" 1>&2
-            echo "    Cannot find $clangDir installation." 1>&2
-            echo "    Please install this compiler version or if you wish to" \
-                 " use the system compiler," 1>&2
-            echo "    change the 'WM_COMPILER_TYPE' setting to 'system'" 1>&2
-            echo 1>&2
-        }
+        [ -d "$clangDir" ] || cat << CLANG_NOT_FOUND 1>&2
+===============================================================================
+Warning in $WM_PROJECT_DIR/etc/config.sh/settings:
+Cannot find '$WM_COMPILER' compiler installation
+    $clangDir
+
+    Either install this compiler version, or use the system compiler by setting
+    WM_COMPILER_TYPE to 'system' in \$WM_PROJECT_DIR/etc/bashrc.
+===============================================================================
+CLANG_NOT_FOUND
 
         _foamAddMan     $clangDir/share/man
         _foamAddPath    $clangDir/bin
diff --git a/etc/config.sh/unset b/etc/config.sh/unset
index 7bce3ddf0d9a52c2923499f8e37453f41a524aff..c51dcf4c53b8aa22555f001fc25f6a9bf82a9a14 100644
--- a/etc/config.sh/unset
+++ b/etc/config.sh/unset
@@ -132,12 +132,6 @@ unset GMP_ARCH_PATH
 unset MPFR_ARCH_PATH
 unset SCOTCH_ARCH_PATH
 
-#------------------------------------------------------------------------------
-# Unset foamyHexMesh-related environment variables
-
-unset FOAMY_HEX_MESH
-
-
 #------------------------------------------------------------------------------
 # Cleanup environment
 # PATH, LD_LIBRARY_PATH, MANPATH
@@ -183,9 +177,9 @@ unalias util
 unalias tut
 unalias run
 
-unset wmRefresh
-unset foamVersion
-unset foamPV
+unset -f wmRefresh
+unset -f foamVersion
+unset -f foamPV
 
 
 #------------------------------------------------------------------------------
diff --git a/etc/cshrc b/etc/cshrc
index 984db6bfefac48242c2448117bf66a597cca09c8..759413c0c856cd8561c42577a113df31ef10b3cd 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -57,7 +57,7 @@ echo $FOAM_INST_DIR
 # $FOAM_INST_DIR/site/$WM_PROJECT_VERSION or $FOAM_INST_DIR/site
 
 #- Compiler location:
-#    WM_COMPILER_TYPE = system | ThirdParty (OpenFOAM)
+#    WM_COMPILER_TYPE = system | ThirdParty
 setenv WM_COMPILER_TYPE system
 
 #- Compiler:
@@ -218,9 +218,7 @@ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/paraview`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/ensight`
 
-if ( ($?FOAMY_HEX_MESH) ) then
-    _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/CGAL`
-endif
+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/CGAL`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/FFTW`
 
 
diff --git a/src/functionObjects/field/ddt2/ddt2.C b/src/functionObjects/field/ddt2/ddt2.C
index 49b04f4239850922d5495cfef8086dc243d7dd01..93c6b934728888b03ab27e1a4a5bb9b134c0c425 100644
--- a/src/functionObjects/field/ddt2/ddt2.C
+++ b/src/functionObjects/field/ddt2/ddt2.C
@@ -121,51 +121,6 @@ int Foam::functionObjects::ddt2::process(const word& fieldName)
 }
 
 
-void Foam::functionObjects::ddt2::process()
-{
-    results_.clear();
-
-    wordHashSet candidates = subsetStrings(selectFields_, mesh_.names());
-    DynamicList<word> missing(selectFields_.size());
-    DynamicList<word> ignored(selectFields_.size());
-
-    // check exact matches first
-    forAll(selectFields_, i)
-    {
-        const wordRe& select = selectFields_[i];
-        if (!select.isPattern())
-        {
-            const word& fieldName = static_cast<const word&>(select);
-
-            if (!candidates.erase(fieldName))
-            {
-                missing.append(fieldName);
-            }
-            else if (process(fieldName) < 1)
-            {
-                ignored.append(fieldName);
-            }
-        }
-    }
-
-    forAllConstIter(wordHashSet, candidates, iter)
-    {
-        process(iter.key());
-    }
-
-    if (missing.size())
-    {
-        WarningInFunction
-            << "Missing field " << missing << endl;
-    }
-    if (ignored.size())
-    {
-        WarningInFunction
-            << "Unprocessed field " << ignored << endl;
-    }
-}
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::functionObjects::ddt2::ddt2
@@ -206,6 +161,8 @@ bool Foam::functionObjects::ddt2::read(const dictionary& dict)
         return false;
     }
 
+    fvMeshFunctionObject::read(dict);
+
     dict.lookup("fields") >> selectFields_;
     uniqWords(selectFields_);
 
@@ -238,7 +195,45 @@ bool Foam::functionObjects::ddt2::read(const dictionary& dict)
 bool Foam::functionObjects::ddt2::execute()
 {
     results_.clear();
-    process();
+
+    wordHashSet candidates = subsetStrings(selectFields_, mesh_.names());
+    DynamicList<word> missing(selectFields_.size());
+    DynamicList<word> ignored(selectFields_.size());
+
+    // check exact matches first
+    forAll(selectFields_, i)
+    {
+        const wordRe& select = selectFields_[i];
+        if (!select.isPattern())
+        {
+            const word& fieldName = static_cast<const word&>(select);
+
+            if (!candidates.erase(fieldName))
+            {
+                missing.append(fieldName);
+            }
+            else if (process(fieldName) < 1)
+            {
+                ignored.append(fieldName);
+            }
+        }
+    }
+
+    forAllConstIter(wordHashSet, candidates, iter)
+    {
+        process(iter.key());
+    }
+
+    if (missing.size())
+    {
+        WarningInFunction
+            << "Missing field " << missing << endl;
+    }
+    if (ignored.size())
+    {
+        WarningInFunction
+            << "Unprocessed field " << ignored << endl;
+    }
 
     return true;
 }
@@ -246,9 +241,13 @@ bool Foam::functionObjects::ddt2::execute()
 
 bool Foam::functionObjects::ddt2::write()
 {
+    if (results_.size())
+    {
+        Log << type() << ' ' << name() << " write:" << endl;
+    }
+
     // Consistent output order
     const wordList outputList = results_.sortedToc();
-
     forAll(outputList, i)
     {
         const word& fieldName = outputList[i];
@@ -257,8 +256,7 @@ bool Foam::functionObjects::ddt2::write()
         {
             const regIOobject& io = lookupObject<regIOobject>(fieldName);
 
-            Log << type() << " " << name()
-                << " write: writing field " << fieldName << endl;
+            Log << "    " << fieldName << endl;
 
             io.write();
         }
diff --git a/src/functionObjects/field/ddt2/ddt2.H b/src/functionObjects/field/ddt2/ddt2.H
index e713ecb8a431cd04bf8cbb08f589b1e17adb2f94..0f4b69bea34188ad80e1f9383af379eb745c572a 100644
--- a/src/functionObjects/field/ddt2/ddt2.H
+++ b/src/functionObjects/field/ddt2/ddt2.H
@@ -68,7 +68,7 @@ Description
 
 SourceFiles
     ddt2.C
-    IOddt2.H
+    ddt2Templates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -137,9 +137,6 @@ class ddt2
         //- Process by trying to apply for various volume field types.
         int process(const word& inputName);
 
-        //- Calculate the ddt2 fields
-        void process();
-
 
         //- Disallow default bitwise copy construct
         ddt2(const ddt2&) = delete;
@@ -171,7 +168,7 @@ public:
 
     // Member Functions
 
-        //- Return name of the ddt2 function object
+        //- Read the ddt2 specification
         virtual bool read(const dictionary&);
 
         //- Calculate the ddt2 fields
diff --git a/src/functionObjects/field/ddt2/ddt2Templates.C b/src/functionObjects/field/ddt2/ddt2Templates.C
index 098a5aa8c80b7fd481aeaadc2b45a08b101279b7..3514dbe3b64d7574ff0806bd476686941b797678 100644
--- a/src/functionObjects/field/ddt2/ddt2Templates.C
+++ b/src/functionObjects/field/ddt2/ddt2Templates.C
@@ -27,6 +27,8 @@ License
 #include "dimensionedType.H"
 #include "fvcDdt.H"
 
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
 template<class FieldType>
 int Foam::functionObjects::ddt2::apply(const word& inputName, int& state)
 {
@@ -76,10 +78,8 @@ int Foam::functionObjects::ddt2::apply(const word& inputName, int& state)
         store(outputName, tddt2);
     }
 
-    volScalarField& output = const_cast<volScalarField&>
-    (
-        lookupObject<volScalarField>(outputName)
-    );
+    volScalarField& output =
+        const_cast<volScalarField&>(lookupObject<volScalarField>(outputName));
 
     if (mag_)
     {
@@ -91,7 +91,7 @@ int Foam::functionObjects::ddt2::apply(const word& inputName, int& state)
     }
 
     // Could add additional statistics here
-    Log << type() << " " << name()
+    Log << type() << ' ' << name()
         << " field " << outputName
         << " average: " << gAverage(output) << endl;
 
diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.C b/src/functionObjects/field/zeroGradient/zeroGradient.C
index 2cdb88f72b6526d63b1cc67d7fbc5008a0497980..9f7a2c257e7cedf3aafd93e7a1103e65fe426f8d 100644
--- a/src/functionObjects/field/zeroGradient/zeroGradient.C
+++ b/src/functionObjects/field/zeroGradient/zeroGradient.C
@@ -108,7 +108,45 @@ int Foam::functionObjects::zeroGradient::process(const word& fieldName)
 }
 
 
-void Foam::functionObjects::zeroGradient::process()
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::functionObjects::zeroGradient::zeroGradient
+(
+    const word& name,
+    const Time& runTime,
+    const dictionary& dict
+)
+:
+    fvMeshFunctionObject(name, runTime, dict),
+    selectFields_(),
+    resultName_(string::null),
+    results_()
+{
+    read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::functionObjects::zeroGradient::~zeroGradient()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::functionObjects::zeroGradient::read(const dictionary& dict)
+{
+    fvMeshFunctionObject::read(dict);
+
+    dict.lookup("fields") >> selectFields_;
+    uniqWords(selectFields_);
+
+    resultName_ = dict.lookupOrDefault<word>("result", type() + "(@@)");
+    return checkFormatName(resultName_);
+}
+
+
+bool Foam::functionObjects::zeroGradient::execute()
 {
     results_.clear();
 
@@ -150,59 +188,20 @@ void Foam::functionObjects::zeroGradient::process()
         WarningInFunction
             << "Unprocessed field " << ignored << endl;
     }
-}
-
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::functionObjects::zeroGradient::zeroGradient
-(
-    const word& name,
-    const Time& runTime,
-    const dictionary& dict
-)
-:
-    fvMeshFunctionObject(name, runTime, dict),
-    selectFields_(),
-    resultName_(string::null),
-    results_()
-{
-    read(dict);
-}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::zeroGradient::~zeroGradient()
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-bool Foam::functionObjects::zeroGradient::read(const dictionary& dict)
-{
-    fvMeshFunctionObject::read(dict);
-
-    dict.lookup("fields") >> selectFields_;
-    uniqWords(selectFields_);
-
-    resultName_ = dict.lookupOrDefault<word>("result", type() + "(@@)");
-    return checkFormatName(resultName_);
-}
-
-
-bool Foam::functionObjects::zeroGradient::execute()
-{
-    results_.clear();
     return true;
 }
 
 
 bool Foam::functionObjects::zeroGradient::write()
 {
+    if (results_.size())
+    {
+        Log << type() << ' ' << name() << " write:" << endl;
+    }
+
     // Consistent output order
     const wordList outputList = results_.sortedToc();
-
     forAll(outputList, i)
     {
         const word& fieldName = outputList[i];
@@ -211,8 +210,7 @@ bool Foam::functionObjects::zeroGradient::write()
         {
             const regIOobject& io = lookupObject<regIOobject>(fieldName);
 
-            Log << type() << " " << name()
-                << " write: writing field " << fieldName << endl;
+            Log << "    " << fieldName << endl;
 
             io.write();
         }
diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.H b/src/functionObjects/field/zeroGradient/zeroGradient.H
index 80535548d65a3af259c0b2a2e1bc89809abaf8f9..3ceda2cefe63552e8757a09df5ee9535594a4fc6 100644
--- a/src/functionObjects/field/zeroGradient/zeroGradient.H
+++ b/src/functionObjects/field/zeroGradient/zeroGradient.H
@@ -65,8 +65,7 @@ Description
 
 SourceFiles
     zeroGradient.C
-    zeroGradientFunctionObject.C
-    IOzeroGradient.H
+    zeroGradientTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -114,7 +113,10 @@ class zeroGradient
         static void uniqWords(wordReList&);
 
 
-        //- Accept unless field only has empty/zero-gradient/processor patches
+        //- Accept unless field only has constraint patches
+        //  (ie, empty/zero-gradient/processor).
+        //  This should also avoid fields that were already processed by
+        //  zeroGradient.
         template<class Type>
         static bool accept(const GeometricField<Type, fvPatchField, volMesh>&);
 
@@ -125,9 +127,6 @@ class zeroGradient
         //- Process by trying to apply for various volume field types.
         int process(const word& inputName);
 
-        //- Calculate the zeroGradient fields
-        void process();
-
 
         //- Disallow default bitwise copy construct
         zeroGradient(const zeroGradient&) = delete;
diff --git a/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C b/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C
index 09c32d45fb32af3b1203f01b5c79d8260a5c5b75..c900f9575d04c14352e4c629c6dc49f285c87e8f 100644
--- a/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C
+++ b/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C
@@ -27,6 +27,8 @@ License
 #include "Time.H"
 #include "zeroGradientFvPatchField.H"
 
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
 template<class Type>
 bool Foam::functionObjects::zeroGradient::accept
 (
@@ -38,10 +40,10 @@ bool Foam::functionObjects::zeroGradient::accept
 
     forAll(patches, patchi)
     {
-        const fvPatchField<Type>& p = patches[patchi];
-        const polyPatch& pp = p.patch().patch();
-
-        return !polyPatch::constraintType(pp.type());
+        if (!polyPatch::constraintType(patches[patchi].patch().patch().type()))
+        {
+            return true;
+        }
     }
 
     return false;
@@ -104,6 +106,7 @@ int Foam::functionObjects::zeroGradient::apply
 
     VolFieldType& output =
         const_cast<VolFieldType&>(lookupObject<VolFieldType>(outputName));
+
     output = input;
     output.correctBoundaryConditions();
 
diff --git a/tutorials/basic/laplacianFoam/flange/Allrun b/tutorials/basic/laplacianFoam/flange/Allrun
index 91c4818b86203a7025ee9eed8092cb6c054dd52c..ac1e880823e320228d9149db460c0daef0e993f5 100755
--- a/tutorials/basic/laplacianFoam/flange/Allrun
+++ b/tutorials/basic/laplacianFoam/flange/Allrun
@@ -20,8 +20,8 @@ runAnsysToFoam()
 
 runAnsysToFoam flange.ans 0.001
 runApplication $application
-runApplication foamToEnsight
-runApplication foamToEnsightParts
+runApplication foamToEnsight -noZero
+runApplication foamToEnsightParts -noZero
 runApplication foamToVTK
 
 #------------------------------------------------------------------------------
diff --git a/wmake/rules/General/CGAL b/wmake/rules/General/CGAL
index 8097684eee4a59be68551979b4772c01b9b8a7ba..fd1965e656e351412c3d1b34cb53e89cce56e08b 100644
--- a/wmake/rules/General/CGAL
+++ b/wmake/rules/General/CGAL
@@ -10,5 +10,4 @@ CGAL_LIBS = \
     -L$(GMP_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
     -L$(BOOST_ARCH_PATH)/lib \
     -L$(CGAL_ARCH_PATH)/lib \
-    -lCGAL \
-    -lmpfr
+    -lCGAL
diff --git a/wmake/rules/General/general b/wmake/rules/General/general
index 4fb68a01d723c04add42111c850900d1c365bab3..f7e42cbef34a9482b129c9b44e04b196d520fc3a 100644
--- a/wmake/rules/General/general
+++ b/wmake/rules/General/general
@@ -1,5 +1,5 @@
 #-------------------------------*- makefile -*---------------------------------
-WM_VERSION = OPENFOAM_PLUS=1606
+WM_VERSION = OPENFOAM_PLUS=1609
 
 AR         = ar
 ARFLAGS    = cr