diff --git a/etc/codeTemplates/dynamicCode/codedBasicSourceTemplate.C b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C
similarity index 80%
rename from etc/codeTemplates/dynamicCode/codedBasicSourceTemplate.C
rename to etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C
index d5fdb11a0be2625738d2bce91df3b67efdd1a7bc..0ac2687861f65ed8fe777391c4179fd344081a4e 100644
--- a/etc/codeTemplates/dynamicCode/codedBasicSourceTemplate.C
+++ b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,12 +23,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "codedBasicSourceTemplate.H"
+#include "codedFvOptionTemplate.H"
 #include "addToRunTimeSelectionTable.H"
 #include "fvPatchFieldMapper.H"
 #include "volFields.H"
 #include "surfaceFields.H"
 #include "unitConversion.H"
+#include "fvMatrix.H"
+
 //{{{ begin codeInclude
 ${codeInclude}
 //}}} end codeInclude
@@ -39,6 +41,8 @@ ${codeInclude}
 namespace Foam
 {
 
+namespace fv
+{
 // * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
 
 //{{{ begin localCode
@@ -73,25 +77,25 @@ extern "C"
 //makeRemovablePatchTypeField
 //(
 //    fvPatch${FieldType},
-//    ${typeName}CodedBasic${SourceType}
+//    ${typeName}FvOption${SourceType}
 //);
-defineTypeNameAndDebug(${typeName}CodedBasic${SourceType}, 0);
+defineTypeNameAndDebug(${typeName}FvOption${SourceType}, 0);
 addRemovableToRunTimeSelectionTable
 (
-    basicSource,
-    ${typeName}CodedBasic${SourceType},
+    option,
+    ${typeName}FvOption${SourceType},
     dictionary
 );
 
 
-const char* const ${typeName}CodedBasic${SourceType}::SHA1sum =
+const char* const ${typeName}FvOption${SourceType}::SHA1sum =
     "${SHA1sum}";
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-${typeName}CodedBasic${SourceType}::
-${typeName}CodedBasic${SourceType}
+${typeName}FvOption${SourceType}::
+${typeName}FvOption${SourceType}
 (
     const word& name,
     const word& modelType,
@@ -99,7 +103,7 @@ ${typeName}CodedBasic${SourceType}
     const fvMesh& mesh
 )
 :
-    basicSource(name, modelType, dict, mesh)
+    option(name, modelType, dict, mesh)
 {
     if (${verbose:-false})
     {
@@ -111,8 +115,8 @@ ${typeName}CodedBasic${SourceType}
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-${typeName}CodedBasic${SourceType}::
-~${typeName}CodedBasic${SourceType}()
+${typeName}FvOption${SourceType}::
+~${typeName}FvOption${SourceType}()
 {
     if (${verbose:-false})
     {
@@ -123,14 +127,14 @@ ${typeName}CodedBasic${SourceType}::
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void ${typeName}CodedBasic${SourceType}::correct
+void ${typeName}FvOption${SourceType}::correct
 (
     GeometricField<${TemplateType}, fvPatchField, volMesh>& fld
 )
 {
     if (${verbose:-false})
     {
-        Info<<"${typeName}CodedBasic${SourceType}::correct()\n";
+        Info<<"${typeName}FvOption${SourceType}::correct()\n";
     }
 
 //{{{ begin code
@@ -139,7 +143,7 @@ void ${typeName}CodedBasic${SourceType}::correct
 }
 
 
-void ${typeName}CodedBasic${SourceType}::addSup
+void ${typeName}FvOption${SourceType}::addSup
 (
     fvMatrix<${TemplateType}>& eqn,
     const label fieldI
@@ -147,7 +151,7 @@ void ${typeName}CodedBasic${SourceType}::addSup
 {
     if (${verbose:-false})
     {
-        Info<<"${typeName}CodedBasic${SourceType}::addSup()\n";
+        Info<<"${typeName}FvOption${SourceType}::addSup()\n";
     }
 
 //{{{ begin code
@@ -156,7 +160,7 @@ void ${typeName}CodedBasic${SourceType}::addSup
 }
 
 
-void ${typeName}CodedBasic${SourceType}::setValue
+void ${typeName}FvOption${SourceType}::setValue
 (
     fvMatrix<${TemplateType}>& eqn,
     const label fieldI
@@ -164,7 +168,7 @@ void ${typeName}CodedBasic${SourceType}::setValue
 {
     if (${verbose:-false})
     {
-        Info<<"${typeName}CodedBasic${SourceType}::setValue()\n";
+        Info<<"${typeName}FvOption${SourceType}::setValue()\n";
     }
 
 //{{{ begin code
@@ -177,4 +181,5 @@ void ${typeName}CodedBasic${SourceType}::setValue
 
 } // End namespace Foam
 
+} // End namespace fv
 // ************************************************************************* //
diff --git a/etc/codeTemplates/dynamicCode/codedBasicSourceTemplate.H b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H
similarity index 57%
rename from etc/codeTemplates/dynamicCode/codedBasicSourceTemplate.H
rename to etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H
index 7f80510507e6e8bec0ae185bb7932309880905e8..15f1d1d520b03c2dca32119f5f93461afb17800c 100644
--- a/etc/codeTemplates/dynamicCode/codedBasicSourceTemplate.H
+++ b/etc/codeTemplates/dynamicCode/codedFvOptionTemplate.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,32 +22,106 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Description
-    Template for use with dynamic code generation of a basicSource
-
-    - without state
+    Template for use with dynamic code generation of a source.
+    The hook functions take the following arguments:
+
+    codeCorrect
+    (
+        GeometricField<Type, fvPatchField, volMesh>& fld
+    )
+
+    codeAddSup
+    (
+        fvMatrix<Type}>& eqn,
+        const label fieldI
+    )
+
+    setValue
+    (
+         fvMatrix<Type}>& eqn,
+        const label fieldI
+    )
+
+    where :
+        fld is the field in fieldNames
+        eqn is the fvMatrix
+
+    energySource
+    {
+        type            scalarCodedSource;
+
+        active          true;
+        selectionMode   all;
+
+        scalarCodedSourceCoeffs
+        {
+            fieldNames      (h);
+            redirectType    sourceTime;
+
+            codeInclude
+            #{
+
+            #};
+
+            codeCorrect
+            #{
+                Pout<< "**codeCorrect**" << endl;
+            #};
+
+            codeAddSup
+            #{
+                const Time& time = mesh().time();
+                const scalarField& V = mesh_.V();
+                scalarField& heSource = eqn.source();
+                heSource -= 0.1*sqr(time.value())*V;
+            #};
+
+            codeSetValue
+            #{
+                Pout<< "**codeSetValue**" << endl;
+            #};
+
+            // Dummy entry. Make dependent on above to trigger recompilation
+            code
+            #{
+                $codeInclude
+                $codeCorrect
+                $codeAddSup
+                $codeSetValue
+            #};
+        }
+
+        sourceTimeCoeffs
+        {
+            // Dummy entry
+        }
+    }
 
 SourceFiles
-    codedBasicSourceTemplate.C
+    codedFvOptionTemplate.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef codedBasicSourceTemplate_H
-#define codedBasicSourceTemplate_H
+#ifndef codedFvOptionTemplate_H
+#define codedFvOptionTemplate_H
 
-#include "basicSource.H"
+#include "fvOption.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+namespace fv
+{
+
 /*---------------------------------------------------------------------------*\
-                         A templated CodedBasicSource
+                         A templated CodedFvOption
 \*---------------------------------------------------------------------------*/
 
-class ${typeName}CodedBasic${SourceType}
+class ${typeName}FvOption${SourceType}
 :
-    public basicSource
+    public option
 {
 public:
 
@@ -61,7 +135,7 @@ public:
     // Constructors
 
         //- Construct from patch and internal field
-        ${typeName}CodedBasic${SourceType}
+        ${typeName}FvOption${SourceType}
         (
             const word& name,
             const word& modelType,
@@ -70,7 +144,7 @@ public:
         );
 
     //- Destructor
-    virtual ~${typeName}CodedBasic${SourceType}();
+    virtual ~${typeName}FvOption${SourceType}();
 
 
     // Member functions
@@ -101,6 +175,8 @@ public:
 
 } // End namespace Foam
 
+} // End namespace fv
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif