diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C
index 5d9c5be4b29e5d9e327ae2bd7ad6e62f181b5de8..6f5e4649afda1679e2c6be02a3ea35dc6ddf5880 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,6 +29,7 @@ License
 #include "Time.H"
 #include "GAMGInterface.H"
 #include "GAMGProcAgglomeration.H"
+#include "pairGAMGAgglomeration.H"
 #include "IOmanip.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -229,7 +230,7 @@ Foam::GAMGAgglomeration::GAMGAgglomeration
 
     nCellsInCoarsestLevel_
     (
-        readLabel(controlDict.lookup("nCellsInCoarsestLevel"))
+        controlDict.lookupOrDefault<label>("nCellsInCoarsestLevel", 10)
     ),
     meshInterfaces_(mesh.interfaces()),
     procAgglomeratorPtr_
@@ -284,7 +285,10 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New
         )
     )
     {
-        const word agglomeratorType(controlDict.lookup("agglomerator"));
+        const word agglomeratorType
+        (
+            controlDict.lookupOrDefault<word>("agglomerator", "faceAreaPair")
+        );
 
         const_cast<Time&>(mesh.thisDb().time()).libs().open
         (
@@ -339,7 +343,10 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New
         )
     )
     {
-        const word agglomeratorType(controlDict.lookup("agglomerator"));
+        const word agglomeratorType
+        (
+            controlDict.lookupOrDefault<word>("agglomerator", "faceAreaPair")
+        );
 
         const_cast<Time&>(mesh.thisDb().time()).libs().open
         (
@@ -382,7 +389,10 @@ Foam::autoPtr<Foam::GAMGAgglomeration> Foam::GAMGAgglomeration::New
     const dictionary& controlDict
 )
 {
-    const word agglomeratorType(controlDict.lookup("agglomerator"));
+    const word agglomeratorType
+    (
+        controlDict.lookupOrDefault<word>("agglomerator", "faceAreaPair")
+    );
 
     const_cast<Time&>(mesh.thisDb().time()).libs().open
     (
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/pairGAMGAgglomeration/pairGAMGAgglomeration.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/pairGAMGAgglomeration/pairGAMGAgglomeration.C
index 31359e692c3414f1cc1aa37fa7ea672bfb9580f1..dfc49bf177fa2f3a620cd8c7642e335042af1433 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/pairGAMGAgglomeration/pairGAMGAgglomeration.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/pairGAMGAgglomeration/pairGAMGAgglomeration.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ Foam::pairGAMGAgglomeration::pairGAMGAgglomeration
 )
 :
     GAMGAgglomeration(mesh, controlDict),
-    mergeLevels_(readLabel(controlDict.lookup("mergeLevels")))
+    mergeLevels_(controlDict.lookupOrDefault<label>("mergeLevels", 1))
 {}
 
 
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C
index b0ab7feb97a31992ceab9d006a2f055f28af4e5c..6538689b267f78b427af722a0dbda103e316de1c 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -64,7 +64,7 @@ Foam::GAMGSolver::GAMGSolver
 
     // Default values for all controls
     // which may be overridden by those in controlDict
-    cacheAgglomeration_(false),
+    cacheAgglomeration_(true),
     nPreSweeps_(0),
     preSweepsLevelMultiplier_(1),
     maxPreSweeps_(4),
@@ -313,7 +313,6 @@ void Foam::GAMGSolver::readControls()
 {
     lduMatrix::solver::readControls();
 
-    // we could also consider supplying defaults here too
     controlDict_.readIfPresent("cacheAgglomeration", cacheAgglomeration_);
     controlDict_.readIfPresent("nPreSweeps", nPreSweeps_);
     controlDict_.readIfPresent