diff --git a/applications/solvers/finiteArea/liquidFilmFoam/createFaFields.H b/applications/solvers/finiteArea/liquidFilmFoam/createFaFields.H
index bb5ef10419256bbe79935db42659c1201957b673..5c760788c94e2a2de064f8e5bbf2135583372af6 100644
--- a/applications/solvers/finiteArea/liquidFilmFoam/createFaFields.H
+++ b/applications/solvers/finiteArea/liquidFilmFoam/createFaFields.H
@@ -155,4 +155,4 @@
         dimensionedScalar("one", dimless, 0.01)
     );
 
-    aMesh.schemesDict().setFluxRequired("h");
+    aMesh.setFluxRequired("h");
diff --git a/src/finiteArea/faMatrices/faMatrix/faMatrix.C b/src/finiteArea/faMatrices/faMatrix/faMatrix.C
index b6b6a114408dcccf71592e922e68c5f289a29fee..af6493cce3282a6fdf32f277d1a637feb8cf027b 100644
--- a/src/finiteArea/faMatrices/faMatrix/faMatrix.C
+++ b/src/finiteArea/faMatrices/faMatrix/faMatrix.C
@@ -532,9 +532,9 @@ void Foam::faMatrix<Type>::relax(const scalar alpha)
 template<class Type>
 void Foam::faMatrix<Type>::relax()
 {
-    if (psi_.mesh().solutionDict().relaxEquation(psi_.name()))
+    if (psi_.mesh().relaxEquation(psi_.name()))
     {
-        relax(psi_.mesh().solutionDict().equationRelaxationFactor(psi_.name()));
+        relax(psi_.mesh().equationRelaxationFactor(psi_.name()));
     }
     else
     {
@@ -628,7 +628,7 @@ template<class Type>
 Foam::tmp<Foam::GeometricField<Type, Foam::faePatchField, Foam::edgeMesh>>
 Foam::faMatrix<Type>::flux() const
 {
-    if (!psi_.mesh().schemesDict().fluxRequired(psi_.name()))
+    if (!psi_.mesh().fluxRequired(psi_.name()))
     {
         FatalErrorInFunction
             << "flux requested but " << psi_.name()
diff --git a/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C b/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C
index 726f9c15006f0f5eee785c415fe9096228c6aeb0..1a1e0f697911e590f4bb8c7b380a9cd72ea6fe14 100644
--- a/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C
+++ b/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C
@@ -143,6 +143,8 @@ Foam::SolverPerformance<Type> Foam::faMatrix<Type>::solve
 
     psi.correctBoundaryConditions();
 
+    psi.mesh().setSolverPerformance(psi.name(), solverPerfVec);
+
     return solverPerfVec;
 }
 
@@ -150,26 +152,14 @@ Foam::SolverPerformance<Type> Foam::faMatrix<Type>::solve
 template<class Type>
 Foam::SolverPerformance<Type> Foam::faMatrix<Type>::faSolver::solve()
 {
-    return solvei
-    (
-        faMat_.psi().mesh().solutionDict().solverDict
-        (
-            faMat_.psi().name()
-        )
-    );
+    return solve(faMat_.psi().mesh().solverDict(faMat_.psi().name()));
 }
 
 
 template<class Type>
 Foam::SolverPerformance<Type> Foam::faMatrix<Type>::solve()
 {
-    return solve
-    (
-        this->psi().mesh().solutionDict().solverDict
-        (
-            this->psi().name()
-        )
-    );
+    return solve(this->psi().mesh().solverDict(this->psi().name()));
 }
 
 
diff --git a/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C b/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C
index 122d178e8e6796ab3aa4fc2feb8e69c597f6329d..8b30c3a5d29225a4662e335f1066016146615935 100644
--- a/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C
+++ b/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C
@@ -89,6 +89,8 @@ Foam::solverPerformance Foam::faMatrix<Foam::scalar>::solve
 
     psi.correctBoundaryConditions();
 
+    psi.mesh().setSolverPerformance(psi.name(), solverPerf);
+
     return solverPerf;
 }
 
diff --git a/src/finiteArea/faMesh/faMesh.C b/src/finiteArea/faMesh/faMesh.C
index 62a53dabdf49868d12878d3c3506142cf2f2d5bc..9a560d33ff993d9da6c894bc84cf89dbf242df45 100644
--- a/src/finiteArea/faMesh/faMesh.C
+++ b/src/finiteArea/faMesh/faMesh.C
@@ -55,8 +55,7 @@ const int Foam::faMesh::quadricsFit_ = 0;
 
 void Foam::faMesh::setPrimitiveMeshData()
 {
-    DebugInFunction
-        << "Setting primitive data" << endl;
+    DebugInFunction << "Setting primitive data" << endl;
 
     const indirectPrimitivePatch& bp = patch();
 
@@ -121,11 +120,7 @@ void Foam::faMesh::setPrimitiveMeshData()
 
 void Foam::faMesh::clearGeomNotAreas() const
 {
-    if (debug)
-    {
-        Info<< "void faMesh::clearGeomNotAreas() const : "
-            << "Clearing geometry" << endl;
-    }
+    DebugInFunction << "Clearing geometry" << endl;
 
     deleteDemandDrivenData(SPtr_);
     deleteDemandDrivenData(patchPtr_);
@@ -144,11 +139,7 @@ void Foam::faMesh::clearGeomNotAreas() const
 
 void Foam::faMesh::clearGeom() const
 {
-    if (debug)
-    {
-        Info<< "void faMesh::clearGeom() const : "
-            << "Clearing geometry" << endl;
-    }
+    DebugInFunction << "Clearing geometry" << endl;
 
     clearGeomNotAreas();
     deleteDemandDrivenData(S0Ptr_);
@@ -159,11 +150,7 @@ void Foam::faMesh::clearGeom() const
 
 void Foam::faMesh::clearAddressing() const
 {
-    if (debug)
-    {
-        Info<< "void faMesh::clearAddressing() const : "
-            << "Clearing addressing" << endl;
-    }
+    DebugInFunction << "Clearing addressing" << endl;
 
     deleteDemandDrivenData(lduPtr_);
 }
@@ -184,6 +171,9 @@ Foam::faMesh::faMesh(const polyMesh& pMesh)
     GeoMesh<polyMesh>(pMesh),
     MeshObject<polyMesh, Foam::UpdateableMeshObject, faMesh>(pMesh),
     edgeInterpolation(*this),
+    faSchemes(mesh()),
+    faSolution(mesh()),
+    data(mesh()),
     faceLabels_
     (
         IOobject
@@ -229,11 +219,7 @@ Foam::faMesh::faMesh(const polyMesh& pMesh)
     correctPatchPointNormalsPtr_(nullptr),
     globalMeshDataPtr_(nullptr)
 {
-    if (debug)
-    {
-        Info<< "faMesh::faMesh(...) : "
-            << "Creating faMesh from IOobject" << endl;
-    }
+    DebugInFunction << "Creating faMesh from IOobject" << endl;
 
     setPrimitiveMeshData();
 
@@ -277,6 +263,9 @@ Foam::faMesh::faMesh
     GeoMesh<polyMesh>(pMesh),
     MeshObject<polyMesh, Foam::UpdateableMeshObject, faMesh>(pMesh),
     edgeInterpolation(*this),
+    faSchemes(mesh()),
+    faSolution(mesh()),
+    data(mesh()),
     faceLabels_
     (
         IOobject
@@ -324,11 +313,7 @@ Foam::faMesh::faMesh
     correctPatchPointNormalsPtr_(nullptr),
     globalMeshDataPtr_(nullptr)
 {
-    if (debug)
-    {
-        Info<< "faMesh::faMesh(...) : "
-            << "Creating faMesh from components" << endl;
-    }
+    DebugInFunction << "Creating faMesh from components" << endl;
 }
 
 
@@ -341,6 +326,9 @@ Foam::faMesh::faMesh
     GeoMesh<polyMesh>(pMesh),
     MeshObject<polyMesh, Foam::UpdateableMeshObject, faMesh>(pMesh),
     edgeInterpolation(*this),
+    faSchemes(mesh()),
+    faSolution(mesh()),
+    data(mesh()),
     faceLabels_
     (
         IOobject
@@ -388,8 +376,7 @@ Foam::faMesh::faMesh
     correctPatchPointNormalsPtr_(nullptr),
     globalMeshDataPtr_(nullptr)
 {
-    DebugInFunction
-        << "Creating faMesh from definition file" << endl;
+    DebugInFunction << "Creating faMesh from definition file" << endl;
 
     // Reading faMeshDefinition dictionary
     IOdictionary faMeshDefinition
@@ -791,6 +778,9 @@ Foam::faMesh::faMesh
     GeoMesh<polyMesh>(pMesh),
     MeshObject<polyMesh, Foam::UpdateableMeshObject, faMesh>(pMesh),
     edgeInterpolation(*this),
+    faSchemes(mesh()),
+    faSolution(mesh()),
+    data(mesh()),
     faceLabels_
     (
         IOobject
@@ -838,8 +828,7 @@ Foam::faMesh::faMesh
     correctPatchPointNormalsPtr_(nullptr),
     globalMeshDataPtr_(nullptr)
 {
-    DebugInFunction
-        << "Creating faMesh from polyPatch" << endl;
+    DebugInFunction << "Creating faMesh from polyPatch" << endl;
 
     const polyBoundaryMesh& pbm = pMesh.boundaryMesh();
 
@@ -977,8 +966,7 @@ const Foam::faceList& Foam::faMesh::faces() const
 
 void Foam::faMesh::addFaPatches(const List<faPatch*>& p)
 {
-    DebugInFunction
-        << "Adding patches to faMesh" << endl;
+    DebugInFunction << "Adding patches to faMesh" << endl;
 
     if (boundary().size() > 0)
     {
@@ -1304,7 +1292,7 @@ Foam::boolList& Foam::faMesh::correctPatchPointNormals() const
 }
 
 
-bool Foam::faMesh::write() const
+bool Foam::faMesh::write(const bool valid) const
 {
     faceLabels_.write();
     boundary_.write();
diff --git a/src/finiteArea/faMesh/faMesh.H b/src/finiteArea/faMesh/faMesh.H
index 14440b5e68c848282ae6d55c680c9349285284e3..ec2d3f0b23ef1c7a8de1aef4c94ad4ab25a5e68e 100644
--- a/src/finiteArea/faMesh/faMesh.H
+++ b/src/finiteArea/faMesh/faMesh.H
@@ -58,6 +58,9 @@ Author
 #include "labelIOList.H"
 #include "FieldFields.H"
 #include "faGlobalMeshData.H"
+#include "faSchemes.H"
+#include "faSolution.H"
+#include "data.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -77,7 +80,10 @@ class faMesh
     public GeoMesh<polyMesh>,
     public MeshObject<polyMesh, Foam::UpdateableMeshObject, faMesh>,
     public lduMesh,
-    public edgeInterpolation
+    public edgeInterpolation,
+    public faSchemes,
+    public faSolution,
+    public data
 {
     // Private data
 
@@ -402,6 +408,13 @@ public:
             //- Return reference to the mesh database
             virtual const objectRegistry& thisDb() const;
 
+            //- Name function is needed to disambiguate those inherited
+            //  from base classes
+            const word& name() const
+            {
+                return thisDb().name();
+            }
+
             //- Return constant reference to boundary mesh
             const faBoundaryMesh& boundary() const;
 
@@ -531,7 +544,7 @@ public:
             boolList& correctPatchPointNormals() const;
 
         //- Write mesh
-        virtual bool write() const;
+        virtual bool write(const bool valid = true) const;
 
 
     // Member Operators
diff --git a/src/finiteArea/finiteArea/fac/facDdt.C b/src/finiteArea/finiteArea/fac/facDdt.C
index fb5ea4cfb768c5a760e71f780c748307f46495be..3e90bb939c86c227f28ac7b7cb9511686019679a 100644
--- a/src/finiteArea/finiteArea/fac/facDdt.C
+++ b/src/finiteArea/finiteArea/fac/facDdt.C
@@ -52,7 +52,7 @@ ddt
     return fa::faDdtScheme<Type>::New
     (
         mesh,
-        mesh.schemesDict().ddtScheme("ddt(" + dt.name() + ')')
+        mesh.ddtScheme("ddt(" + dt.name() + ')')
     ).ref().facDdt(dt);
 }
 
@@ -67,7 +67,7 @@ ddt
     return fa::faDdtScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().ddtScheme("ddt(" + vf.name() + ')')
+        vf.mesh().ddtScheme("ddt(" + vf.name() + ')')
     ).ref().facDdt(vf);
 }
 
@@ -83,7 +83,7 @@ ddt
     return fa::faDdtScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().ddtScheme
+        vf.mesh().ddtScheme
         (
             "ddt(" + rho.name() + ',' + vf.name() + ')'
         )
@@ -102,7 +102,7 @@ ddt
     return fa::faDdtScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().ddtScheme
+        vf.mesh().ddtScheme
         (
             "ddt(" + rho.name() + ',' + vf.name() + ')'
         )
diff --git a/src/finiteArea/finiteArea/fac/facDiv.C b/src/finiteArea/finiteArea/fac/facDiv.C
index 6d3a2530c8a2685503ca87d01cbf02eb0c5746c9..a0fb7122c8122bada67b419710632f62d8497bc1 100644
--- a/src/finiteArea/finiteArea/fac/facDiv.C
+++ b/src/finiteArea/finiteArea/fac/facDiv.C
@@ -107,7 +107,7 @@ div
     (
         fa::divScheme<Type>::New
         (
-            vf.mesh(), vf.mesh().schemesDict().divScheme(name)
+            vf.mesh(), vf.mesh().divScheme(name)
         ).ref().facDiv(vf)
     );
     GeometricField
@@ -207,7 +207,7 @@ div
         (
             vf.mesh(),
             flux,
-            vf.mesh().schemesDict().divScheme(name)
+            vf.mesh().divScheme(name)
         ).ref().facDiv(flux, vf)
     );
     GeometricField<Type, faPatchField, areaMesh>& Div = tDiv.ref();
diff --git a/src/finiteArea/finiteArea/fac/facGrad.C b/src/finiteArea/finiteArea/fac/facGrad.C
index 46133df0a83214d73bf5c3b48e31ecdf96dd0bbb..d120c782c434cdbafb95432a746d7253032a3027 100644
--- a/src/finiteArea/finiteArea/fac/facGrad.C
+++ b/src/finiteArea/finiteArea/fac/facGrad.C
@@ -115,7 +115,7 @@ grad
         fa::gradScheme<Type>::New
         (
             vf.mesh(),
-            vf.mesh().schemesDict().gradScheme(name)
+            vf.mesh().gradScheme(name)
         ).ref().grad(vf);
 
     GeometricField<GradType, faPatchField, areaMesh>& gGrad = tgGrad.ref();
diff --git a/src/finiteArea/finiteArea/fac/facLaplacian.C b/src/finiteArea/finiteArea/fac/facLaplacian.C
index 1fbb7dcc13de48a88e1915862955eba4398385f5..c3cd71a53d7239a76af68f8c1cdde1834eff95b8 100644
--- a/src/finiteArea/finiteArea/fac/facLaplacian.C
+++ b/src/finiteArea/finiteArea/fac/facLaplacian.C
@@ -52,7 +52,7 @@ laplacian
     return fa::laplacianScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().laplacianScheme(name)
+        vf.mesh().laplacianScheme(name)
     ).ref().facLaplacian(vf);
 }
 
@@ -172,7 +172,7 @@ laplacian
     return fa::laplacianScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().laplacianScheme(name)
+        vf.mesh().laplacianScheme(name)
     ).ref().facLaplacian(gamma, vf);
 }
 
@@ -306,7 +306,7 @@ laplacian
     return fa::laplacianScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().laplacianScheme(name)
+        vf.mesh().laplacianScheme(name)
     ).ref().facLaplacian(gamma, vf);
 }
 
diff --git a/src/finiteArea/finiteArea/fac/facLnGrad.C b/src/finiteArea/finiteArea/fac/facLnGrad.C
index 857c82e41d967cfd8eebe94d4d31962cdb0ff5a7..866a5eb846a7b0b024400baaa36bdd661b0b3f3e 100644
--- a/src/finiteArea/finiteArea/fac/facLnGrad.C
+++ b/src/finiteArea/finiteArea/fac/facLnGrad.C
@@ -52,7 +52,7 @@ lnGrad
     return fa::lnGradScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().lnGradScheme(name)
+        vf.mesh().lnGradScheme(name)
     ).ref().lnGrad(vf);
 }
 
diff --git a/src/finiteArea/finiteArea/fac/facNDiv.C b/src/finiteArea/finiteArea/fac/facNDiv.C
index b1861fe125cf25b2e3fa2d14b2fe59bed38f167d..e1975c886bc83e995699a1d50326ee127b77f2ba 100644
--- a/src/finiteArea/finiteArea/fac/facNDiv.C
+++ b/src/finiteArea/finiteArea/fac/facNDiv.C
@@ -98,7 +98,7 @@ ndiv
     (
         fa::divScheme<Type>::New
             (
-                vf.mesh(), vf.mesh().schemesDict().divScheme(name)
+                vf.mesh(), vf.mesh().divScheme(name)
             ).ref().facDiv(vf)
     );
     GeometricField<Type, faPatchField, areaMesh>& Div = tDiv.ref();
@@ -192,7 +192,7 @@ ndiv
         (
             vf.mesh(),
             flux,
-            vf.mesh().schemesDict().divScheme(name)
+            vf.mesh().divScheme(name)
         ).ref().facDiv(flux, vf)
     );
 
diff --git a/src/finiteArea/finiteArea/fac/facNGrad.C b/src/finiteArea/finiteArea/fac/facNGrad.C
index 17a5f9f9cb29f91d5342faf45ff7155efb959594..995f5d2cea97379730340c1da2b2e05d0fcf0f18 100644
--- a/src/finiteArea/finiteArea/fac/facNGrad.C
+++ b/src/finiteArea/finiteArea/fac/facNGrad.C
@@ -118,7 +118,7 @@ ngrad
         fa::gradScheme<Type>::New
         (
             vf.mesh(),
-            vf.mesh().schemesDict().gradScheme(name)
+            vf.mesh().gradScheme(name)
         ).ref().grad(vf);
 
     GeometricField<GradType, faPatchField, areaMesh>& gGrad = tgGrad.ref();
diff --git a/src/finiteArea/finiteArea/fam/famDdt.C b/src/finiteArea/finiteArea/fam/famDdt.C
index 0f996d02585445bd451fabe54cd5b46c4f046e69..d7a5f80b8ff692cf09f065bc64f5c8fd96410524 100644
--- a/src/finiteArea/finiteArea/fam/famDdt.C
+++ b/src/finiteArea/finiteArea/fam/famDdt.C
@@ -52,7 +52,7 @@ ddt
     return fa::faDdtScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().ddtScheme("ddt(" + vf.name() + ')')
+        vf.mesh().ddtScheme("ddt(" + vf.name() + ')')
     ).ref().famDdt(vf);
 }
 
@@ -68,7 +68,7 @@ ddt
     return fa::faDdtScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().ddtScheme
+        vf.mesh().ddtScheme
         (
             "ddt(" + rho.name() + ',' + vf.name() + ')'
         )
@@ -87,7 +87,7 @@ ddt
     return fa::faDdtScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().ddtScheme
+        vf.mesh().ddtScheme
         (
             "ddt(" + rho.name() + ',' + vf.name() + ')'
         )
diff --git a/src/finiteArea/finiteArea/fam/famDiv.C b/src/finiteArea/finiteArea/fam/famDiv.C
index 9141c364e8c302327728b5cb6f360216cae1f3ab..c1c13d8b22f3f5598d78d3d2f3c3a1d55aa74a95 100644
--- a/src/finiteArea/finiteArea/fam/famDiv.C
+++ b/src/finiteArea/finiteArea/fam/famDiv.C
@@ -59,7 +59,7 @@ div
         (
             vf.mesh(),
             flux,
-            vf.mesh().schemesDict().divScheme(name)
+            vf.mesh().divScheme(name)
         ).ref().famDiv(flux, vf)
     );
     faMatrix<Type>& M = tM.ref();
@@ -70,7 +70,7 @@ div
         (
             vf.mesh(),
             flux,
-            vf.mesh().schemesDict().divScheme(name)
+            vf.mesh().divScheme(name)
         ).ref().facDiv(flux, vf)
     );
 
diff --git a/src/finiteArea/finiteArea/fam/famLaplacian.C b/src/finiteArea/finiteArea/fam/famLaplacian.C
index 952aa5be076a6b9bb3b204268c43ce0c83d0bcfe..7e82b80e72b07997270ef4e76f497532a1199b25 100644
--- a/src/finiteArea/finiteArea/fam/famLaplacian.C
+++ b/src/finiteArea/finiteArea/fam/famLaplacian.C
@@ -172,7 +172,7 @@ laplacian
     return fa::laplacianScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().laplacianScheme(name)
+        vf.mesh().laplacianScheme(name)
     ).ref().famLaplacian(gamma, vf);
 }
 
@@ -218,7 +218,7 @@ laplacian
     return fa::laplacianScheme<Type>::New
     (
         vf.mesh(),
-        vf.mesh().schemesDict().laplacianScheme(name)
+        vf.mesh().laplacianScheme(name)
     ).ref().famLaplacian(gamma, vf);
 }
 
diff --git a/src/finiteArea/finiteArea/fam/famNDiv.C b/src/finiteArea/finiteArea/fam/famNDiv.C
index 4665df8d9ddccc2d8c5834f819d5a86ab2297762..82f5cad08cb9be39e061f0e579972fa44e0fcd9d 100644
--- a/src/finiteArea/finiteArea/fam/famNDiv.C
+++ b/src/finiteArea/finiteArea/fam/famNDiv.C
@@ -55,7 +55,7 @@ ndiv
     (
         vf.mesh(),
         flux,
-        vf.mesh().schemesDict().divScheme(name)
+        vf.mesh().divScheme(name)
     ).ref().famDiv(flux, vf);//TODO calculate normal
 }
 
diff --git a/src/finiteArea/finiteArea/fam/vectorFamDiv.C b/src/finiteArea/finiteArea/fam/vectorFamDiv.C
index 601af28f6063cd3f873e76831870c87e97666e51..017d349e6f65e15784632f425c54edd5ae082428 100644
--- a/src/finiteArea/finiteArea/fam/vectorFamDiv.C
+++ b/src/finiteArea/finiteArea/fam/vectorFamDiv.C
@@ -55,7 +55,7 @@ div
     (
         vf.mesh(),
         flux,
-        vf.mesh().schemesDict().divScheme(name)
+        vf.mesh().divScheme(name)
     ).ref().famDiv(flux, vf);
 }
 
diff --git a/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaVectors.H b/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaVectors.H
index fdbd8f576089997dee3d4d757cf395be77662f5e..f93ecdd8a31cc3c23eae0f9ad3033bccafd4009b 100644
--- a/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaVectors.H
+++ b/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaVectors.H
@@ -50,8 +50,6 @@ SourceFiles
 namespace Foam
 {
 
-class mapPolyMesh;
-
 /*---------------------------------------------------------------------------*\
                      Class leastSquaresFaVectors Declaration
 \*---------------------------------------------------------------------------*/
diff --git a/src/finiteArea/finiteArea/laplacianSchemes/gaussFaLaplacianScheme/gaussFaLaplacianScheme.C b/src/finiteArea/finiteArea/laplacianSchemes/gaussFaLaplacianScheme/gaussFaLaplacianScheme.C
index 8726471c89d21999cc716a01f5f8add4d5830a1e..af11dcb2fda7594e74767f0089ed5f4ca5476afe 100644
--- a/src/finiteArea/finiteArea/laplacianSchemes/gaussFaLaplacianScheme/gaussFaLaplacianScheme.C
+++ b/src/finiteArea/finiteArea/laplacianSchemes/gaussFaLaplacianScheme/gaussFaLaplacianScheme.C
@@ -80,7 +80,7 @@ gaussLaplacianScheme<Type>::famLaplacian
 
     if (this->tlnGradScheme_().corrected())
     {
-        if (this->mesh().schemesDict().fluxRequired(vf.name()))
+        if (this->mesh().fluxRequired(vf.name()))
         {
             fam.faceFluxCorrectionPtr() = new
             GeometricField<Type, faePatchField, edgeMesh>
@@ -89,8 +89,8 @@ gaussLaplacianScheme<Type>::famLaplacian
             );
 
             fam.source() -=
-                this->mesh().S()*
-                fac::div
+                this->mesh().S()
+               *fac::div
                 (
                     *fam.faceFluxCorrectionPtr()
                 )().internalField();
@@ -98,8 +98,8 @@ gaussLaplacianScheme<Type>::famLaplacian
         else
         {
             fam.source() -=
-                this->mesh().S()*
-                fac::div
+                this->mesh().S()
+               *fac::div
                 (
                     gammaMagSf*this->tlnGradScheme_().correction(vf)
                 )().internalField();
diff --git a/src/finiteArea/finiteArea/lnGradSchemes/correctedLnGrad/correctedLnGrad.C b/src/finiteArea/finiteArea/lnGradSchemes/correctedLnGrad/correctedLnGrad.C
index 0e5af9427f6748d9870f4cc3c0cb2d94bbfd4435..e33d4a914ed1e8bf4bd9e669db8a73f2aa2c48ce 100644
--- a/src/finiteArea/finiteArea/lnGradSchemes/correctedLnGrad/correctedLnGrad.C
+++ b/src/finiteArea/finiteArea/lnGradSchemes/correctedLnGrad/correctedLnGrad.C
@@ -90,7 +90,7 @@ correctedLnGrad<Type>::correction
                 gradScheme<typename pTraits<Type>::cmptType>::New
                 (
                     mesh,
-                    mesh.schemesDict().gradScheme(ssf.name())
+                    mesh.gradScheme(ssf.name())
                 )()
                .grad(vf.component(cmpt))
             )
diff --git a/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolate.C b/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolate.C
index 93c09d8b44e05a9c14fadc406d7092c99b7b001a..eff3fea041e0c117b2a7e64923694ecee4c816d9 100644
--- a/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolate.C
+++ b/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolate.C
@@ -56,7 +56,7 @@ Foam::tmp<Foam::edgeInterpolationScheme<Type>> Foam::fac::scheme
     (
         faceFlux.mesh(),
         faceFlux,
-        faceFlux.mesh().schemesDict().interpolationScheme(name)
+        faceFlux.mesh().interpolationScheme(name)
     );
 }
 
@@ -86,7 +86,7 @@ Foam::tmp<Foam::edgeInterpolationScheme<Type>> Foam::fac::scheme
     return edgeInterpolationScheme<Type>::New
     (
         mesh,
-        mesh.schemesDict().interpolationScheme(name)
+        mesh.interpolationScheme(name)
     );
 }
 
diff --git a/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.C b/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.C
index 6d08ba24b28ed6aee2fd69c90c06a5a288e97b89..47292d13774b45940b0c35ff1469493e451ae185 100644
--- a/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.C
+++ b/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.C
@@ -57,8 +57,6 @@ void Foam::edgeInterpolation::clearOut()
 Foam::edgeInterpolation::edgeInterpolation(const faMesh& fam)
 :
     faMesh_(fam),
-    schemesDict_(fam()),
-    solutionDict_(fam()),
     lPN_(nullptr),
     weightingFactors_(nullptr),
     differenceFactors_(nullptr),
@@ -219,7 +217,7 @@ void Foam::edgeInterpolation::makeLPN() const
         (
             "lPN",
             faMesh_.time().constant(),
-            faMesh_.db(),
+            faMesh_(),
             IOobject::NO_READ,
             IOobject::NO_WRITE,
             false
diff --git a/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.H b/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.H
index 9d51e40fdda902f76f1dad3b4da8f2e4362bd256..408cfbd7078d9fc1c62af11c75b48f9d46638ac0 100644
--- a/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.H
+++ b/src/finiteArea/interpolation/edgeInterpolation/edgeInterpolation.H
@@ -43,8 +43,6 @@ SourceFiles
 
 #include "tmp.H"
 #include "scalar.H"
-#include "faSchemes.H"
-#include "faSolution.H"
 #include "areaFieldsFwd.H"
 #include "edgeFieldsFwd.H"
 #include "className.H"
@@ -67,12 +65,6 @@ class edgeInterpolation
         // Reference to faMesh
         const faMesh& faMesh_;
 
-        //- Discretisation schemes
-        faSchemes schemesDict_;
-
-        //- Solver settings
-        faSolution solutionDict_;
-
 
         // Demand-driven data
 
@@ -153,30 +145,6 @@ public:
             return faMesh_;
         }
 
-        //- Return schemes
-        const faSchemes& schemesDict() const
-        {
-            return schemesDict_;
-        }
-
-        //- Return access to schemes
-        faSchemes& schemesDict()
-        {
-            return schemesDict_;
-        }
-
-        //- Return solver settings
-        const faSolution& solutionDict() const
-        {
-            return solutionDict_;
-        }
-
-        //- Return access to solver settings
-        faSolution& solutionDict()
-        {
-            return solutionDict_;
-        }
-
         //- Return reference to PN geodesic distance
         const edgeScalarField& lPN() const;