diff --git a/bin/foamNew b/bin/foamNew
index 6ef67f738754d12966d4f77f43af1af98531c115..d1b31693b9f40e55166691202608eaa7d01b4a5c 100755
--- a/bin/foamNew
+++ b/bin/foamNew
@@ -33,7 +33,6 @@
 usage() {
     while [ "$#" -ge 1 ]; do echo "$1"; shift; done
     cat<<USAGE
-
 usage: ${0##*/} <type> {args}
 
 * create a new standard OpenFOAM source or template file
@@ -44,22 +43,18 @@ USAGE
     exit 1
 }
 
-if [ "$#" -lt 2 ]
-then
-    usage "wrong number of arguments, expected 2 (or more)"
-fi
+
+# this implicitly covers a lone -help, but let other scripts handle the rest
+[ "$#" -gt 1 ] || usage
 
 case "$1" in
--h | -help)
-    usage
-    ;;
 source)
     shift
-    $WM_PROJECT_DIR/bin/foamTemplates/source/newSource $*
+    $WM_PROJECT_DIR/bin/templates/source/foamNewSource $*
     ;;
 template)
     shift
-    $WM_PROJECT_DIR/bin/foamTemplates/sourceTemplate/newSourceTemplate $*
+    $WM_PROJECT_DIR/bin/templates/sourceTemplate/foamNewTemplate $*
     ;;
 *)
     usage "unknown type"
diff --git a/bin/foamNewSource b/bin/foamNewSource
new file mode 120000
index 0000000000000000000000000000000000000000..1195efa3f39f472e565be8430b8ebe97a77cfef1
--- /dev/null
+++ b/bin/foamNewSource
@@ -0,0 +1 @@
+templates/source/foamNewSource
\ No newline at end of file
diff --git a/bin/foamNewTemplate b/bin/foamNewTemplate
new file mode 120000
index 0000000000000000000000000000000000000000..daefeb49292eb14d9760188d1b3ec70c4e6133d3
--- /dev/null
+++ b/bin/foamNewTemplate
@@ -0,0 +1 @@
+templates/sourceTemplate/foamNewTemplate
\ No newline at end of file
diff --git a/bin/foamTemplates/foamCommentStyles b/bin/templates/foamCommentStyles
similarity index 100%
rename from bin/foamTemplates/foamCommentStyles
rename to bin/templates/foamCommentStyles
diff --git a/bin/foamTemplates/foamScript b/bin/templates/foamScript
similarity index 100%
rename from bin/foamTemplates/foamScript
rename to bin/templates/foamScript
diff --git a/bin/foamTemplates/source/foamTemplate.C b/bin/templates/source/_Template.C
similarity index 84%
rename from bin/foamTemplates/source/foamTemplate.C
rename to bin/templates/source/_Template.C
index 1f86ef69f8739499da8d8ce3c6048583aeb56c7d..a45d3ff6ac42f26f8238619393703ef088a0cc4a 100644
--- a/bin/foamTemplates/source/foamTemplate.C
+++ b/bin/templates/source/_Template.C
@@ -24,11 +24,11 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "className.H"
+#include "CLASSNAME.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
-const dataType Foam::className::staticData();
+const dataType Foam::CLASSNAME::staticData();
 
 
 // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
@@ -42,21 +42,21 @@ const dataType Foam::className::staticData();
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::className::className()
+Foam::CLASSNAME::CLASSNAME()
 :
     baseClassName(),
     data_()
 {}
 
 
-Foam::className::className(const dataType& data)
+Foam::CLASSNAME::CLASSNAME(const dataType& data)
 :
     baseClassName(),
     data_(data)
 {}
 
 
-Foam::className::className(const className&)
+Foam::CLASSNAME::CLASSNAME(const CLASSNAME&)
 :
     baseClassName(),
     data_()
@@ -65,15 +65,15 @@ Foam::className::className(const className&)
 
 // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
 
-Foam::autoPtr<Foam::className> Foam::className::New()
+Foam::autoPtr<Foam::CLASSNAME> Foam::CLASSNAME::New()
 {
-    return autoPtr<className>(new className);
+    return autoPtr<CLASSNAME>(new CLASSNAME);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::className::~className()
+Foam::CLASSNAME::~CLASSNAME()
 {}
 
 
@@ -82,12 +82,12 @@ Foam::className::~className()
 
 // * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * * //
 
-void Foam::className::operator=(const className& rhs)
+void Foam::CLASSNAME::operator=(const CLASSNAME& rhs)
 {
     // Check for assignment to self
     if (this == &rhs)
     {
-        FatalErrorIn("Foam::className::operator=(const Foam::className&)")
+        FatalErrorIn("Foam::CLASSNAME::operator=(const Foam::CLASSNAME&)")
             << "Attempted assignment to self"
             << abort(FatalError);
     }
diff --git a/bin/foamTemplates/source/foamTemplate.H b/bin/templates/source/_Template.H
similarity index 79%
rename from bin/foamTemplates/source/foamTemplate.H
rename to bin/templates/source/_Template.H
index e0b6cf21577a30947428b32ef1da7e8947d5900b..b86edcbde916e0eafd4b6b9b7d426215ae9bd391 100644
--- a/bin/foamTemplates/source/foamTemplate.H
+++ b/bin/templates/source/_Template.H
@@ -23,19 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::className
+    Foam::CLASSNAME
 
 Description
 
 SourceFiles
-    classNameI.H
-    className.C
-    classNameIO.C
+    CLASSNAMEI.H
+    CLASSNAME.C
+    CLASSNAMEIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef className_H
-#define className_H
+#ifndef CLASSNAME_H
+#define CLASSNAME_H
 
 #include ".H"
 
@@ -49,16 +49,16 @@ class Istream;
 class Ostream;
 
 // Forward declaration of friend functions and operators
-class className;
-Istream& operator>>(Istream&, className&);
-Ostream& operator<<(Ostream&, const className&);
+class CLASSNAME;
+Istream& operator>>(Istream&, CLASSNAME&);
+Ostream& operator<<(Ostream&, const CLASSNAME&);
 
 
 /*---------------------------------------------------------------------------*\
-                          Class className Declaration
+                         Class CLASSNAME Declaration
 \*---------------------------------------------------------------------------*/
 
-class className
+class CLASSNAME
 :
     public baseClassName
 {
@@ -71,10 +71,10 @@ class className
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        className(const className&);
+        CLASSNAME(const CLASSNAME&);
 
         //- Disallow default bitwise assignment
-        void operator=(const className&);
+        void operator=(const CLASSNAME&);
 
 
 public:
@@ -88,26 +88,26 @@ public:
     // Constructors
 
         //- Construct null
-        className();
+        CLASSNAME();
 
         //- Construct from components
-        className(const dataType& data);
+        CLASSNAME(const dataType& data);
 
         //- Construct from Istream
-        className(Istream&);
+        CLASSNAME(Istream&);
 
         //- Construct as copy
-        className(const className&);
+        CLASSNAME(const CLASSNAME&);
 
 
     // Selectors
 
         //- Select null constructed
-        static autoPtr<className> New();
+        static autoPtr<CLASSNAME> New();
 
 
     //- Destructor
-    ~className();
+    ~CLASSNAME();
 
 
     // Member Functions
@@ -123,7 +123,7 @@ public:
 
     // Member Operators
 
-        void operator=(const className&);
+        void operator=(const CLASSNAME&);
 
 
     // Friend Functions
@@ -132,8 +132,8 @@ public:
 
     // IOstream Operators
 
-        friend Istream& operator>>(Istream&, className&);
-        friend Ostream& operator<<(Ostream&, const className&);
+        friend Istream& operator>>(Istream&, CLASSNAME&);
+        friend Ostream& operator<<(Ostream&, const CLASSNAME&);
 };
 
 
@@ -143,7 +143,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "classNameI.H"
+#include "CLASSNAMEI.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/bin/foamTemplates/source/foamAppTemplate.C b/bin/templates/source/_TemplateApp.C
similarity index 99%
rename from bin/foamTemplates/source/foamAppTemplate.C
rename to bin/templates/source/_TemplateApp.C
index 46c089c1a865c2884cd4f62323db9f5c67442dce..7ce97539e6ab351103502e5ca0594cd045e52d2d 100644
--- a/bin/foamTemplates/source/foamAppTemplate.C
+++ b/bin/templates/source/_TemplateApp.C
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Application
-    className
+    CLASSNAME
 
 Description
 
diff --git a/bin/foamTemplates/source/foamTemplateI.H b/bin/templates/source/_TemplateI.H
similarity index 100%
rename from bin/foamTemplates/source/foamTemplateI.H
rename to bin/templates/source/_TemplateI.H
diff --git a/bin/foamTemplates/source/foamTemplateIO.C b/bin/templates/source/_TemplateIO.C
similarity index 83%
rename from bin/foamTemplates/source/foamTemplateIO.C
rename to bin/templates/source/_TemplateIO.C
index d9119ed354a4bce766750b5afd1a4c997245db29..c6d595100a2460dcfca112cf0c214ecb7faed950 100644
--- a/bin/foamTemplates/source/foamTemplateIO.C
+++ b/bin/templates/source/_TemplateIO.C
@@ -24,12 +24,12 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "className.H"
+#include "CLASSNAME.H"
 #include "IOstreams.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::className::className(Istream& is)
+Foam::CLASSNAME::CLASSNAME(Istream& is)
 :
     base1(is),
     base2(is),
@@ -37,31 +37,31 @@ Foam::className::className(Istream& is)
     member2(is)
 {
     // Check state of Istream
-    is.check("Foam::className::className(Foam::Istream&)");
+    is.check("Foam::CLASSNAME::CLASSNAME(Foam::Istream&)");
 }
 
 
 // * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
 
-Foam::Istream& Foam::operator>>(Istream& is, className&)
+Foam::Istream& Foam::operator>>(Istream& is, CLASSNAME&)
 {
     // Check state of Istream
     is.check
     (
-        "Foam::Istream& Foam::operator>>(Foam::Istream&, Foam::className&)"
+        "Foam::Istream& Foam::operator>>(Foam::Istream&, Foam::CLASSNAME&)"
     );
 
     return is;
 }
 
 
-Foam::Ostream& Foam::operator<<(Ostream& os, const className&)
+Foam::Ostream& Foam::operator<<(Ostream& os, const CLASSNAME&)
 {
     // Check state of Ostream
     os.check
     (
         "Foam::Ostream& Foam::operator<<(Foam::Ostream&, "
-        "const Foam::className&)"
+        "const Foam::CLASSNAME&)"
     );
 
     return os;
diff --git a/bin/foamTemplates/source/newSource b/bin/templates/source/foamNewSource
similarity index 69%
rename from bin/foamTemplates/source/newSource
rename to bin/templates/source/foamNewSource
index 927ad36b31d407b723573fc2eef6abcaf03990c5..ec1ad7b2e1bbc37c8bfdb9714918da4b783b667d 100755
--- a/bin/foamTemplates/source/newSource
+++ b/bin/templates/source/foamNewSource
@@ -24,18 +24,18 @@
 #     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 #
 # Script
-#     foamNew
+#     foamNewSource
 #
 # Description
 #     Create a new standard OpenFOAM source file
 #
 #------------------------------------------------------------------------------
 Script=${0##*/}
+Template="$WM_PROJECT_DIR/bin/templates/source/_Template"
 
 usage() {
     while [ "$#" -ge 1 ]; do echo "$1"; shift; done
     cat<<USAGE
-
 usage: $Script <type> <class name>
 
 * create a new standard OpenFOAM source file
@@ -46,49 +46,56 @@ USAGE
     exit 1
 }
 
-if [ "$#" -ne 2 ]; then
-   usage "wrong number of arguments, expected 2"
-fi
 
-unset suffix fileType
+# this implicitly covers a lone -help
+[ "$#" -gt 1 ] || usage
+
+className="$2"
+unset subType Type
+
 case "$1" in
+-h | -help)
+    usage
+    ;;
 C|H)
-   template=foamTemplate
-   fileType=$1
-   ;;
+    Type=".$1"
+    ;;
 I)
-   suffix=$1
-   template=foamTemplateI
-   fileType=H
-   ;;
+    Type="$1.H"
+    ;;
 IO)
-   suffix=$1
-   template=foamTemplateIO
-   fileType=C
-   ;;
+    Type="$1.C"
+    ;;
 app|App)
-   template=foamAppTemplate
-   fileType=C
-   if [ ! -d Make ]; then
-       echo "foamNew: Creating Make/files and Make/options"
-       wmakeFilesAndOptions
-   fi
-   ;;
+    subType=App
+    Type=".C"
+    ;;
 *)
-   usage "unknown type"
-   ;;
+    usage "unknown type"
+    ;;
 esac
+[ "$#" -eq 2 ] || usage "wrong number of arguments"
+shift 2
+
 
+fileName="$className$Type"
 
-fileName=$2$suffix.$fileType
 
-if [ -e "$fileName" ]; then
-   echo "Cannot make $fileName, file exists"
-   exit 1
+echo "$Script: Creating new interface file $fileName"
+if [ -e "$fileName" ]
+then
+    echo "   Error: file exists"
+    exit 1
 fi
 
-echo $Script: Creating new interface file $fileName
-sed s/className/$2/g \
-    $WM_PROJECT_DIR/bin/foamTemplates/source/$template.$fileType > $fileName
+
+# process class name
+sed "s/CLASSNAME/$className/g" $Template$subType$Type > $fileName
+
+
+if [ "$subType" = App -a ! -d Make ]
+then
+    wmakeFilesAndOptions
+fi
 
 #------------------------------------------------------------------------------
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.C b/bin/templates/sourceTemplate/_TemplateTemplate.C
similarity index 78%
rename from bin/foamTemplates/sourceTemplate/foamTemplateTemplate.C
rename to bin/templates/sourceTemplate/_TemplateTemplate.C
index 5acafb25e79133c97b4a9a7ee277d687e01ab14f..c73d5043a125f5f29afbdd95015be50ac93e2552 100644
--- a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.C
+++ b/bin/templates/sourceTemplate/_TemplateTemplate.C
@@ -24,12 +24,12 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "ClassName.H"
+#include "CLASSNAME.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 template<TemplateClassArgument>
-const dataType Foam::ClassName<TemplateArgument>::staticData();
+const dataType Foam::CLASSNAME<TemplateArgument>::staticData();
 
 
 // * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * //
@@ -38,7 +38,7 @@ const dataType Foam::ClassName<TemplateArgument>::staticData();
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<TemplateClassArgument>
-Foam::ClassName<TemplateArgument>::ClassName()
+Foam::CLASSNAME<TemplateArgument>::CLASSNAME()
 :
     baseClassName(),
     data_()
@@ -46,7 +46,7 @@ Foam::ClassName<TemplateArgument>::ClassName()
 
 
 template<TemplateClassArgument>
-Foam::ClassName<TemplateArgument>::ClassName(const dataType& data)
+Foam::CLASSNAME<TemplateArgument>::CLASSNAME(const dataType& data)
 :
     baseClassName(),
     data_(data)
@@ -54,12 +54,12 @@ Foam::ClassName<TemplateArgument>::ClassName(const dataType& data)
 
 
 template<TemplateClassArgument>
-Foam::ClassName<TemplateArgument>::ClassName
+Foam::CLASSNAME<TemplateArgument>::CLASSNAME
 (
-    const ClassName<TemplateArgument>&
+    const CLASSNAME<TemplateArgument>&
 )
 :
-    baseClassName(),
+    baseCLASSNAME(),
     data_()
 {}
 
@@ -67,12 +67,12 @@ Foam::ClassName<TemplateArgument>::ClassName
 // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
 
 template<TemplateClassArgument>
-Foam::autoPtr<Foam::ClassName<TemplateArgument> >
-Foam::ClassName<TemplateArgument>::New()
+Foam::autoPtr<Foam::CLASSNAME<TemplateArgument> >
+Foam::CLASSNAME<TemplateArgument>::New()
 {
-    return autoPtr<ClassName<TemplateArgument> >
+    return autoPtr<CLASSNAME<TemplateArgument> >
     (
-        new ClassName<TemplateArgument>
+        new CLASSNAME<TemplateArgument>
     );
 }
 
@@ -80,7 +80,7 @@ Foam::ClassName<TemplateArgument>::New()
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<TemplateClassArgument>
-Foam::ClassName<TemplateArgument>::~ClassName()
+Foam::CLASSNAME<TemplateArgument>::~CLASSNAME()
 {}
 
 
@@ -96,9 +96,9 @@ Foam::ClassName<TemplateArgument>::~ClassName()
 // * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * * //
 
 template<TemplateClassArgument>
-void Foam::ClassName<TemplateArgument>::operator=
+void Foam::CLASSNAME<TemplateArgument>::operator=
 (
-    const ClassName<TemplateArgument>& rhs
+    const CLASSNAME<TemplateArgument>& rhs
 )
 {
     // Check for assignment to self
@@ -106,8 +106,8 @@ void Foam::ClassName<TemplateArgument>::operator=
     {
         FatalErrorIn
         (
-            "Foam::ClassName<TemplateArgument>::operator="
-            "(const Foam::ClassName<TemplateArgument>&)"
+            "Foam::CLASSNAME<TemplateArgument>::operator="
+            "(const Foam::CLASSNAME<TemplateArgument>&)"
         )   << "Attempted assignment to self"
             << abort(FatalError);
     }
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.H b/bin/templates/sourceTemplate/_TemplateTemplate.H
similarity index 77%
rename from bin/foamTemplates/sourceTemplate/foamTemplateTemplate.H
rename to bin/templates/sourceTemplate/_TemplateTemplate.H
index 76bdd558601d023c9eaa24c9a2cbd128eb4421a1..6e24ddda2a6badd20ad9c4ebbcaf54c45147dcee 100644
--- a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.H
+++ b/bin/templates/sourceTemplate/_TemplateTemplate.H
@@ -23,19 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::ClassName
+    Foam::CLASSNAME
 
 Description
 
 SourceFiles
-    ClassNameI.H
-    ClassName.C
-    ClassNameIO.C
+    CLASSNAMEI.H
+    CLASSNAME.C
+    CLASSNAMEIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef ClassName_H
-#define ClassName_H
+#ifndef CLASSNAME_H
+#define CLASSNAME_H
 
 #include ".H"
 
@@ -51,21 +51,21 @@ class someClass;
 // Forward declaration of friend functions and operators
 
 template<TemplateClassArgument>
-class ClassName;
+class CLASSNAME;
 
 template<TemplateClassArgument>
-Istream& operator>>(Istream&, ClassName<TemplateArgument>&);
+Istream& operator>>(Istream&, CLASSNAME<TemplateArgument>&);
 
 template<TemplateClassArgument>
-Ostream& operator<<(Ostream&, const ClassName<TemplateArgument>&);
+Ostream& operator<<(Ostream&, const CLASSNAME<TemplateArgument>&);
 
 
 /*---------------------------------------------------------------------------*\
-                         Class ClassName Declaration
+                         Class CLASSNAME Declaration
 \*---------------------------------------------------------------------------*/
 
 template<TemplateClassArgument>
-class ClassName
+class CLASSNAME
 :
     public baseClassName
 {
@@ -77,10 +77,10 @@ class ClassName
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        ClassName(const ClassName<TemplateArgument>&);
+        CLASSNAME(const CLASSNAME<TemplateArgument>&);
 
         //- Disallow default bitwise assignment
-        void operator=(const ClassName<TemplateArgument>&);
+        void operator=(const CLASSNAME<TemplateArgument>&);
 
 
 public:
@@ -94,33 +94,33 @@ public:
     // Constructors
 
         //- Construct null
-        ClassName();
+        CLASSNAME();
 
         //- Construct from components
-        ClassName(const dataType& data);
+        CLASSNAME(const dataType& data);
 
         //- Construct from Istream
-        ClassName(Istream&);
+        CLASSNAME(Istream&);
 
         //- Construct as copy
-        ClassName(const ClassName<TemplateArgument>&);
+        CLASSNAME(const CLASSNAME<TemplateArgument>&);
 
 
     // Selectors
 
         //- Select null constructed
-        static autoPtr<ClassName<TemplateArgument> > New();
+        static autoPtr<CLASSNAME<TemplateArgument> > New();
 
 
     //- Destructor
-    ~ClassName();
+    ~CLASSNAME();
 
 
     // Member Functions
 
     // Member Operators
 
-        void operator=(const ClassName<TemplateArgument>&);
+        void operator=(const CLASSNAME<TemplateArgument>&);
 
 
     // Friend Functions
@@ -130,10 +130,10 @@ public:
     // IOstream Operators
 
         friend Istream& operator>> <TemplateArgument>
-        (Istream&, ClassName<TemplateArgument>&);
+        (Istream&, CLASSNAME<TemplateArgument>&);
 
         friend Ostream& operator<< <TemplateArgument>
-        (Ostream&, const ClassName<TemplateArgument>&);
+        (Ostream&, const CLASSNAME<TemplateArgument>&);
 };
 
 
@@ -143,12 +143,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "ClassNameI.H"
+#include "CLASSNAMEI.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "ClassName.C"
+#   include "CLASSNAME.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplateI.H b/bin/templates/sourceTemplate/_TemplateTemplateI.H
similarity index 100%
rename from bin/foamTemplates/sourceTemplate/foamTemplateTemplateI.H
rename to bin/templates/sourceTemplate/_TemplateTemplateI.H
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplateIO.C b/bin/templates/sourceTemplate/_TemplateTemplateIO.C
similarity index 85%
rename from bin/foamTemplates/sourceTemplate/foamTemplateTemplateIO.C
rename to bin/templates/sourceTemplate/_TemplateTemplateIO.C
index 1c805f6f6a39e5883e96d06d9f4b4531902c811b..9453630b686216647ab7035df15bb36dcc0144fa 100644
--- a/bin/foamTemplates/sourceTemplate/foamTemplateTemplateIO.C
+++ b/bin/templates/sourceTemplate/_TemplateTemplateIO.C
@@ -24,13 +24,13 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "ClassName.H"
+#include "CLASSNAME.H"
 #include "IOstreams.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<TemplateClassArgument>
-Foam::ClassName<TemplateArgument>::ClassName(Istream& is)
+Foam::CLASSNAME<TemplateArgument>::CLASSNAME(Istream& is)
 :
     base1(is),
     base2(is),
@@ -38,7 +38,7 @@ Foam::ClassName<TemplateArgument>::ClassName(Istream& is)
     member2(is)
 {
     // Check state of Istream
-    is.check("Foam::ClassName<TemplateArgument>::ClassName(Foam::Istream&)");
+    is.check("Foam::CLASSNAME<TemplateArgument>::CLASSNAME(Foam::Istream&)");
 }
 
 
@@ -48,14 +48,14 @@ template<TemplateClassArgument>
 Foam::Istream& Foam::operator>>
 (
     Istream& is,
-    ClassName<TemplateArgument>&
+    CLASSNAME<TemplateArgument>&
 )
 {
     // Check state of Istream
     is.check
     (
         "Foam::Istream& Foam::operator>>"
-        "(Foam::Istream&, Foam::ClassName<TemplateArgument>&)"
+        "(Foam::Istream&, Foam::CLASSNAME<TemplateArgument>&)"
     );
 
     return is;
@@ -66,14 +66,14 @@ template<TemplateClassArgument>
 Foam::Ostream& Foam::operator<<
 (
     Ostream& os,
-    const ClassName<TemplateArgument>&
+    const CLASSNAME<TemplateArgument>&
 )
 {
     // Check state of Ostream
     os.check
     (
         "Foam::Ostream& Foam::operator<<"
-        "(Ostream&, const ClassName<TemplateArgument>&)"
+        "(Ostream&, const CLASSNAME<TemplateArgument>&)"
     );
 
     return os;
diff --git a/bin/foamTemplates/sourceTemplate/newSourceTemplate b/bin/templates/sourceTemplate/foamNewTemplate
similarity index 74%
rename from bin/foamTemplates/sourceTemplate/newSourceTemplate
rename to bin/templates/sourceTemplate/foamNewTemplate
index b62a7f4c0e9f45150c30218f83bf8b28c5574f07..edf4fd3bce7ea59b753081d0ad0e42678f4af257 100755
--- a/bin/foamTemplates/sourceTemplate/newSourceTemplate
+++ b/bin/templates/sourceTemplate/foamNewTemplate
@@ -24,13 +24,14 @@
 #     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 #
 # Script
-#     newSourceTemplate
+#     foamNewTemplate
 #
 # Description
 #     Create a new standard OpenFOAM templated source file
 #
 #------------------------------------------------------------------------------
 Script=${0##*/}
+Template="$WM_PROJECT_DIR/bin/templates/sourceTemplate/_TemplateTemplate"
 
 usage() {
     while [ "$#" -ge 1 ]; do echo "$1"; shift; done
@@ -46,51 +47,50 @@ USAGE
     exit 1
 }
 
-if [ "$#" -le 2 ]; then
-   usage "wrong number of arguments, expected 3 (or more)"
-fi
+# this implicitly covers a lone -help
+[ "$#" -gt 1 ] || usage
+
+
+className="$2"
+unset Type
 
-unset suffix fileType
 case "$1" in
+-h | -help)
+    usage
+    ;;
 C|H)
-   Template=Template
-   fileType=$1
-   className=$2
-   ;;
+    Type=".$1"
+    ;;
 I)
-   suffix=$1
-   Template=TemplateI
-   fileType=H
-   className=$2
-   ;;
+    Type="$1.H"
+    ;;
 IO)
-   suffix=$1
-   Template=TemplateIO
-   fileType=C
-   className=$2
-   ;;
+    Type="$1.C"
+    ;;
 *)
-   usage "unknown type"
-   ;;
+    usage "unknown type"
+    ;;
 esac
+[ "$#" -ge 3 ] || usage "wrong number of arguments"
+shift 2
 
+fileName="$className$Type"
 
-fileName=$className$suffix.$fileType
 
-if [ -e "$fileName" ]; then
-   echo "Cannot make $fileName, file exists"
-   exit 1
+echo "$Script: Creating new template interface file $fileName"
+if [ -e "$fileName" ]
+then
+    echo "   Error: file exists"
+    exit 1
 fi
 
-shift 2
-echo "$Script: Creating new interface file $fileName"
 
 # process class name
-sed -e "s/ClassName/$className/g" \
-    $WM_PROJECT_DIR/bin/foamTemplates/sourceTemplate/foamTemplate$Template.$fileType > $fileName.1
+sed -e "s/CLASSNAME/$className/g" $Template$Type > $fileName.1
+
 
 # process template arguments
-for tArg in $*
+for tArg
 do
     sed -e "s/TemplateClassArgument/class $tArg, TemplateClassArgument/g" \
         -e "s/TemplateArgument/$tArg, TemplateArgument/g" \
@@ -99,7 +99,8 @@ do
     mv $fileName.2 $fileName.1
 done
 
-# remove remaining ", Template argument"
+
+# remove remaining ", Template .."
 sed -e "s/, TemplateClassArgument//g" \
     -e "s/, TemplateArgument//g" \
     $fileName.1 > $fileName
diff --git a/wmake/Makefile b/wmake/Makefile
index 28b7015b71dbc899c4bb4eea9845ac53edb34683..6b4fd0abe6faaa58688664345e0c81439fc66b1b 100644
--- a/wmake/Makefile
+++ b/wmake/Makefile
@@ -22,11 +22,11 @@
 #     along with OpenFOAM; if not, write to the Free Software Foundation,
 #     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 #
-# Script
+# File
 #     Makefile
 #
 # Description
-#     Generic Makefile used by wmake
+#     A generic Makefile, used by wmake
 #
 #------------------------------------------------------------------------------
 
diff --git a/wmake/MakefileApps b/wmake/MakefileApps
index 56c089c8536e88d50ef0f005f41b46b31a10cb68..55efa80ff8acd041be0b526b10fde8a8183b1c14 100644
--- a/wmake/MakefileApps
+++ b/wmake/MakefileApps
@@ -22,11 +22,11 @@
 #     along with OpenFOAM; if not, write to the Free Software Foundation,
 #     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 #
-# Script
+# File
 #     MakefileApps
 #
 # Description
-#     Makefile used by 
+#     Makefile used by
 #         wmake all
 #     to make the applications in the subdirectories of the current directory
 #
diff --git a/wmake/MakefileFiles b/wmake/MakefileFiles
index 4c2ef52826a0dfa3a0832ecebf66a3cdc6f51d21..d927682d9bcc4078d791ca401aada60a483a12d5 100644
--- a/wmake/MakefileFiles
+++ b/wmake/MakefileFiles
@@ -22,11 +22,11 @@
 #     along with OpenFOAM; if not, write to the Free Software Foundation,
 #     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 #
-# Script
+# File
 #     MakefileFiles
 #
 # Description
-#     General, easy to use make system for multi-platform development.
+#     A Makefile for the 'files', used by wmake
 #
 #------------------------------------------------------------------------------
 
@@ -40,7 +40,7 @@ include $(RULES)/general
 include $(OBJECTS_DIR)/options
 
 #------------------------------------------------------------------------------
-# declare names of make system control files derived from file files
+# declare names of make system control files derived from file 'files'
 #------------------------------------------------------------------------------
 
 FILES   = $(WM_OPTIONS)/files
@@ -51,7 +51,7 @@ DFILES  = $(WM_OPTIONS)/dependencyFiles
 IFILES  = $(WM_OPTIONS)/includeDeps
 
 #------------------------------------------------------------------------------
-# Declare dependecy of all make system files on FILE
+# Declare dependecy of all make system files on FILES
 # Causes all derived files to be remade if any are changed or missing
 #------------------------------------------------------------------------------
 
diff --git a/wmake/MakefileOptions b/wmake/MakefileOptions
index 92834a9a6594d37a35195ae93869eab4b63fbb0f..3e7779ff5244f745f74ac77b1f77682087bbef7f 100644
--- a/wmake/MakefileOptions
+++ b/wmake/MakefileOptions
@@ -22,11 +22,11 @@
 #     along with OpenFOAM; if not, write to the Free Software Foundation,
 #     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 #
-# Script
+# File
 #     MakefileOptions
 #
 # Description
-#     General, easy to use make system for multi-platform development.
+#     A Makefile for the 'options', used by wmake
 #
 #------------------------------------------------------------------------------
 
@@ -37,13 +37,13 @@ include $(GENERAL_RULES)/general
 include $(RULES)/general
 
 #------------------------------------------------------------------------------
-# declare names of make system control files derived from file files
+# declare names of make system control files derived from file 'options'
 #------------------------------------------------------------------------------
 
 OPTIONS = $(WM_OPTIONS)/options
 
 #------------------------------------------------------------------------------
-# Declare dependency of all make system files on FILE
+# Declare dependency of all make system files on OPTIONS
 # Causes all derived files to be remade if any are changed or missing
 #------------------------------------------------------------------------------
 
diff --git a/wmake/wmakeFilesAndOptions b/wmake/wmakeFilesAndOptions
index 4cf7fcbde8cb8ca7d985b7bcd1aced3af37a688e..d9fdca1854b355adca1d65c94167decde2c4e4fe 100755
--- a/wmake/wmakeFilesAndOptions
+++ b/wmake/wmakeFilesAndOptions
@@ -55,12 +55,12 @@ else
 fi
 
 [ -e Make/files ] || {
-    echo "$Script: Creating files"
+    echo "$Script: Creating Make/files"
     $WM_DIR/scripts/makeFiles
 }
 
 [ -e Make/options ] || {
-    echo "$Script: Creating options"
+    echo "$Script: Creating Make/options"
     $WM_DIR/scripts/makeOptions
 }