diff --git a/src/functionObjects/field/CourantNo/CourantNo.C b/src/functionObjects/field/CourantNo/CourantNo.C
index 472f6ff26cce002893d7c06fad72e2f7c515b083..b74fb8b6dddc58f4494adb013149a23ead356600 100644
--- a/src/functionObjects/field/CourantNo/CourantNo.C
+++ b/src/functionObjects/field/CourantNo/CourantNo.C
@@ -59,10 +59,8 @@ Foam::functionObjects::CourantNo::byRho
     {
         return Co/obr_.lookupObject<volScalarField>(rhoName_);
     }
-    else
-    {
-        return Co;
-    }
+
+    return Co;
 }
 
 
@@ -85,35 +83,27 @@ bool Foam::functionObjects::CourantNo::calc()
 
         if (foundObject<volScalarField>(resultName_, false))
         {
-            volScalarField& Co
-            (
-                const_cast<volScalarField&>
-                (
-                    lookupObject<volScalarField>(resultName_)
-                )
-            );
+            volScalarField& Co =
+                lookupObjectRef<volScalarField>(resultName_);
 
             Co.ref() = Coi();
             Co.correctBoundaryConditions();
         }
         else
         {
-            tmp<volScalarField> tCo
+            auto tCo = tmp<volScalarField>::New
             (
-                new volScalarField
+                IOobject
                 (
-                    IOobject
-                    (
-                        resultName_,
-                        mesh_.time().timeName(),
-                        mesh_,
-                        IOobject::NO_READ,
-                        IOobject::NO_WRITE
-                    ),
+                    resultName_,
+                    mesh_.time().timeName(),
                     mesh_,
-                    dimensionedScalar(dimless, Zero),
-                    zeroGradientFvPatchScalarField::typeName
-                )
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE
+                ),
+                mesh_,
+                dimensionedScalar(dimless, Zero),
+                zeroGradientFvPatchScalarField::typeName
             );
             tCo.ref().ref() = Coi();
             tCo.ref().correctBoundaryConditions();
@@ -122,10 +112,8 @@ bool Foam::functionObjects::CourantNo::calc()
 
         return true;
     }
-    else
-    {
-        return false;
-    }
+
+    return false;
 }
 
 
diff --git a/src/functionObjects/field/Curle/Curle.C b/src/functionObjects/field/Curle/Curle.C
index 67d6675093eb615af6df2d6661202757f564de25..b315ebbe8bb6dbd4771c3e840e2e503eb9062763 100644
--- a/src/functionObjects/field/Curle/Curle.C
+++ b/src/functionObjects/field/Curle/Curle.C
@@ -75,33 +75,28 @@ bool Foam::functionObjects::Curle::calc()
 
         const volVectorField& C = mesh_.C();
 
-        tmp<volScalarField> tpDash
+        auto tpDash = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    resultName_,
-                    mesh_.time().timeName(),
-                    mesh_,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                resultName_,
+                mesh_.time().timeName(),
                 mesh_,
-                dimensionedScalar(p.dimensions(), Zero)
-            )
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensionedScalar(p.dimensions(), Zero)
         );
+        auto& pDash = tpDash.ref();
 
-        volScalarField& pDash = tpDash.ref();
         const volVectorField d(scopedName("d"), C - x0_);
         pDash = (d/magSqr(d) & dfdt)/(4.0*mathematical::pi*c0_);
 
         return store(resultName_, tpDash);
     }
-    else
-    {
-        return false;
-    }
+
+    return false;
 }
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -136,8 +131,7 @@ bool Foam::functionObjects::Curle::read(const dictionary& dict)
 {
     if (fieldExpression::read(dict))
     {
-        patchSet_ =
-            mesh_.boundaryMesh().patchSet(wordReList(dict.lookup("patches")));
+        patchSet_ = mesh_.boundaryMesh().patchSet(dict.get<wordRes>("patches"));
 
         if (patchSet_.empty())
         {
@@ -149,7 +143,7 @@ bool Foam::functionObjects::Curle::read(const dictionary& dict)
         }
 
         // Read the reference speed of sound
-        dict.lookup("c0") >> c0_;
+        dict.readEntry("c0", c0_);
 
 
         // Set the location of the effective point source to the area-average
diff --git a/src/functionObjects/field/DESModelRegions/DESModelRegions.C b/src/functionObjects/field/DESModelRegions/DESModelRegions.C
index 3a8e46251025b2b757dc181e4a67be9e221ebca5..08dd3812317b4cf5f7cb483c30778ce0e470e20a 100644
--- a/src/functionObjects/field/DESModelRegions/DESModelRegions.C
+++ b/src/functionObjects/field/DESModelRegions/DESModelRegions.C
@@ -75,26 +75,21 @@ Foam::functionObjects::DESModelRegions::DESModelRegions
 {
     read(dict);
 
-    tmp<volScalarField> tDESModelRegions
+    auto tmodelRegions = tmp<volScalarField>::New
     (
+        IOobject
         (
-            new volScalarField
-            (
-                IOobject
-                (
-                    resultName_,
-                    time_.timeName(),
-                    mesh_,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
-                mesh_,
-                dimensionedScalar(dimless, Zero)
-            )
-        )
+            resultName_,
+            time_.timeName(),
+            mesh_,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh_,
+        dimensionedScalar(dimless, Zero)
     );
 
-    store(resultName_, tDESModelRegions);
+    store(resultName_, tmodelRegions);
 
     writeFileHeader(file());
 }
@@ -124,10 +119,7 @@ bool Foam::functionObjects::DESModelRegions::execute()
     Log << type() << " " << name() <<  " execute:" << nl;
 
     volScalarField& DESModelRegions =
-        const_cast<volScalarField&>
-        (
-            lookupObject<volScalarField>(resultName_)
-        );
+        lookupObjectRef<volScalarField>(resultName_);
 
 
     if (foundObject<DESModelBase>(turbulenceModel::propertiesName))
diff --git a/src/functionObjects/field/PecletNo/PecletNo.C b/src/functionObjects/field/PecletNo/PecletNo.C
index c8eb2e8f67a66683e14c72d7f0f214f5f58f8f97..c63524651c00a7bdd441eb3378118af1a1eecf05 100644
--- a/src/functionObjects/field/PecletNo/PecletNo.C
+++ b/src/functionObjects/field/PecletNo/PecletNo.C
@@ -57,10 +57,8 @@ Foam::tmp<Foam::surfaceScalarField> Foam::functionObjects::PecletNo::rhoScale
     {
         return phi/fvc::interpolate(lookupObject<volScalarField>(rhoName_));
     }
-    else
-    {
-        return phi;
-    }
+
+    return phi;
 }
 
 
@@ -84,23 +82,19 @@ bool Foam::functionObjects::PecletNo::calc()
             const dictionary& model =
                 mesh_.lookupObject<dictionary>("transportProperties");
 
-            nuEff =
-                tmp<volScalarField>
+            nuEff = tmp<volScalarField>::New
+            (
+                IOobject
                 (
-                    new volScalarField
-                    (
-                        IOobject
-                        (
-                            "nuEff",
-                            mesh_.time().timeName(),
-                            mesh_,
-                            IOobject::NO_READ,
-                            IOobject::NO_WRITE
-                        ),
-                        mesh_,
-                        dimensionedScalar(model.lookup("nu"))
-                    )
-                );
+                    "nuEff",
+                    mesh_.time().timeName(),
+                    mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE
+                ),
+                mesh_,
+                dimensionedScalar(model.lookup("nu"))
+            );
         }
         else
         {
diff --git a/src/functionObjects/field/blendingFactor/blendingFactor.C b/src/functionObjects/field/blendingFactor/blendingFactor.C
index d46014e967a451b6e4bd0b227a4fd295e99ee232..e213f234283410e9038dbe300def08e16bd7eb2e 100644
--- a/src/functionObjects/field/blendingFactor/blendingFactor.C
+++ b/src/functionObjects/field/blendingFactor/blendingFactor.C
@@ -81,22 +81,19 @@ Foam::functionObjects::blendingFactor::blendingFactor
     writeFileHeader(file());
     setResultName(typeName, "");
 
-    tmp<volScalarField> indicatorPtr
+    auto indicatorPtr = tmp<volScalarField>::New
     (
-        new volScalarField
+        IOobject
         (
-            IOobject
-            (
-                resultName_,
-                time_.timeName(),
-                mesh_,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
+            resultName_,
+            time_.timeName(),
             mesh_,
-            dimensionedScalar(dimless, Zero),
-            zeroGradientFvPatchScalarField::typeName
-        )
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh_,
+        dimensionedScalar(dimless, Zero),
+        zeroGradientFvPatchScalarField::typeName
     );
 
     store(resultName_, indicatorPtr);
diff --git a/src/functionObjects/field/blendingFactor/blendingFactorTemplates.C b/src/functionObjects/field/blendingFactor/blendingFactorTemplates.C
index 923f6a9e89eb32567e43387fbcc8dbd384bbdda4..062136ff3db7ae4ad28b891aa504954558bd4a0a 100644
--- a/src/functionObjects/field/blendingFactor/blendingFactorTemplates.C
+++ b/src/functionObjects/field/blendingFactor/blendingFactorTemplates.C
@@ -72,10 +72,8 @@ void Foam::functionObjects::blendingFactor::calcBlendingFactor
     // - factor applied to 1st scheme, and (1-factor) to 2nd scheme
     // - not using the store(...) mechanism due to need to correct BCs
     volScalarField& indicator =
-        const_cast<volScalarField&>
-        (
-            lookupObject<volScalarField>(resultName_)
-        );
+        lookupObjectRef<volScalarField>(resultName_);
+
     indicator = 1 - fvc::cellReduce(factorf, minEqOp<scalar>(), GREAT);
     indicator.correctBoundaryConditions();
 }
diff --git a/src/functionObjects/field/ddt2/ddt2.C b/src/functionObjects/field/ddt2/ddt2.C
index 5ef7b9fcc7ad6ed578462ecce33bf253e93f1e10..d00fb6d0c6f07e314c5bd2e8fdad6ecee6a7ee5d 100644
--- a/src/functionObjects/field/ddt2/ddt2.C
+++ b/src/functionObjects/field/ddt2/ddt2.C
@@ -134,7 +134,7 @@ bool Foam::functionObjects::ddt2::read(const dictionary& dict)
         return false;
     }
 
-    dict.lookup("fields") >> selectFields_;
+    dict.readEntry("fields", selectFields_);
     selectFields_.uniq();
 
     Info<< type() << " fields: " << selectFields_ << nl;
diff --git a/src/functionObjects/field/ddt2/ddt2Templates.C b/src/functionObjects/field/ddt2/ddt2Templates.C
index dc8cab344d830274e05fdf5ce16972754216bcdb..a58d7b0c0e18eef4ff3eed882e9e82b54a286812 100644
--- a/src/functionObjects/field/ddt2/ddt2Templates.C
+++ b/src/functionObjects/field/ddt2/ddt2Templates.C
@@ -56,28 +56,24 @@ int Foam::functionObjects::ddt2::apply(const word& inputName, int& state)
           : magSqr(input.dimensions()/dimTime)
         );
 
-        tmp<volScalarField> tddt2
+        auto tddt2 = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    outputName,
-                    time_.timeName(),
-                    mesh_,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                outputName,
+                time_.timeName(),
                 mesh_,
-                dimensionedScalar(dims, Zero)
-            )
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensionedScalar(dims, Zero)
         );
 
         store(outputName, tddt2);
     }
 
-    volScalarField& output =
-        const_cast<volScalarField&>(lookupObject<volScalarField>(outputName));
+    volScalarField& output = lookupObjectRef<volScalarField>(outputName);
 
     if (mag_)
     {
diff --git a/src/functionObjects/field/externalCoupled/externalCoupled.C b/src/functionObjects/field/externalCoupled/externalCoupled.C
index 9aa3e0b972a700b5abe7db246418aa232e4578d6..91450209a95208d7a09d5714c7aa6ab2fffa75e4 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupled.C
+++ b/src/functionObjects/field/externalCoupled/externalCoupled.C
@@ -606,8 +606,8 @@ bool Foam::functionObjects::externalCoupled::read(const dictionary& dict)
             const dictionary& groupDict = regionIter().dict();
 
             const label nGroups = groupNames_.size();
-            const wordList readFields(groupDict.lookup("readFields"));
-            const wordList writeFields(groupDict.lookup("writeFields"));
+            const wordList readFields(groupDict.get<wordList>("readFields"));
+            const wordList writeFields(groupDict.get<wordList>("writeFields"));
 
             auto fnd = regionToGroups_.find(regionGroupNames_.last());
             if (fnd.found())
diff --git a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
index 2b93676a41ca11fea8e5a70a0a3f80fb1f926e78..cd78f475f9f1331ccd6ff3f1c9e957657f3ee31b 100644
--- a/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
+++ b/src/functionObjects/field/externalCoupled/externalCoupledTemplates.C
@@ -278,8 +278,8 @@ Foam::functionObjects::externalCoupled::gatherAndCombine
     Pstream::gatherList(gatheredValues);
 
 
-    tmp<Field<Type>> tresult(new Field<Type>(0));
-    Field<Type>& result = tresult.ref();
+    auto tresult = tmp<Field<Type>>::New();
+    auto& result = tresult.ref();
 
     if (Pstream::master())
     {
diff --git a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C
index 3614fb336af6d4d1de8303d6c58dc75d06716e2d..12c3495ef08db5e47b3d4bb0861ce6eee3094784 100644
--- a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C
+++ b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C
@@ -584,8 +584,8 @@ bool Foam::functionObjects::extractEulerianParticles::read
 
     if (fvMeshFunctionObject::read(dict) && writeFile::read(dict))
     {
-        dict.lookup("faceZone") >> faceZoneName_;
-        dict.lookup("alpha") >> alphaName_;
+        dict.readEntry("faceZone", faceZoneName_);
+        dict.readEntry("alpha", alphaName_);
 
         dict.readIfPresent("alphaThreshold", alphaThreshold_);
         dict.readIfPresent("U", UName_);
diff --git a/src/functionObjects/field/fieldAverage/fieldAverage.C b/src/functionObjects/field/fieldAverage/fieldAverage.C
index 7c8aa89d080081fb1cf54d2f0ed207e30051ede3..ead231abf002f31061ae922b29bda6871769759e 100644
--- a/src/functionObjects/field/fieldAverage/fieldAverage.C
+++ b/src/functionObjects/field/fieldAverage/fieldAverage.C
@@ -305,13 +305,13 @@ bool Foam::functionObjects::fieldAverage::read(const dictionary& dict)
     dict.readIfPresent("restartOnRestart", restartOnRestart_);
     dict.readIfPresent("restartOnOutput",  restartOnOutput_);
     dict.readIfPresent("periodicRestart",  periodicRestart_);
-    dict.lookup("fields") >> faItems_;
+    dict.readEntry("fields", faItems_);
 
     const scalar currentTime = obr().time().value();
 
     if (periodicRestart_)
     {
-        scalar userRestartPeriod = readScalar(dict.lookup("restartPeriod"));
+        scalar userRestartPeriod = dict.get<scalar>("restartPeriod");
         restartPeriod_ = obr().time().userTimeToTime(userRestartPeriod);
 
         if (restartPeriod_ > 0)
diff --git a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C
index 74927ea91f8a2e0c143cf3f21edc4512224fad46..134a49ef364eae9a2c80da6d604e582f221d6913 100644
--- a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C
+++ b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C
@@ -192,13 +192,13 @@ void Foam::functionObjects::fieldAverageItem::clear
 
 bool Foam::functionObjects::fieldAverageItem::readState(const dictionary& dict)
 {
-    dict.lookup("totalIter") >> totalIter_;
-    dict.lookup("totalTime") >> totalTime_;
+    dict.readEntry("totalIter", totalIter_);
+    dict.readEntry("totalTime", totalTime_);
 
     if (window_ > 0)
     {
-        dict.lookup("windowTimes") >> windowTimes_;
-        dict.lookup("windowFieldNames") >> windowFieldNames_;
+        dict.readEntry("windowTimes", windowTimes_);
+        dict.readEntry("windowFieldNames", windowFieldNames_);
     }
 
     return true;
diff --git a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
index c1c3e1d19a4d6a5f4e5012333962b0b632ee5be0..f7c050a16494831780fa394327fbe58161566eea 100644
--- a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
+++ b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
@@ -66,8 +66,8 @@ Foam::Istream& Foam::functionObjects::operator>>
 
     faItem.active_ = false;
     faItem.fieldName_ = entry.keyword();
-    faItem.mean_ = readBool(entry.lookup("mean"));
-    faItem.prime2Mean_ = readBool(entry.lookup("prime2Mean"));
+    faItem.mean_ = entry.get<bool>("mean");
+    faItem.prime2Mean_ = entry.get<bool>("prime2Mean");
     faItem.base_ = faItem.baseTypeNames_.lookup("base", entry);
     faItem.window_ = entry.lookupOrDefault<scalar>("window", -1.0);
 
@@ -94,7 +94,7 @@ Foam::Istream& Foam::functionObjects::operator>>
 
             if (faItem.windowType_ == fieldAverageItem::windowType::EXACT)
             {
-                faItem.allowRestart_ = readBool(entry.lookup("allowRestart"));
+                faItem.allowRestart_ = entry.get<bool>("allowRestart");
 
                 if (!faItem.allowRestart_)
                 {
diff --git a/src/functionObjects/field/fieldExpression/fieldExpression.C b/src/functionObjects/field/fieldExpression/fieldExpression.C
index 6bb432ca3d910e4c3ab40981b34ee0c3572d5450..1ff9edbe8bfb4f34668b1073e6c974752faa99a8 100644
--- a/src/functionObjects/field/fieldExpression/fieldExpression.C
+++ b/src/functionObjects/field/fieldExpression/fieldExpression.C
@@ -97,12 +97,12 @@ bool Foam::functionObjects::fieldExpression::read(const dictionary& dict)
 
     if (fieldName_.empty() || dict.found("field"))
     {
-        dict.lookup("field") >> fieldName_;
+        dict.readEntry("field", fieldName_);
     }
 
     if (dict.found("result"))
     {
-        dict.lookup("result") >> resultName_;
+        dict.readEntry("result", resultName_);
     }
 
     return true;
diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C
index 4ebe86bb24b422affbeb238acceb6624e0e013f1..56e792839be022bfe71e05c8b50a8713ee25fd42 100644
--- a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C
+++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C
@@ -95,8 +95,8 @@ bool Foam::functionObjects::fieldValue::read(const dictionary& dict)
     fvMeshFunctionObject::read(dict);
     writeFile::read(dict);
 
-    dict.lookup("fields") >> fields_;
-    dict.lookup("writeFields") >> writeFields_;
+    dict.readEntry("fields", fields_);
+    dict.readEntry("writeFields", writeFields_);
     scaleFactor_ = dict.lookupOrDefault<scalar>("scaleFactor", 1.0);
 
     return true;
diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValueNew.C b/src/functionObjects/field/fieldValues/fieldValue/fieldValueNew.C
index b665ee289649098609b17d999dbb161187633dfb..4550d1b8b73340c403210c16bbd392d3870f13bf 100644
--- a/src/functionObjects/field/fieldValues/fieldValue/fieldValueNew.C
+++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValueNew.C
@@ -36,7 +36,7 @@ Foam::functionObjects::fieldValue::New
     const bool output
 )
 {
-    const word modelType(dict.lookup("type"));
+    const word modelType(dict.get<word>("type"));
 
     if (output)
     {
diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C
index 1ef718a700202a7d0fad8a21f5e3c7917a67752e..4da57d8516b2b7e61f83b92aa077bdedc554055b 100644
--- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C
+++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C
@@ -484,7 +484,7 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::initialise
     const dictionary& dict
 )
 {
-    dict.lookup("name") >> regionName_;
+    dict.readEntry("name", regionName_);
 
     switch (regionType_)
     {
@@ -616,7 +616,7 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::initialise
     surfaceWriterPtr_.clear();
     if (writeFields_)
     {
-        const word surfaceFormat(dict.lookup("surfaceFormat"));
+        const word surfaceFormat(dict.get<word>("surfaceFormat"));
 
         if (surfaceFormat != "none")
         {
@@ -687,12 +687,12 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::processValues
     {
         case opSumDirection:
         {
-            const vector n(dict_.lookup("direction"));
+            const vector n(dict_.get<vector>("direction"));
             return gSum(pos0(values*(Sf & n))*mag(values));
         }
         case opSumDirectionBalance:
         {
-            const vector n(dict_.lookup("direction"));
+            const vector n(dict_.get<vector>("direction"));
             const scalarField nv(values*(Sf & n));
 
             return gSum(pos0(nv)*mag(values) - neg(nv)*mag(values));
@@ -758,16 +758,14 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::processValues
     {
         case opSumDirection:
         {
-            vector n(dict_.lookup("direction"));
-            n /= mag(n) + ROOTVSMALL;
+            const vector n(dict_.get<vector>("direction").normalise());
 
             const scalarField nv(n & values);
             return gSum(pos0(nv)*n*(nv));
         }
         case opSumDirectionBalance:
         {
-            vector n(dict_.lookup("direction"));
-            n /= mag(n) + ROOTVSMALL;
+            const vector n(dict_.get<vector>("direction").normalise());
 
             const scalarField nv(n & values);
             return gSum(pos0(nv)*n*(nv));
diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C
index 2cd561e626cb1a85d20b2779b0b0ac7e2fe97289..c0dff9e67e142c383d86dee7313ddcca2aa9fefe 100644
--- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C
+++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValueTemplates.C
@@ -178,7 +178,6 @@ processSameTypeValues
             if (canWeight(weightField))
             {
                 tmp<scalarField> weight(weightingFactor(weightField));
-
                 result = gSum(weight*values);
             }
             else
@@ -466,8 +465,8 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::filterField
     const GeometricField<Type, fvPatchField, volMesh>& field
 ) const
 {
-    tmp<Field<Type>> tvalues(new Field<Type>(faceId_.size()));
-    Field<Type>& values = tvalues.ref();
+    auto tvalues = tmp<Field<Type>>::New(faceId_.size());
+    auto& values = tvalues.ref();
 
     forAll(values, i)
     {
@@ -501,8 +500,8 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::filterField
     const GeometricField<Type, fvsPatchField, surfaceMesh>& field
 ) const
 {
-    tmp<Field<Type>> tvalues(new Field<Type>(faceId_.size()));
-    Field<Type>& values = tvalues.ref();
+    auto tvalues = tmp<Field<Type>>::New(faceId_.size());
+    auto& values = tvalues.ref();
 
     forAll(values, i)
     {
diff --git a/src/functionObjects/field/fieldsExpression/fieldsExpression.C b/src/functionObjects/field/fieldsExpression/fieldsExpression.C
index 482c1aa932e641fc525ea4cb9edaf1a3ccca2750..a0dd7a1c9b785525683ae420186c84b58228e577 100644
--- a/src/functionObjects/field/fieldsExpression/fieldsExpression.C
+++ b/src/functionObjects/field/fieldsExpression/fieldsExpression.C
@@ -111,12 +111,12 @@ bool Foam::functionObjects::fieldsExpression::read(const dictionary& dict)
 
     if (fieldNames_.empty() || dict.found("fields"))
     {
-        dict.lookup("fields") >> fieldNames_;
+        dict.readEntry("fields", fieldNames_);
     }
 
     if (dict.found("result"))
     {
-        dict.lookup("result") >> resultName_;
+        dict.readEntry("result", resultName_);
     }
 
     return true;
diff --git a/src/functionObjects/field/fluxSummary/fluxSummary.C b/src/functionObjects/field/fluxSummary/fluxSummary.C
index 3b365baa85545897c192f83a18953207b4ffe96e..529c2d48d05e13869a44dc0870ba44444af05969 100644
--- a/src/functionObjects/field/fluxSummary/fluxSummary.C
+++ b/src/functionObjects/field/fluxSummary/fluxSummary.C
@@ -448,8 +448,7 @@ void Foam::functionObjects::fluxSummary::initialiseCellZoneAndDirection
 
         if (((own != -1) && (nbr == -1)) || ((own == -1) && (nbr != -1)))
         {
-            vector n = mesh_.faces()[facei].normal(mesh_.points());
-            n /= mag(n) + ROOTVSMALL;
+            vector n = mesh_.faces()[facei].unitNormal(mesh_.points());
 
             if ((n & refDir) > tolerance_)
             {
@@ -481,8 +480,7 @@ void Foam::functionObjects::fluxSummary::initialiseCellZoneAndDirection
 
             if ((own != -1) && (nbr == -1))
             {
-                vector n = mesh_.faces()[facei].normal(mesh_.points());
-                n /= mag(n) + ROOTVSMALL;
+                vector n = mesh_.faces()[facei].unitNormal(mesh_.points());
 
                 if ((n & refDir) > tolerance_)
                 {
@@ -835,7 +833,7 @@ bool Foam::functionObjects::fluxSummary::read(const dictionary& dict)
     {
         case mdFaceZone:
         {
-            List<word> zones(dict.lookup("faceZones"));
+            wordList zones(dict.get<wordList>("faceZones"));
 
             forAll(zones, i)
             {
@@ -853,8 +851,8 @@ bool Foam::functionObjects::fluxSummary::read(const dictionary& dict)
         }
         case mdFaceZoneAndDirection:
         {
-            List<Tuple2<word, vector>>
-                zoneAndDirection(dict.lookup("faceZoneAndDirection"));
+            List<Tuple2<word, vector>> zoneAndDirection;
+            dict.readEntry("faceZoneAndDirection", zoneAndDirection);
 
             forAll(zoneAndDirection, i)
             {
@@ -873,8 +871,8 @@ bool Foam::functionObjects::fluxSummary::read(const dictionary& dict)
         }
         case mdCellZoneAndDirection:
         {
-            List<Tuple2<word, vector>>
-                zoneAndDirection(dict.lookup("cellZoneAndDirection"));
+            List<Tuple2<word, vector>> zoneAndDirection;
+            dict.readEntry("cellZoneAndDirection", zoneAndDirection);
 
             forAll(zoneAndDirection, i)
             {
@@ -893,7 +891,7 @@ bool Foam::functionObjects::fluxSummary::read(const dictionary& dict)
         }
         case mdSurface:
         {
-            List<word> surfs(dict.lookup("surfaces"));
+            wordList surfs(dict.get<wordList>("surfaces"));
 
             forAll(surfs, i)
             {
@@ -909,8 +907,8 @@ bool Foam::functionObjects::fluxSummary::read(const dictionary& dict)
         }
         case mdSurfaceAndDirection:
         {
-            List<Tuple2<word, vector>>
-                surfAndDirection(dict.lookup("surfaceAndDirection"));
+            List<Tuple2<word, vector>> surfAndDirection;
+            dict.readEntry("surfaceAndDirection", surfAndDirection);
 
             forAll(surfAndDirection, i)
             {
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C
index b01313428b60afb6b2e58779847d10c6f3d46197..a7df02d563d15482600d14263c74c8f6877ba57f 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C
@@ -164,12 +164,8 @@ Foam::heatTransferCoeffModels::ReynoldsAnalogy::Cf() const
     const volVectorField& U = mesh_.lookupObject<volVectorField>(UName_);
     const volVectorField::Boundary& Ubf = U.boundaryField();
 
-    tmp<FieldField<Field, scalar>> tCf
-    (
-        new FieldField<Field, scalar>(Ubf.size())
-    );
-
-    FieldField<Field, scalar>& Cf = tCf.ref();
+    auto tCf = tmp<FieldField<Field, scalar>>::New(Ubf.size());
+    auto& Cf = tCf.ref();
 
     forAll(Cf, patchi)
     {
@@ -179,7 +175,7 @@ Foam::heatTransferCoeffModels::ReynoldsAnalogy::Cf() const
     const volSymmTensorField R(devReff());
     const volSymmTensorField::Boundary& Rbf = R.boundaryField();
 
-    for (label patchi : patchSet_)
+    for (const label patchi : patchSet_)
     {
         const fvPatchVectorField& Up = Ubf[patchi];
 
@@ -226,18 +222,18 @@ bool Foam::heatTransferCoeffModels::ReynoldsAnalogy::read
 {
     if (heatTransferCoeffModel::read(dict))
     {
-        dict.lookup("UInf") >> URef_;
+        dict.readEntry("UInf", URef_);
 
         dict.readIfPresent("Cp", CpName_);
         if (CpName_ == "CpInf")
         {
-            dict.lookup("CpInf") >> CpRef_;
+            dict.readEntry("CpInf", CpRef_);
         }
 
         dict.readIfPresent("rho", rhoName_);
         if (rhoName_ == "rhoInf")
         {
-            dict.lookup("rhoInf") >> rhoRef_;
+            dict.readEntry("rhoInf", rhoRef_);
         }
 
         return true;
@@ -253,9 +249,9 @@ void Foam::heatTransferCoeffModels::ReynoldsAnalogy::htc(volScalarField& htc)
     const scalar magU = mag(URef_);
 
     volScalarField::Boundary& htcBf = htc.boundaryFieldRef();
-    forAllConstIters(patchSet_, iter)
+
+    for (const label patchi : patchSet_)
     {
-        label patchi = iter.key();
         const scalarField rhop(rho(patchi));
         const scalarField Cpp(Cp(patchi));
 
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C
index 5a37291e2d05525e6347f69955b6fe29917dfaee..c5ca71ef20f3fd66198292e4a85e2dbffd4ace79 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C
@@ -68,7 +68,7 @@ bool Foam::heatTransferCoeffModels::fixedReferenceTemperature::read
 {
     if (heatTransferCoeffModel::read(dict))
     {
-        dict.lookup("TRef") >> TRef_;
+        dict.readEntry("TRef", TRef_);
 
         return true;
     }
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C
index e6bcba2a3f9703713fc03aaa48d690c9ca3d9fae..78f9875b8c91526f629b70c5809d66aa02068a93 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C
@@ -46,16 +46,12 @@ Foam::heatTransferCoeffModel::q() const
     const volScalarField& T = mesh_.lookupObject<volScalarField>(TName_);
     const volScalarField::Boundary& Tbf = T.boundaryField();
 
-    tmp<FieldField<Field, scalar>> tq
-    (
-        new FieldField<Field, scalar>(Tbf.size())
-    );
-
-    FieldField<Field, scalar>& q = tq.ref();
+    auto tq = tmp<FieldField<Field, scalar>>::New(Tbf.size());
+    auto& q = tq.ref();
 
     forAll(q, patchi)
     {
-        q.set(patchi, new Field<scalar>(Tbf[patchi].size(), 0));
+        q.set(patchi, new Field<scalar>(Tbf[patchi].size(), Zero));
     }
 
     typedef compressible::turbulenceModel cmpTurbModel;
@@ -71,7 +67,7 @@ Foam::heatTransferCoeffModel::q() const
         const volScalarField alphaEff(turb.alphaEff());
         const volScalarField::Boundary& alphaEffbf = alphaEff.boundaryField();
 
-        for (label patchi : patchSet_)
+        for (const label patchi : patchSet_)
         {
             q[patchi] = alphaEffbf[patchi]*hebf[patchi].snGrad();
         }
@@ -105,7 +101,7 @@ Foam::heatTransferCoeffModel::q() const
         const volScalarField& qr = mesh_.lookupObject<volScalarField>(qrName_);
         const volScalarField::Boundary& qrbf = qr.boundaryField();
 
-        for (label patchi : patchSet_)
+        for (const label patchi : patchSet_)
         {
             q[patchi] += qrbf[patchi];
         }
@@ -135,8 +131,7 @@ Foam::heatTransferCoeffModel::heatTransferCoeffModel
 
 bool Foam::heatTransferCoeffModel::read(const dictionary& dict)
 {
-    patchSet_ =
-        mesh_.boundaryMesh().patchSet(wordReList(dict.lookup("patches")));
+    patchSet_ = mesh_.boundaryMesh().patchSet(dict.get<wordRes>("patches"));
 
     dict.readIfPresent("qr", qrName_);
 
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModelNew.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModelNew.C
index aef48b1f9db4e77b06bb6dbe3b0cec8e4b995c4c..9cf1923c7c6ea0809e1fa0e8d7c0db6182bdcfbd 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModelNew.C
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModelNew.C
@@ -36,7 +36,7 @@ Foam::autoPtr<Foam::heatTransferCoeffModel> Foam::heatTransferCoeffModel::New
     const word& TName
 )
 {
-    const word modelType(dict.lookup("htcModel"));
+    const word modelType(dict.get<word>("htcModel"));
 
     Info<< "Selecting heat transfer coefficient model " << modelType << endl;
 
diff --git a/src/functionObjects/field/histogram/histogram.C b/src/functionObjects/field/histogram/histogram.C
index 39c2649faba40b3eadfd3702446d54e7de6d8f51..1f2ad880b3d3d1f451af7fc21f4d4bf408ece165 100644
--- a/src/functionObjects/field/histogram/histogram.C
+++ b/src/functionObjects/field/histogram/histogram.C
@@ -105,13 +105,13 @@ bool Foam::functionObjects::histogram::read(const dictionary& dict)
     fvMeshFunctionObject::read(dict);
     writeFile::read(dict);
 
-    dict.lookup("field") >> fieldName_;
+    dict.readEntry("field", fieldName_);
 
     max_ = dict.lookupOrDefault<scalar>("max", -GREAT);
     min_ = dict.lookupOrDefault<scalar>("min", GREAT);
-    dict.lookup("nBins") >> nBins_;
+    dict.readEntry("nBins", nBins_);
 
-    word format(dict.lookup("setFormat"));
+    const word format(dict.get<word>("setFormat"));
     formatterPtr_ = writer<scalar>::New(format);
 
     return true;
diff --git a/src/functionObjects/field/mapFields/mapFields.C b/src/functionObjects/field/mapFields/mapFields.C
index 78f6bd13f0a315065db967a0f2b928c315741c63..656274f73c7c87989e0aa57138932c1a5204ef8b 100644
--- a/src/functionObjects/field/mapFields/mapFields.C
+++ b/src/functionObjects/field/mapFields/mapFields.C
@@ -53,7 +53,7 @@ void Foam::functionObjects::mapFields::createInterpolation
 )
 {
     const fvMesh& meshTarget = mesh_;
-    const word mapRegionName(dict.lookup("mapRegion"));
+    const word mapRegionName(dict.get<word>("mapRegion"));
 
     Info<< name() << ':' << nl
         << "    Reading mesh " << mapRegionName << endl;
@@ -71,7 +71,7 @@ void Foam::functionObjects::mapFields::createInterpolation
         )
     );
     const fvMesh& mapRegion = mapRegionPtr_();
-    const word mapMethodName(dict.lookup("mapMethod"));
+    const word mapMethodName(dict.get<word>("mapMethod"));
     if (!meshToMesh::interpolationMethodNames_.found(mapMethodName))
     {
         FatalErrorInFunction
@@ -100,11 +100,9 @@ void Foam::functionObjects::mapFields::createInterpolation
         Info<< "    Patch mapping method: " << patchMapMethodName << endl;
     }
 
-    bool consistent = readBool(dict.lookup("consistent"));
-
     Info<< "    Creating mesh to mesh interpolation" << endl;
 
-    if (consistent)
+    if (dict.get<bool>("consistent"))
     {
         interpPtr_.reset
         (
@@ -119,8 +117,11 @@ void Foam::functionObjects::mapFields::createInterpolation
     }
     else
     {
-        HashTable<word> patchMap(dict.lookup("patchMap"));
-        wordList cuttingPatches(dict.lookup("cuttingPatches"));
+        HashTable<word> patchMap;
+        wordList cuttingPatches;
+
+        dict.readEntry("patchMap", patchMap);
+        dict.readEntry("cuttingPatches", cuttingPatches);
 
         interpPtr_.reset
         (
@@ -162,7 +163,7 @@ bool Foam::functionObjects::mapFields::read(const dictionary& dict)
 {
     fvMeshFunctionObject::read(dict);
 
-    dict.lookup("fields") >> fieldNames_;
+    dict.readEntry("fields", fieldNames_);
     createInterpolation(dict);
     return true;
 }
diff --git a/src/functionObjects/field/nearWallFields/nearWallFields.C b/src/functionObjects/field/nearWallFields/nearWallFields.C
index db0e706b5d7498f3e2f35023ddeb844a4572a877..b40a6355b30c57b8be4b2491a9850f422c7358b9 100644
--- a/src/functionObjects/field/nearWallFields/nearWallFields.C
+++ b/src/functionObjects/field/nearWallFields/nearWallFields.C
@@ -260,10 +260,9 @@ bool Foam::functionObjects::nearWallFields::read(const dictionary& dict)
 {
     fvMeshFunctionObject::read(dict);
 
-    dict.lookup("fields") >> fieldSet_;
-    patchSet_ =
-        mesh_.boundaryMesh().patchSet(wordReList(dict.lookup("patches")));
-    distance_ = readScalar(dict.lookup("distance"));
+    dict.readEntry("fields", fieldSet_);
+    patchSet_ = mesh_.boundaryMesh().patchSet(dict.get<wordRes>("patches"));
+    distance_ = dict.get<scalar>("distance");
 
 
     // Clear out any previously loaded fields
diff --git a/src/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C b/src/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C
index d16f19232d02f36ee37398f1beef888f76da6120..b72e13a2aa91904d1b23b40b5164b84562d05fd8 100644
--- a/src/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C
+++ b/src/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C
@@ -37,9 +37,9 @@ void Foam::functionObjects::nearWallFields::createFields
 
     HashTable<const VolFieldType*> flds(obr_.lookupClass<VolFieldType>());
 
-    forAllConstIter(typename HashTable<const VolFieldType*>, flds, iter)
+    forAllConstIters(flds, iter)
     {
-        const VolFieldType& fld = *iter();
+        const VolFieldType& fld = *(iter.object());
 
         if (fieldMap_.found(fld.name()))
         {
diff --git a/src/functionObjects/field/particleDistribution/particleDistribution.C b/src/functionObjects/field/particleDistribution/particleDistribution.C
index 832616f8d1d57c1ddd4fa56a698c677e8304306d..df52bda1d19ce12409092a3a6c0fd6229ed43783 100644
--- a/src/functionObjects/field/particleDistribution/particleDistribution.C
+++ b/src/functionObjects/field/particleDistribution/particleDistribution.C
@@ -80,10 +80,10 @@ bool Foam::functionObjects::particleDistribution::read(const dictionary& dict)
 {
     if (fvMeshFunctionObject::read(dict) && writeFile::read(dict))
     {
-        dict.lookup("cloud") >> cloudName_;
-        dict.lookup("nameVsBinWidth") >> nameVsBinWidth_;
+        dict.readEntry("cloud", cloudName_);
+        dict.readEntry("nameVsBinWidth", nameVsBinWidth_);
         dict.readIfPresent("tagField", tagFieldName_);
-        word format(dict.lookup("setFormat"));
+        const word format(dict.get<word>("setFormat"));
         writerPtr_ = writer<scalar>::New(format);
 
         Info<< type() << " " << name() << " output:" << nl
diff --git a/src/functionObjects/field/pressure/pressure.C b/src/functionObjects/field/pressure/pressure.C
index 3699e78dcca0fa8524c73f24fc728772ade445db..9d6d91d37522b48c7b0be9e6416aef47fbe9a732 100644
--- a/src/functionObjects/field/pressure/pressure.C
+++ b/src/functionObjects/field/pressure/pressure.C
@@ -70,22 +70,19 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressure::rhoScale
 {
     if (p.dimensions() == dimPressure)
     {
-        return tmp<volScalarField>
+        return tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    "rhoScale",
-                    p.mesh().time().timeName(),
-                    p.mesh(),
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE,
-                    false
-                ),
-                p,
-                fvPatchField<scalar>::calculatedType()
-            )
+                "rhoScale",
+                p.mesh().time().timeName(),
+                p.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            p,
+            fvPatchField<scalar>::calculatedType()
         );
     }
     else
@@ -115,10 +112,8 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressure::rhoScale
     {
         return lookupObject<volScalarField>(rhoName_)*tsf;
     }
-    else
-    {
-        return dimensionedScalar("rhoInf", dimDensity, rhoInf_)*tsf;
-    }
+
+    return dimensionedScalar("rhoInf", dimDensity, rhoInf_)*tsf;
 }
 
 
@@ -192,28 +187,23 @@ bool Foam::functionObjects::pressure::calc()
     {
         const volScalarField& p = lookupObject<volScalarField>(fieldName_);
 
-        tmp<volScalarField> tp
+        auto tp = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    resultName_,
-                    p.mesh().time().timeName(),
-                    p.mesh(),
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
-                coeff(pRef(pDyn(p, rhoScale(p))))
-            )
+                resultName_,
+                p.mesh().time().timeName(),
+                p.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            coeff(pRef(pDyn(p, rhoScale(p))))
         );
 
         return store(resultName_, tp);
     }
-    else
-    {
-        return false;
-    }
+
+    return false;
 }
 
 
@@ -265,22 +255,22 @@ bool Foam::functionObjects::pressure::read(const dictionary& dict)
 
     if (rhoName_ == "rhoInf")
     {
-        dict.lookup("rhoInf") >> rhoInf_;
+        dict.readEntry("rhoInf", rhoInf_);
         rhoInfInitialised_ = true;
     }
 
-    dict.lookup("calcTotal") >> calcTotal_;
+    dict.readEntry("calcTotal", calcTotal_);
     if (calcTotal_)
     {
         pRef_ = dict.lookupOrDefault<scalar>("pRef", 0.0);
     }
 
-    dict.lookup("calcCoeff") >> calcCoeff_;
+    dict.readEntry("calcCoeff", calcCoeff_);
     if (calcCoeff_)
     {
-        dict.lookup("pInf") >> pInf_;
-        dict.lookup("UInf") >> UInf_;
-        dict.lookup("rhoInf") >> rhoInf_;
+        dict.readEntry("pInf", pInf_);
+        dict.readEntry("UInf", UInf_);
+        dict.readEntry("rhoInf", rhoInf_);
 
         scalar zeroCheck = 0.5*rhoInf_*magSqr(UInf_) + pInf_;
 
diff --git a/src/functionObjects/field/processorField/processorField.C b/src/functionObjects/field/processorField/processorField.C
index e10b70cd4cd088d82cbaf48266347a19aebaae6f..3711b65abae052fa24852857239fd765b20f2504 100644
--- a/src/functionObjects/field/processorField/processorField.C
+++ b/src/functionObjects/field/processorField/processorField.C
@@ -91,10 +91,10 @@ bool Foam::functionObjects::processorField::read(const dictionary& dict)
 
 bool Foam::functionObjects::processorField::execute()
 {
-    const volScalarField& procField =
-        mesh_.lookupObject<volScalarField>("processorID");
+    volScalarField& procField =
+        mesh_.lookupObjectRef<volScalarField>("processorID");
 
-    const_cast<volScalarField&>(procField) ==
+    procField ==
         dimensionedScalar("proci", dimless, Pstream::myProcNo());
 
     return true;
diff --git a/src/functionObjects/field/randomise/randomise.C b/src/functionObjects/field/randomise/randomise.C
index 09e3ef5791bf53551827e0470c4d66c4a7a26396..a38748d40f63f1bed18ad42d982d969016ed70e6 100644
--- a/src/functionObjects/field/randomise/randomise.C
+++ b/src/functionObjects/field/randomise/randomise.C
@@ -81,7 +81,7 @@ bool Foam::functionObjects::randomise::read(const dictionary& dict)
 {
     fieldExpression::read(dict);
 
-    dict.lookup("magPerturbation") >> magPerturbation_;
+    dict.readEntry("magPerturbation", magPerturbation_);
 
     return true;
 }
diff --git a/src/functionObjects/field/randomise/randomiseTemplates.C b/src/functionObjects/field/randomise/randomiseTemplates.C
index f0c691eb3973176d5aaf98923d02cc0e7d71aa72..c0f1bbf7142119a1127cc17f51371dbea17a84cc 100644
--- a/src/functionObjects/field/randomise/randomiseTemplates.C
+++ b/src/functionObjects/field/randomise/randomiseTemplates.C
@@ -39,26 +39,25 @@ bool Foam::functionObjects::randomise::calcRandomised()
 
         resultName_ = fieldName_ & "Random";
 
-        tmp<VolFieldType> rfieldt(new VolFieldType(field));
-        VolFieldType& rfield = rfieldt.ref();
+        auto trfield = tmp<VolFieldType>::New(field);
+        auto& rfield = trfield.ref();
 
         Random rand(1234567);
 
-        forAll(field, celli)
+        for (Type& cellval : rfield)
         {
             Type rndPert;
             rand.randomise01(rndPert);
             rndPert = 2.0*rndPert - pTraits<Type>::one;
             rndPert /= mag(rndPert);
-            rfield[celli] += magPerturbation_*rndPert;
+
+            cellval += magPerturbation_*rndPert;
         }
 
-        return store(resultName_, rfieldt);
-    }
-    else
-    {
-        return false;
+        return store(resultName_, trfield);
     }
+
+    return false;
 }
 
 
diff --git a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C
index 47f4cf6a119b4321d081c0689e660b50299da8c6..b40b244cedcc082ad35492ea9aaf1f68b30ffbd1 100644
--- a/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C
+++ b/src/functionObjects/field/reactionSensitivityAnalysis/reactionsSensitivityAnalysis.C
@@ -78,24 +78,20 @@ calculateSpeciesRR
     const basicChemistryModel& basicChemistry
 )
 {
-    tmp<DimensionedField<scalar, volMesh>> RRt
+    auto RRt = tmp<DimensionedField<scalar, volMesh>>::New
     (
-        new DimensionedField<scalar, volMesh>
+        IOobject
         (
-            IOobject
-            (
-                "RR",
-                time_.timeName(),
-                mesh_,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
+            "RR",
+            time_.timeName(),
             mesh_,
-            dimensionedScalar(dimMass/dimVolume/dimTime, Zero)
-        )
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh_,
+        dimensionedScalar(dimMass/dimVolume/dimTime, Zero)
     );
-
-    DimensionedField<scalar, volMesh>& RR = RRt.ref();
+    auto& RR = RRt.ref();
 
     scalar dt = time_.deltaT().value();
 
diff --git a/src/functionObjects/field/readFields/readFields.C b/src/functionObjects/field/readFields/readFields.C
index 04fb569728e74ba79afea4c865793990db0e123d..b33931977f7d60e4ff7b83ffb2437d04ea0d3fb2 100644
--- a/src/functionObjects/field/readFields/readFields.C
+++ b/src/functionObjects/field/readFields/readFields.C
@@ -74,7 +74,7 @@ bool Foam::functionObjects::readFields::read(const dictionary& dict)
 {
     fvMeshFunctionObject::read(dict);
 
-    dict.lookup("fields") >> fieldSet_;
+    dict.readEntry("fields", fieldSet_);
     dict.readIfPresent("readOnStart", readOnStart_);
 
     return true;
diff --git a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
index a75a4e1bd64834a1365b377e93ed061bd0dc5ccc..98aa128897acd1ff53537b493d76251e9340086e 100644
--- a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
+++ b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
@@ -209,8 +209,8 @@ Foam::functionObjects::regionSizeDistribution::divide
     const scalarField& denom
 )
 {
-    tmp<scalarField> tresult(new scalarField(num.size()));
-    scalarField& result = tresult.ref();
+    auto tresult = tmp<scalarField>::New(num.size());
+    auto& result = tresult.ref();
 
     forAll(denom, i)
     {
@@ -317,8 +317,8 @@ Foam::functionObjects::regionSizeDistribution::regionSizeDistribution
 :
     fvMeshFunctionObject(name, runTime, dict),
     writeFile(obr_, name),
-    alphaName_(dict.lookup("field")),
-    patchNames_(dict.lookup("patches")),
+    alphaName_(dict.get<word>("field")),
+    patchNames_(dict.get<wordRes>("patches")),
     isoPlanes_(dict.lookupOrDefault("isoPlanes", false))
 {
     read(dict);
@@ -338,16 +338,16 @@ bool Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict)
     fvMeshFunctionObject::read(dict);
     writeFile::read(dict);
 
-    dict.lookup("field") >> alphaName_;
-    dict.lookup("patches") >> patchNames_;
-    dict.lookup("threshold") >> threshold_;
-    dict.lookup("maxDiameter") >> maxDiam_;
+    dict.readEntry("field", alphaName_);
+    dict.readEntry("patches", patchNames_);
+    dict.readEntry("threshold", threshold_);
+    dict.readEntry("maxDiameter", maxDiam_);
     minDiam_ = 0.0;
     dict.readIfPresent("minDiameter", minDiam_);
-    dict.lookup("nBins") >> nBins_;
-    dict.lookup("fields") >> fields_;
+    dict.readEntry("nBins", nBins_);
+    dict.readEntry("fields", fields_);
 
-    word format(dict.lookup("setFormat"));
+    const word format(dict.get<word>("setFormat"));
     formatterPtr_ = writer<scalar>::New(format);
 
     if (dict.found("coordinateSystem"))
@@ -360,12 +360,12 @@ bool Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict)
 
     if (isoPlanes_)
     {
-         dict.lookup("origin") >> origin_;
-         dict.lookup("direction") >> direction_;
-         dict.lookup("maxDiameter") >> maxDiameter_;
-         dict.lookup("nDownstreamBins") >> nDownstreamBins_;
-         dict.lookup("maxDownstream") >> maxDownstream_;
-         direction_ /= mag(direction_);
+         dict.readEntry("origin", origin_);
+         dict.readEntry("direction", direction_);
+         dict.readEntry("maxDiameter", maxDiameter_);
+         dict.readEntry("nDownstreamBins", nDownstreamBins_);
+         dict.readEntry("maxDownstream", maxDownstream_);
+         direction_.normalise();
     }
 
     return true;
@@ -458,6 +458,7 @@ bool Foam::functionObjects::regionSizeDistribution::write()
             {
                 tmp<scalarField> townFld(fvp.patchInternalField());
                 const scalarField& ownFld = townFld();
+
                 tmp<scalarField> tnbrFld(fvp.patchNeighbourField());
                 const scalarField& nbrFld = tnbrFld();
 
diff --git a/src/functionObjects/field/setFlow/setFlow.C b/src/functionObjects/field/setFlow/setFlow.C
index 7d3353ab64ad19316a8a8ef6a4415c55f08a3d8c..329e2e6b5d738c9571217783d0b702e578da83e1 100644
--- a/src/functionObjects/field/setFlow/setFlow.C
+++ b/src/functionObjects/field/setFlow/setFlow.C
@@ -137,7 +137,7 @@ bool Foam::functionObjects::setFlow::read(const dictionary& dict)
     if (fvMeshFunctionObject::read(dict))
     {
         Info<< name() << ":" << endl;
-        mode_ = modeTypeNames.read(dict.lookup("mode"));
+        mode_ = modeTypeNames.lookup("mode", dict);
 
         Info<< "    operating mode: " << modeTypeNames[mode_] << endl;
 
@@ -176,22 +176,21 @@ bool Foam::functionObjects::setFlow::read(const dictionary& dict)
             case modeType::ROTATION:
             {
                 omegaPtr_ = Function1<scalar>::New("omega", dict);
-                dict.lookup("origin") >> origin_;
-                vector refDir(dict.lookup("refDir"));
-                refDir /= mag(refDir) + ROOTVSMALL;
-                vector axis(dict.lookup("axis"));
-                axis /= mag(axis) + ROOTVSMALL;
+
+                dict.readEntry("origin", origin_);
+                const vector refDir(dict.get<vector>("refDir").normalise());
+                const vector axis(dict.get<vector>("axis").normalise());
+
                 R_ = tensor(refDir, axis, refDir^axis);
                 break;
             }
             case modeType::VORTEX2D:
             case modeType::VORTEX3D:
             {
-                dict.lookup("origin") >> origin_;
-                vector refDir(dict.lookup("refDir"));
-                refDir /= mag(refDir) + ROOTVSMALL;
-                vector axis(dict.lookup("axis"));
-                axis /= mag(axis) + ROOTVSMALL;
+                dict.readEntry("origin", origin_);
+                const vector refDir(dict.get<vector>("refDir").normalise());
+                const vector axis(dict.get<vector>("axis").normalise());
+
                 R_ = tensor(refDir, axis, refDir^axis);
                 break;
             }
diff --git a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
index c73c90afe1355becd7122c9b9df3ae58eb371a98..4e6045f8c15f58c5a74845beb4a16fe636ba49ee 100644
--- a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
+++ b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
@@ -279,23 +279,21 @@ bool Foam::functionObjects::stabilityBlendingFactor::init(bool first)
                 << exit(FatalError);
         }
 
-        tmp<volScalarField> magGradCCPtr
+        auto tmagGradCC = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    "magGradCC",
-                    time_.timeName(),
-                    mesh_,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                "magGradCC",
+                time_.timeName(),
                 mesh_,
-                dimensionedScalar(dimless, Zero),
-                zeroGradientFvPatchScalarField::typeName
-            )
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensionedScalar(dimless, Zero),
+            zeroGradientFvPatchScalarField::typeName
         );
+        auto& magGradCC = tmagGradCC.ref();
 
         for (direction i=0; i<vector::nComponents; i++)
         {
@@ -316,12 +314,12 @@ bool Foam::functionObjects::stabilityBlendingFactor::init(bool first)
             );
             cci = mesh_.C().component(i);
             cci.correctBoundaryConditions();
-            magGradCCPtr.ref() +=  mag(fvc::grad(cci)).ref();
+            magGradCC += mag(fvc::grad(cci)).ref();
         }
 
         if (first)
         {
-            Log << "    Max magGradCc :  " << max(magGradCCPtr.ref()).value()
+            Log << "    Max magGradCc :  " << max(magGradCC.ref()).value()
                 << endl;
         }
 
@@ -334,7 +332,7 @@ bool Foam::functionObjects::stabilityBlendingFactor::init(bool first)
                     max
                     (
                         scalar(0),
-                        (magGradCCPtr.ref() - maxGradCc_)
+                        (magGradCC - maxGradCc_)
                       / (minGradCc_ - maxGradCc_)
                     ),
                     scalar(1)
@@ -355,25 +353,22 @@ bool Foam::functionObjects::stabilityBlendingFactor::init(bool first)
                 << exit(FatalError);
         }
 
-        tmp<volScalarField> CoPtr
+        auto CoPtr = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    "Co",
-                    time_.timeName(),
-                    mesh_,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                "Co",
+                time_.timeName(),
                 mesh_,
-                dimensionedScalar(dimless, Zero),
-                zeroGradientFvPatchScalarField::typeName
-            )
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensionedScalar(dimless, Zero),
+            zeroGradientFvPatchScalarField::typeName
         );
 
-        volScalarField& Co = CoPtr.ref();
+        auto& Co = CoPtr.ref();
 
         Co.primitiveFieldRef() =
             mesh_.time().deltaT()*mag(*UNamePtr)/pow(mesh_.V(), 1.0/3.0);
@@ -417,12 +412,10 @@ bool Foam::functionObjects::stabilityBlendingFactor::init(bool first)
     indicator_.max(0.0);
 
     // Update the blended surface field
-    surfaceScalarField* surBlendedPtr =
-    (
-        mesh_.lookupObjectRefPtr<surfaceScalarField>(resultName_)
-    );
+    surfaceScalarField& surBlended =
+        mesh_.lookupObjectRef<surfaceScalarField>(resultName_);
 
-    *surBlendedPtr = fvc::interpolate(indicator_);
+    surBlended = fvc::interpolate(indicator_);
 
     return true;
 }
@@ -511,21 +504,18 @@ Foam::functionObjects::stabilityBlendingFactor::stabilityBlendingFactor
     read(dict);
     setResultName(typeName, "");
 
-    tmp<surfaceScalarField> faceBlendedPtr
+    auto faceBlendedPtr = tmp<surfaceScalarField>::New
     (
-        new surfaceScalarField
+        IOobject
         (
-            IOobject
-            (
-                resultName_,
-                time_.timeName(),
-                mesh_,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
+            resultName_,
+            time_.timeName(),
             mesh_,
-            dimensionedScalar(dimless, Zero)
-        )
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh_,
+        dimensionedScalar(dimless, Zero)
     );
     store(resultName_, faceBlendedPtr);
 
@@ -653,12 +643,12 @@ bool Foam::functionObjects::stabilityBlendingFactor::read
 {
     if (fieldExpression::read(dict) && writeFile::read(dict))
     {
-        dict.lookup("switchNonOrtho") >> nonOrthogonality_;
-        dict.lookup("switchGradCc") >> gradCc_;
-        dict.lookup("switchResiduals") >> residuals_;
-        dict.lookup("switchFaceWeight") >> faceWeight_;
-        dict.lookup("switchSkewness") >> skewness_;
-        dict.lookup("switchCo") >> Co_;
+        dict.readEntry("switchNonOrtho", nonOrthogonality_);
+        dict.readEntry("switchGradCc", gradCc_);
+        dict.readEntry("switchResiduals", residuals_);
+        dict.readEntry("switchFaceWeight", faceWeight_);
+        dict.readEntry("switchSkewness", skewness_);
+        dict.readEntry("switchCo", Co_);
 
         dict.readIfPresent("maxNonOrthogonality", maxNonOrthogonality_);
         dict.readIfPresent("maxGradCc", maxGradCc_);
diff --git a/src/functionObjects/field/streamFunction/streamFunction.C b/src/functionObjects/field/streamFunction/streamFunction.C
index 0838a07ecfb17bad0fdaf1032ab4b71e807531d8..da488756c2124fabf62efa796a97a861f0473a5a 100644
--- a/src/functionObjects/field/streamFunction/streamFunction.C
+++ b/src/functionObjects/field/streamFunction/streamFunction.C
@@ -71,27 +71,21 @@ Foam::tmp<Foam::pointScalarField> Foam::functionObjects::streamFunction::calc
 
     const pointMesh& pMesh = pointMesh::New(mesh_);
 
-    tmp<pointScalarField> tstreamFunction
+    auto tstreamFunction = tmp<pointScalarField>::New
     (
-        new pointScalarField
+        IOobject
         (
-            IOobject
-            (
-                "streamFunction",
-                time_.timeName(),
-                mesh_
-            ),
-            pMesh,
-            dimensionedScalar(phi.dimensions(), Zero)
-        )
+            "streamFunction",
+            time_.timeName(),
+            mesh_
+        ),
+        pMesh,
+        dimensionedScalar(phi.dimensions(), Zero)
     );
     pointScalarField& streamFunction = tstreamFunction.ref();
 
-    labelList visitedPoint(mesh_.nPoints());
-    forAll(visitedPoint, pointi)
-    {
-        visitedPoint[pointi] = 0;
-    }
+    labelList visitedPoint(mesh_.nPoints(), Zero);
+
     label nVisited = 0;
     label nVisitedOld = 0;
 
@@ -263,7 +257,7 @@ Foam::tmp<Foam::pointScalarField> Foam::functionObjects::streamFunction::calc
                                     points[curBPoints[pointi]]
                                   - currentBStreamPoint;
                                 edgeHat.replace(slabDir, 0);
-                                edgeHat /= mag(edgeHat);
+                                edgeHat.normalise();
 
                                 vector nHat = unitAreas[facei];
 
@@ -356,7 +350,7 @@ Foam::tmp<Foam::pointScalarField> Foam::functionObjects::streamFunction::calc
                                 points[curPoints[pointi]] - currentStreamPoint;
 
                             edgeHat.replace(slabDir, 0);
-                            edgeHat /= mag(edgeHat);
+                            edgeHat.normalise();
 
                             vector nHat = unitAreas[facei];
 
diff --git a/src/functionObjects/field/streamLine/streamLineBase.C b/src/functionObjects/field/streamLine/streamLineBase.C
index 8b9728b8ba0322c32efa2b3b2d70ceea92a49940..86d26c54ecb1f36f947576a1e8702fb1b5ebb16e 100644
--- a/src/functionObjects/field/streamLine/streamLineBase.C
+++ b/src/functionObjects/field/streamLine/streamLineBase.C
@@ -865,7 +865,7 @@ bool Foam::functionObjects::streamLineBase::read(const dictionary& dict)
 
     if (fields_.empty())
     {
-        dict.lookup("fields") >> fields_;
+        dict.readEntry("fields", fields_);
 
         if (!fields_.found(UName_))
         {
@@ -878,8 +878,8 @@ bool Foam::functionObjects::streamLineBase::read(const dictionary& dict)
 
     Info<< "    Employing velocity field " << UName_ << endl;
 
-    dict.lookup("trackForward") >> trackForward_;
-    dict.lookup("lifeTime") >> lifeTime_;
+    dict.readEntry("trackForward", trackForward_);
+    dict.readEntry("lifeTime", lifeTime_);
     if (lifeTime_ < 1)
     {
         FatalErrorInFunction
@@ -916,8 +916,8 @@ bool Foam::functionObjects::streamLineBase::read(const dictionary& dict)
     sampledSetPtr_.clear();
     sampledSetAxis_.clear();
 
-    scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat"));
-    vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat"));
+    scalarFormatterPtr_ = writer<scalar>::New(dict.get<word>("setFormat"));
+    vectorFormatterPtr_ = writer<vector>::New(dict.get<word>("setFormat"));
 
     return true;
 }
diff --git a/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C b/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C
index d81a37ef66fc0cf2c57c1cfc8523acc1e408fea7..513cce3118631e82d8ec011d93175865424a7930 100644
--- a/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C
+++ b/src/functionObjects/field/surfaceInterpolate/surfaceInterpolate.C
@@ -76,7 +76,7 @@ bool Foam::functionObjects::surfaceInterpolate::read
 {
     fvMeshFunctionObject::read(dict);
 
-    dict.lookup("fields") >> fieldSet_;
+    dict.readEntry("fields", fieldSet_);
 
     return true;
 }
diff --git a/src/functionObjects/field/turbulenceFields/turbulenceFields.C b/src/functionObjects/field/turbulenceFields/turbulenceFields.C
index f4d4a53f6b99362f6e47d7c120df5a09b098472b..559237b84a137e2ff1de2adba94928d85026adaa 100644
--- a/src/functionObjects/field/turbulenceFields/turbulenceFields.C
+++ b/src/functionObjects/field/turbulenceFields/turbulenceFields.C
@@ -144,11 +144,11 @@ bool Foam::functionObjects::turbulenceFields::read(const dictionary& dict)
 
     if (dict.found("field"))
     {
-        fieldSet_.insert(word(dict.lookup("field")));
+        fieldSet_.insert(dict.get<word>("field"));
     }
     else
     {
-        fieldSet_.insert(wordList(dict.lookup("fields")));
+        fieldSet_.insert(dict.get<wordList>("fields"));
     }
 
     Info<< type() << " " << name() << ": ";
diff --git a/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C b/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C
index 4ded70c6be41bcf266ffe605634bce6026d784f7..98613fbc282bad6c8bc9e91afcc3ecc9cdc7edea 100644
--- a/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C
+++ b/src/functionObjects/field/turbulenceFields/turbulenceFieldsTemplates.C
@@ -40,8 +40,7 @@ void Foam::functionObjects::turbulenceFields::processField
 
     if (obr_.foundObject<FieldType>(scopedName))
     {
-        FieldType& fld =
-            const_cast<FieldType&>(obr_.lookupObject<FieldType>(scopedName));
+        FieldType& fld = obr_.lookupObjectRef<FieldType>(scopedName);
         fld == tvalue();
     }
     else if (obr_.found(scopedName))
diff --git a/src/functionObjects/field/valueAverage/valueAverage.C b/src/functionObjects/field/valueAverage/valueAverage.C
index 3e74e5f4b67b06f146e366f72d494c53b892cd9e..3b34734e97f454261e619a32be6a440355508bbc 100644
--- a/src/functionObjects/field/valueAverage/valueAverage.C
+++ b/src/functionObjects/field/valueAverage/valueAverage.C
@@ -87,7 +87,7 @@ Foam::functionObjects::valueAverage::valueAverage
             if (dict.found(fieldName))
             {
                 const dictionary& valueDict = dict.subDict(fieldName);
-                totalTime_[fieldi] = readScalar(valueDict.lookup("totalTime"));
+                totalTime_[fieldi] = valueDict.get<scalar>("totalTime");
             }
         }
     }
@@ -112,8 +112,8 @@ bool Foam::functionObjects::valueAverage::read(const dictionary& dict)
     // Make certain that the values are consistent with the defaults:
     resetOnRestart_ = false;
 
-    dict.lookup("functionObject") >> functionObjectName_;
-    dict.lookup("fields") >> fieldNames_;
+    dict.readEntry("functionObject", functionObjectName_);
+    dict.readEntry("fields", fieldNames_);
     if (dict.readIfPresent("window", window_))
     {
         window_ = obr().time().userTimeToTime(window_);
diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C
index 89fc0d8b220bbd48c5456d02561b717a81e39f0c..d9afcabb48205d526474a2941275234c19545c1f 100644
--- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C
+++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.C
@@ -316,8 +316,7 @@ Foam::scalar Foam::wallBoundedParticle::trackFaceTri
 
         // Outwards pointing normal
         vector edgeNormal = (pt1 - pt0)^n;
-
-        edgeNormal /= mag(edgeNormal) + VSMALL;
+        edgeNormal.normalise();
 
         // Determine whether position and end point on either side of edge.
         scalar sEnd = (endPosition - pt0)&edgeNormal;
diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
index 23f0a6044ce5048b13929c1d54b12b20eb0b8d9d..41b6eb06bfc5a6a2df4870c81e14d07647b18bd2 100644
--- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
+++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
@@ -166,8 +166,7 @@ Foam::scalar Foam::wallBoundedParticle::trackToEdge
         }
 
         const triFace tri(currentTetIndices().faceTriIs(mesh(), false));
-        vector n = tri.normal(mesh().points());
-        n /= mag(n);
+        const vector n = tri.unitNormal(mesh().points());
 
         point projectedEndPosition = endPosition;
 
diff --git a/src/functionObjects/field/yPlus/yPlus.C b/src/functionObjects/field/yPlus/yPlus.C
index 72740eb4cace6b06639c889a2a022b12bf799577..243c766ad16901441a28c3c9fc5ddfae5eb86825 100644
--- a/src/functionObjects/field/yPlus/yPlus.C
+++ b/src/functionObjects/field/yPlus/yPlus.C
@@ -120,10 +120,7 @@ bool Foam::functionObjects::yPlus::read(const dictionary& dict)
 bool Foam::functionObjects::yPlus::execute()
 {
     volScalarField& yPlus =
-        const_cast<volScalarField&>
-        (
-            lookupObject<volScalarField>(typeName)
-        );
+        lookupObjectRef<volScalarField>(typeName);
 
     if (foundObject<turbulenceModel>(turbulenceModel::propertiesName))
     {
diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.C b/src/functionObjects/field/zeroGradient/zeroGradient.C
index 5bf899f84cd5bca7748a6e066c9cae13980bf290..1575a9be39400e8a9939c1e0b468d3c408ba12cb 100644
--- a/src/functionObjects/field/zeroGradient/zeroGradient.C
+++ b/src/functionObjects/field/zeroGradient/zeroGradient.C
@@ -112,7 +112,7 @@ bool Foam::functionObjects::zeroGradient::read(const dictionary& dict)
 {
     fvMeshFunctionObject::read(dict);
 
-    dict.lookup("fields") >> selectFields_;
+    dict.readEntry("fields", selectFields_);
     selectFields_.uniq();
 
     Info<< type() << " fields: " << selectFields_ << nl;
diff --git a/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C b/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C
index 3f8074ab5a895aa0a01c298f017fd17d1df2e8d8..a81532358b7b8a1ac842bb8a81559651360143f7 100644
--- a/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C
+++ b/src/functionObjects/field/zeroGradient/zeroGradientTemplates.C
@@ -83,29 +83,25 @@ int Foam::functionObjects::zeroGradient::apply
 
     if (!foundObject<VolFieldType>(outputName))
     {
-        tmp<VolFieldType> tzg
+        auto tzeroGrad = tmp<VolFieldType>::New
         (
-            new VolFieldType
+            IOobject
             (
-                IOobject
-                (
-                    outputName,
-                    time_.timeName(),
-                    mesh_,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                outputName,
+                time_.timeName(),
                 mesh_,
-                dimensioned<Type>(input.dimensions(), Zero),
-                zeroGradientFvPatchField<Type>::typeName
-            )
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensioned<Type>(input.dimensions(), Zero),
+            zeroGradientFvPatchField<Type>::typeName
         );
 
-        store(outputName, tzg);
+        store(outputName, tzeroGrad);
     }
 
-    VolFieldType& output =
-        const_cast<VolFieldType&>(lookupObject<VolFieldType>(outputName));
+    VolFieldType& output = lookupObjectRef<VolFieldType>(outputName);
 
     output = input;
     output.correctBoundaryConditions();
diff --git a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C
index 39852bcc24fe72c77a92854781942f7ace0d9130..b1b8a5473751c0ada4bfa0f96465d94b46ba6309 100644
--- a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C
+++ b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C
@@ -243,24 +243,24 @@ bool Foam::functionObjects::forceCoeffs::read(const dictionary& dict)
     forces::read(dict);
 
     // Directions for lift and drag forces, and pitch moment
-    dict.lookup("liftDir") >> liftDir_;
-    dict.lookup("dragDir") >> dragDir_;
-    dict.lookup("pitchAxis") >> pitchAxis_;
+    dict.readEntry("liftDir", liftDir_);
+    dict.readEntry("dragDir", dragDir_);
+    dict.readEntry("pitchAxis", pitchAxis_);
 
     // Free stream velocity magnitude
-    dict.lookup("magUInf") >> magUInf_;
+    dict.readEntry("magUInf", magUInf_);
 
     // If case is compressible we must read rhoInf (store in rhoRef_) to
     // calculate the reference dynamic pressure
     // - note: for incompressible, rhoRef_ is already initialised
     if (rhoName_ != "rhoInf")
     {
-        dict.lookup("rhoInf") >> rhoRef_;
+        dict.readEntry("rhoInf", rhoRef_);
     }
 
     // Reference length and area scales
-    dict.lookup("lRef") >> lRef_;
-    dict.lookup("Aref") >> Aref_;
+    dict.readEntry("lRef", lRef_);
+    dict.readEntry("Aref", Aref_);
 
     if (writeFields_)
     {
@@ -402,16 +402,10 @@ bool Foam::functionObjects::forceCoeffs::execute()
             lookupObject<volVectorField>(fieldName("moment"));
 
         volVectorField& forceCoeff =
-            const_cast<volVectorField&>
-            (
-                lookupObject<volVectorField>(fieldName("forceCoeff"))
-            );
+            lookupObjectRef<volVectorField>(fieldName("forceCoeff"));
 
         volVectorField& momentCoeff =
-            const_cast<volVectorField&>
-            (
-                lookupObject<volVectorField>(fieldName("momentCoeff"))
-            );
+            lookupObjectRef<volVectorField>(fieldName("momentCoeff"));
 
         dimensionedScalar f0("f0", dimForce, Aref_*pDyn);
         dimensionedScalar m0("m0", dimForce*dimLength, Aref_*lRef_*pDyn);
diff --git a/src/functionObjects/forces/forces/forces.C b/src/functionObjects/forces/forces/forces.C
index 681ac2b2514c6f793849e7d18e07e8b51efd3f8a..cc166499ea4a5ffb92a7dc5c9be6e7b378ab03a0 100644
--- a/src/functionObjects/forces/forces/forces.C
+++ b/src/functionObjects/forces/forces/forces.C
@@ -292,18 +292,12 @@ void Foam::functionObjects::forces::resetFields()
     if (writeFields_)
     {
         volVectorField& force =
-            const_cast<volVectorField&>
-            (
-                lookupObject<volVectorField>(fieldName("force"))
-            );
+            lookupObjectRef<volVectorField>(fieldName("force"));
 
         force == dimensionedVector(force.dimensions(), Zero);
 
         volVectorField& moment =
-            const_cast<volVectorField&>
-            (
-                lookupObject<volVectorField>(fieldName("moment"))
-            );
+            lookupObjectRef<volVectorField>(fieldName("moment"));
 
         moment == dimensionedVector(moment.dimensions(), Zero);
     }
@@ -415,25 +409,20 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::forces::rho() const
 {
     if (rhoName_ == "rhoInf")
     {
-        return tmp<volScalarField>
+        return tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    "rho",
-                    mesh_.time().timeName(),
-                    mesh_
-                ),
-                mesh_,
-                dimensionedScalar("rho", dimDensity, rhoRef_)
-            )
+                "rho",
+                mesh_.time().timeName(),
+                mesh_
+            ),
+            mesh_,
+            dimensionedScalar("rho", dimDensity, rhoRef_)
         );
     }
-    else
-    {
-        return(lookupObject<volScalarField>(rhoName_));
-    }
+
+    return(lookupObject<volScalarField>(rhoName_));
 }
 
 
@@ -443,17 +432,15 @@ Foam::scalar Foam::functionObjects::forces::rho(const volScalarField& p) const
     {
         return 1.0;
     }
-    else
-    {
-        if (rhoName_ != "rhoInf")
-        {
-            FatalErrorInFunction
-                << "Dynamic pressure is expected but kinematic is provided."
-                << exit(FatalError);
-        }
 
-        return rhoRef_;
+    if (rhoName_ != "rhoInf")
+    {
+        FatalErrorInFunction
+            << "Dynamic pressure is expected but kinematic is provided."
+            << exit(FatalError);
     }
+
+    return rhoRef_;
 }
 
 
@@ -509,19 +496,13 @@ void Foam::functionObjects::forces::addToFields
     }
 
     volVectorField& force =
-        const_cast<volVectorField&>
-        (
-            lookupObject<volVectorField>(fieldName("force"))
-        );
+        lookupObjectRef<volVectorField>(fieldName("force"));
 
     vectorField& pf = force.boundaryFieldRef()[patchi];
     pf += fN + fT + fP;
 
     volVectorField& moment =
-        const_cast<volVectorField&>
-        (
-            lookupObject<volVectorField>(fieldName("moment"))
-        );
+        lookupObjectRef<volVectorField>(fieldName("moment"));
 
     vectorField& pm = moment.boundaryFieldRef()[patchi];
     pm += Md;
@@ -543,16 +524,10 @@ void Foam::functionObjects::forces::addToFields
     }
 
     volVectorField& force =
-        const_cast<volVectorField&>
-        (
-            lookupObject<volVectorField>(fieldName("force"))
-        );
+        lookupObjectRef<volVectorField>(fieldName("force"));
 
     volVectorField& moment =
-        const_cast<volVectorField&>
-        (
-            lookupObject<volVectorField>(fieldName("moment"))
-        );
+        lookupObjectRef<volVectorField>(fieldName("moment"));
 
     forAll(cellIDs, i)
     {
@@ -851,7 +826,7 @@ bool Foam::functionObjects::forces::read(const dictionary& dict)
 
     const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
 
-    patchSet_ = pbm.patchSet(wordReList(dict.lookup("patches")));
+    patchSet_ = pbm.patchSet(dict.get<wordRes>("patches"));
 
     if (directForceDensity_)
     {
@@ -868,7 +843,7 @@ bool Foam::functionObjects::forces::read(const dictionary& dict)
         // Reference density needed for incompressible calculations
         if (rhoName_ == "rhoInf")
         {
-            dict.lookup("rhoInf") >> rhoRef_;
+            dict.readEntry("rhoInf", rhoRef_);
         }
 
         // Reference pressure, 0 by default
@@ -899,7 +874,7 @@ bool Foam::functionObjects::forces::read(const dictionary& dict)
     if (dict.found("binData"))
     {
         const dictionary& binDict(dict.subDict("binData"));
-        binDict.lookup("nBin") >> nBin_;
+        binDict.readEntry("nBin", nBin_);
 
         if (nBin_ < 0)
         {
@@ -914,9 +889,9 @@ bool Foam::functionObjects::forces::read(const dictionary& dict)
         }
         else
         {
-            binDict.lookup("cumulative") >> binCumulative_;
-            binDict.lookup("direction") >> binDir_;
-            binDir_ /= mag(binDir_);
+            binDict.readEntry("cumulative", binCumulative_);
+            binDict.readEntry("direction", binDir_);
+            binDir_.normalise();
         }
     }
 
@@ -1062,7 +1037,7 @@ void Foam::functionObjects::forces::calcForcesMoment()
                 << endl;
         }
 
-        forAllConstIter(HashTable<const porosityModel*>, models, iter)
+        forAllConstIters(models, iter)
         {
             // Non-const access required if mesh is changing
             porosityModel& pm = const_cast<porosityModel&>(*iter());
diff --git a/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C b/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C
index 78fd350a4f4ed7d7af59d35033cbf5f9b5eb75f1..a7e6ba9db302c296a4972cf8c51c73a9b33617ed 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C
@@ -484,7 +484,7 @@ Foam::functionObjects::fieldVisualisationBase::fieldVisualisationBase
 )
 :
     colours_(colours),
-    fieldName_(dict.lookup("field")),
+    fieldName_(dict.get<word>("field")),
     colourBy_(cbColour),
     colourMap_(cmRainbow),
     range_()
@@ -500,7 +500,7 @@ Foam::functionObjects::fieldVisualisationBase::fieldVisualisationBase
         }
         case cbField:
         {
-            dict.lookup("range") >> range_;
+            dict.readEntry("range", range_);
 
             if (dict.found("colourMap"))
             {
@@ -508,15 +508,15 @@ Foam::functionObjects::fieldVisualisationBase::fieldVisualisationBase
             }
 
             const dictionary& sbarDict = dict.subDict("scalarBar");
-            sbarDict.lookup("visible") >> scalarBar_.visible_;
+            sbarDict.readEntry("visible", scalarBar_.visible_);
             if (scalarBar_.visible_)
             {
-                sbarDict.lookup("vertical") >> scalarBar_.vertical_;
-                sbarDict.lookup("position") >> scalarBar_.position_;
-                sbarDict.lookup("title") >> scalarBar_.title_;
-                sbarDict.lookup("fontSize") >> scalarBar_.fontSize_;
-                sbarDict.lookup("labelFormat") >> scalarBar_.labelFormat_;
-                sbarDict.lookup("numberOfLabels") >> scalarBar_.numberOfLabels_;
+                sbarDict.readEntry("vertical", scalarBar_.vertical_);
+                sbarDict.readEntry("position", scalarBar_.position_);
+                sbarDict.readEntry("title", scalarBar_.title_);
+                sbarDict.readEntry("fontSize", scalarBar_.fontSize_);
+                sbarDict.readEntry("labelFormat", scalarBar_.labelFormat_);
+                sbarDict.readEntry("numberOfLabels", scalarBar_.numberOfLabels_);
             }
             break;
         }
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C b/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C
index 5ca9cac31d6801ed881e2bb7de4bd5e95d413bc6..004b3914426c987ab7edefccd53555c4b3d76c04 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C
@@ -86,7 +86,7 @@ Foam::functionObjects::runTimePostPro::functionObjectBase::functionObjectBase
 :
     fieldVisualisationBase(dict, colours),
     state_(state),
-    functionObjectName_(dict.lookup("functionObject")),
+    functionObjectName_(dict.get<word>("functionObject")),
     clearObjects_(dict.lookupOrDefault("clearObjects", false))
 {}
 
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C b/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C
index c8786cf1fcd7aab674b2d348089765607c225808..74df866dff4a9e6f29b9be54a5df6f4ef88492ae 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C
@@ -65,9 +65,9 @@ Foam::functionObjects::runTimePostPro::functionObjectCloud::functionObjectCloud
 :
     pointData(parent, dict, colours),
     functionObjectBase(parent, dict, colours),
-    cloudName_(dict.lookup("cloud")),
+    cloudName_(dict.get<word>("cloud")),
     inputFileName_(),
-    colourFieldName_(dict.lookup("colourField")),
+    colourFieldName_(dict.get<word>("colourField")),
     actor_()
 {
     actor_ = vtkSmartPointer<vtkActor>::New();
diff --git a/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C b/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C
index 2bc15a840d15f2c8b0cfb0ed71511eb3ff65aa47..2be283ba58a09800705a66649b13cd3e60fc0366 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C
@@ -86,7 +86,7 @@ Foam::functionObjects::runTimePostPro::geometryBase::geometryBase
 :
     parent_(parent),
     name_(dict.dictName()),
-    visible_(readBool(dict.lookup("visible"))),
+    visible_(dict.get<bool>("visible")),
     renderMode_(rmGouraud),
     opacity_(nullptr),
     colours_(colours)
diff --git a/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C b/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C
index 8c890980dc55c36ec6ba4ad28dacef4a99025840..06cb8123bfa1d9d27523c37fb95e784f2963a3b3 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C
@@ -140,8 +140,10 @@ Foam::functionObjects::runTimePostPro::geometrySurface::geometrySurface
 )
 :
     surface(parent, dict, colours),
-    fileNames_(dict.lookup("files"))
-{}
+    fileNames_()
+{
+    dict.readEntry("files", fileNames_);
+}
 
 
 Foam::functionObjects::runTimePostPro::geometrySurface::geometrySurface
diff --git a/src/functionObjects/graphics/runTimePostProcessing/pathline.C b/src/functionObjects/graphics/runTimePostProcessing/pathline.C
index 770356a70ce8767fbef5fec282555e1ccb61ffd4..8f59b9d8879b99542af24549af47aca4390f0523 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/pathline.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/pathline.C
@@ -155,7 +155,7 @@ Foam::functionObjects::runTimePostPro::pathline::pathline
         }
         case rtTube:
         {
-            dict.lookup("tubeRadius") >> tubeRadius_;
+            dict.readEntry("tubeRadius", tubeRadius_);
             break;
         }
         case rtVector:
diff --git a/src/functionObjects/graphics/runTimePostProcessing/pointData.C b/src/functionObjects/graphics/runTimePostProcessing/pointData.C
index 82872a3bbb26d9cdcf2d2af62a55b99610d928b7..58bafbdd026e58735dbb82f46f890e956aa48f3c 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/pointData.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/pointData.C
@@ -101,7 +101,7 @@ Foam::functionObjects::runTimePostPro::pointData::pointData
     (
         representationTypeNames.lookup("representation", dict)
     ),
-    maxGlyphLength_(readScalar(dict.lookup("maxGlyphLength"))),
+    maxGlyphLength_(dict.get<scalar>("maxGlyphLength")),
     pointColour_(nullptr)
 {
     if (dict.found("pointColour"))
diff --git a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C
index c1c0620eb844179321ad2b01193dbf97c1721ecf..7cfe96d511856f14eea3af2c7a101c35dec9045e 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C
@@ -97,9 +97,9 @@ bool Foam::functionObjects::runTimePostProcessing::read(const dictionary& dict)
     scene_.read(dict);
 
     const dictionary& outputDict = dict.subDict("output");
-    outputDict.lookup("name") >> output_.name_;
-    outputDict.lookup("width") >> output_.width_;
-    outputDict.lookup("height") >> output_.height_;
+    outputDict.readEntry("name", output_.name_);
+    outputDict.readEntry("width", output_.width_);
+    outputDict.readEntry("height", output_.height_);
 
 
     readObjects(dict.subOrEmptyDict("points"), points_);
@@ -117,11 +117,14 @@ bool Foam::functionObjects::runTimePostProcessing::read(const dictionary& dict)
                 << exit(FatalIOError);
         }
 
-        text_.append(new runTimePostPro::text
+        text_.append
         (
-            *this,
-            iter().dict(),
-            scene_.colours())
+            new runTimePostPro::text
+            (
+                *this,
+                iter().dict(),
+                scene_.colours()
+            )
         );
     }
 
diff --git a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C
index 29b9df160365cd8504781da3a0151526859b5855..84561ee8a172f9d86e55183b73ed4f43c6944bff 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C
@@ -44,7 +44,7 @@ void Foam::functionObjects::runTimePostProcessing::readObjects
         }
 
         const dictionary& objectDict(iter().dict());
-        word objectType = objectDict.lookup("type");
+        const word objectType = objectDict.get<word>("type");
 
         objects.append
         (
diff --git a/src/functionObjects/graphics/runTimePostProcessing/scene.C b/src/functionObjects/graphics/runTimePostProcessing/scene.C
index 2cdb11df5ecb984f511bd7267e6179f16bd9bdb1..6af579dff4068c1ea740c3a8a555e4c661a7edb7 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/scene.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/scene.C
@@ -87,7 +87,7 @@ void Foam::functionObjects::runTimePostPro::scene::readCamera
     cameraUp_ = Function1<vector>::New("up", dict);
 
     dict.readIfPresent("clipBox", clipBox_);
-    dict.lookup("parallelProjection") >> parallelProjection_;
+    dict.readEntry("parallelProjection", parallelProjection_);
     if (!parallelProjection_)
     {
         if (dict.found("viewAngle"))
diff --git a/src/functionObjects/graphics/runTimePostProcessing/surface.C b/src/functionObjects/graphics/runTimePostProcessing/surface.C
index fe58ffc99a189f20bda65e5e7bdf4f709c3172eb..f2d075df92c7c08cdbf00a3d98bd1261a9b2594e 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/surface.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/surface.C
@@ -184,11 +184,11 @@ Foam::functionObjects::runTimePostPro::surface::surface
 
     if (representation_ == rtGlyph)
     {
-        dict.lookup("maxGlyphLength") >> maxGlyphLength_;
+        dict.readEntry("maxGlyphLength", maxGlyphLength_);
     }
     else
     {
-        dict.lookup("featureEdges") >> featureEdges_;
+        dict.readEntry("featureEdges", featureEdges_);
     }
 }
 
diff --git a/src/functionObjects/graphics/runTimePostProcessing/text.C b/src/functionObjects/graphics/runTimePostProcessing/text.C
index 8a9f79c8527d0933319f769a11d78cf8e2ced09c..160ec5be4fddc7cd691abe5825742e0524c00e82 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/text.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/text.C
@@ -44,13 +44,15 @@ Foam::functionObjects::runTimePostPro::text::text
 )
 :
     geometryBase(parent, dict, colours),
-    string_(dict.lookup("string")),
-    position_(dict.lookup("position")),
-    size_(readScalar(dict.lookup("size"))),
+    string_(dict.get<string>("string")),
+    position_(),
+    size_(dict.get<scalar>("size")),
     colour_(nullptr),
-    bold_(readBool(dict.lookup("bold"))),
+    bold_(dict.get<bool>("bold")),
     timeStamp_(dict.lookupOrDefault("timeStamp", false))
 {
+    dict.readEntry("position", position_);
+
     if (dict.found("colour"))
     {
         colour_.reset(Function1<vector>::New("colour", dict).ptr());
diff --git a/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C b/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C
index fc301627e8652a789618ee06b948b22ee4527679..d1d379b817747ba3fff0df99df1db891806479ff 100644
--- a/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C
+++ b/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C
@@ -90,7 +90,7 @@ bool Foam::functionObjects::cloudInfo::read(const dictionary& dict)
 {
     if (regionFunctionObject::read(dict) && logFiles::read(dict))
     {
-        logFiles::resetNames(dict.lookup("clouds"));
+        logFiles::resetNames(dict.get<wordList>("clouds"));
 
         Info<< type() << " " << name() << ": ";
         if (writeToFile() && names().size())
diff --git a/src/functionObjects/lagrangian/vtkCloud/vtkCloud.C b/src/functionObjects/lagrangian/vtkCloud/vtkCloud.C
index 4575bed9542cb9155f8ca18627faae9279e5e960..dbcbd464cda98a24d11cd1b0b18a1ee0803599a9 100644
--- a/src/functionObjects/lagrangian/vtkCloud/vtkCloud.C
+++ b/src/functionObjects/lagrangian/vtkCloud/vtkCloud.C
@@ -364,7 +364,7 @@ bool Foam::functionObjects::vtkCloud::read(const dictionary& dict)
     writeOpts_.ascii
     (
         dict.found("format")
-     && (IOstream::formatEnum(dict.lookup("format")) == IOstream::ASCII)
+     && (IOstream::formatEnum(dict.get<word>("format")) == IOstream::ASCII)
     );
 
     writeOpts_.append(false);  // No append supported
diff --git a/src/functionObjects/solvers/energyTransport/energyTransport.C b/src/functionObjects/solvers/energyTransport/energyTransport.C
index f5f5280301d6b0aa4fbf194c58a836ed0b762ba3..5fcb5c668e04fe5c2a44e3648c451d03491ce966 100644
--- a/src/functionObjects/solvers/energyTransport/energyTransport.C
+++ b/src/functionObjects/solvers/energyTransport/energyTransport.C
@@ -57,20 +57,17 @@ Foam::volScalarField& Foam::functionObjects::energyTransport::transportedField()
 {
     if (!foundObject<volScalarField>(fieldName_))
     {
-        tmp<volScalarField> tfldPtr
+        auto tfldPtr = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    fieldName_,
-                    mesh_.time().timeName(),
-                    mesh_,
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                mesh_
-            )
+                fieldName_,
+                mesh_.time().timeName(),
+                mesh_,
+                IOobject::MUST_READ,
+                IOobject::AUTO_WRITE
+            ),
+            mesh_
         );
         store(fieldName_, tfldPtr);
     }
@@ -113,21 +110,18 @@ Foam::functionObjects::energyTransport::kappaEff() const
 Foam::tmp<Foam::volScalarField>
 Foam::functionObjects::energyTransport::rho() const
 {
-    tmp<volScalarField> trho
+    auto trho = tmp<volScalarField>::New
     (
-        new volScalarField
+        IOobject
         (
-            IOobject
-            (
-                "trho",
-                mesh_.time().timeName(),
-                mesh_,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
+            "trho",
+            mesh_.time().timeName(),
             mesh_,
-            rho_
-        )
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh_,
+        rho_
     );
 
     if (phases_.size())
@@ -152,24 +146,19 @@ Foam::functionObjects::energyTransport::Cp() const
         return tCp;
     }
 
-    tmp<volScalarField> tCp
+    return tmp<volScalarField>::New
     (
-        new volScalarField
+        IOobject
         (
-            IOobject
-            (
-                "tCp",
-                mesh_.time().timeName(),
-                mesh_,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
+            "tCp",
+            mesh_.time().timeName(),
             mesh_,
-            Cp_
-        )
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh_,
+        Cp_
     );
-
-    return tCp;
 }
 
 
@@ -187,24 +176,19 @@ Foam::functionObjects::energyTransport::kappa() const
         return tkappa;
     }
 
-    tmp<volScalarField> tkappa
+    return tmp<volScalarField>::New
     (
-        new volScalarField
+        IOobject
         (
-            IOobject
-            (
-                "tkappa",
-                mesh_.time().timeName(),
-                mesh_,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
+            "tkappa",
+            mesh_.time().timeName(),
             mesh_,
-            kappa_
-        )
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh_,
+        kappa_
     );
-
-    return tkappa;
 }
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -430,21 +414,18 @@ bool Foam::functionObjects::energyTransport::execute()
 
         const surfaceScalarField CpPhi(rhoCp*phi);
 
-        tmp<volScalarField> trhoCp
+        auto trhoCp = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    "trhoCp",
-                    mesh_.time().timeName(),
-                    mesh_,
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
-                ),
+                "trhoCp",
+                mesh_.time().timeName(),
                 mesh_,
-                rhoCp
-            )
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            rhoCp
         );
 
         for (label i = 0; i <= nCorr_; i++)
diff --git a/src/functionObjects/solvers/scalarTransport/scalarTransport.C b/src/functionObjects/solvers/scalarTransport/scalarTransport.C
index 0045bc6e285c018dc7173c2764692f89db2c0835..7b89363a81f8a3762e5c3a639a2d004148d148db 100644
--- a/src/functionObjects/solvers/scalarTransport/scalarTransport.C
+++ b/src/functionObjects/solvers/scalarTransport/scalarTransport.C
@@ -58,20 +58,17 @@ Foam::volScalarField& Foam::functionObjects::scalarTransport::transportedField()
 {
     if (!foundObject<volScalarField>(fieldName_))
     {
-        tmp<volScalarField> tfldPtr
+        auto tfldPtr = tmp<volScalarField>::New
         (
-            new volScalarField
+            IOobject
             (
-                IOobject
-                (
-                    fieldName_,
-                    mesh_.time().timeName(),
-                    mesh_,
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                mesh_
-            )
+                fieldName_,
+                mesh_.time().timeName(),
+                mesh_,
+                IOobject::MUST_READ,
+                IOobject::AUTO_WRITE
+            ),
+            mesh_
         );
         store(fieldName_, tfldPtr);
 
@@ -81,10 +78,7 @@ Foam::volScalarField& Foam::functionObjects::scalarTransport::transportedField()
         }
     }
 
-    return const_cast<volScalarField&>
-    (
-        lookupObject<volScalarField>(fieldName_)
-    );
+    return lookupObjectRef<volScalarField>(fieldName_);
 }
 
 
diff --git a/src/functionObjects/utilities/ensightWrite/ensightWrite.C b/src/functionObjects/utilities/ensightWrite/ensightWrite.C
index d04fe1e9a01a7280446a4913ada7e8479e5712b9..c228b5964a49144c9b95336b119f8088286d0d1a 100644
--- a/src/functionObjects/utilities/ensightWrite/ensightWrite.C
+++ b/src/functionObjects/utilities/ensightWrite/ensightWrite.C
@@ -109,19 +109,16 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict)
     //
     writeOpts_.noPatches(dict.lookupOrDefault("noPatches", false));
 
-    if (dict.found("patches"))
+    wordRes list;
+    if (dict.readIfPresent("patches", list))
     {
-        wordRes list(dict.lookup("patches"));
         list.uniq();
-
         writeOpts_.patchSelection(list);
     }
 
-    if (dict.found("faceZones"))
+    if (dict.readIfPresent("faceZones", list))
     {
-        wordRes list(dict.lookup("faceZones"));
         list.uniq();
-
         writeOpts_.faceZoneSelection(list);
     }
 
@@ -147,7 +144,7 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict)
     //
     // output fields
     //
-    dict.lookup("fields") >> selectFields_;
+    dict.readEntry("fields", selectFields_);
     selectFields_.uniq();
 
     return true;
diff --git a/src/functionObjects/utilities/removeRegisteredObject/removeRegisteredObject.C b/src/functionObjects/utilities/removeRegisteredObject/removeRegisteredObject.C
index e9776316f211ecd755307c5242bedccdc2849917..2441d6ab4826a8ea7afcc652bbea4f4870e572e9 100644
--- a/src/functionObjects/utilities/removeRegisteredObject/removeRegisteredObject.C
+++ b/src/functionObjects/utilities/removeRegisteredObject/removeRegisteredObject.C
@@ -74,7 +74,7 @@ bool Foam::functionObjects::removeRegisteredObject::read(const dictionary& dict)
 {
     regionFunctionObject::read(dict);
 
-    dict.lookup("objects") >> objectNames_;
+    dict.readEntry("objects", objectNames_);
 
     return true;
 }
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/averageCondition/averageCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/averageCondition/averageCondition.C
index 37e19ce07e77ef42f0cbd47f65337fb185962b1a..a4dc98cf613ebcc2edb8aa825f2a9baeda98eedd 100644
--- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/averageCondition/averageCondition.C
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/averageCondition/averageCondition.C
@@ -53,9 +53,9 @@ Foam::functionObjects::runTimeControls::averageCondition::averageCondition
 )
 :
     runTimeCondition(name, obr, dict, state),
-    functionObjectName_(dict.lookup("functionObject")),
-    fieldNames_(dict.lookup("fields")),
-    tolerance_(readScalar(dict.lookup("tolerance"))),
+    functionObjectName_(dict.get<word>("functionObject")),
+    fieldNames_(dict.get<wordList>("fields")),
+    tolerance_(dict.get<scalar>("tolerance")),
     window_(dict.lookupOrDefault<scalar>("window", -1)),
     totalTime_(fieldNames_.size(), obr_.time().deltaTValue()),
     resetOnRestart_(false)
@@ -71,7 +71,7 @@ Foam::functionObjects::runTimeControls::averageCondition::averageCondition
             if (dict.found(fieldName))
             {
                 const dictionary& valueDict = dict.subDict(fieldName);
-                totalTime_[fieldi] = readScalar(valueDict.lookup("totalTime"));
+                valueDict.readEntry("totalTime", totalTime_[fieldi]);
             }
         }
     }
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C
index 8bc3ac5e468ef8d3634c41c11d4dc3347d5d1752..1f77eb09d81d938ea02120f63d1c79b777f86dbc 100644
--- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C
@@ -76,8 +76,8 @@ equationInitialResidualCondition
 )
 :
     runTimeCondition(name, obr, dict, state),
-    fieldNames_(dict.lookup("fields")),
-    value_(readScalar(dict.lookup("value"))),
+    fieldNames_(dict.get<wordList>("fields")),
+    value_(dict.get<scalar>("value")),
     timeStart_(dict.lookupOrDefault("timeStart", -GREAT)),
     mode_(operatingModeNames.lookup("mode", dict))
 {
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C
index f23e69a3ea0226f92f71a433a9b29be77193877e..874c96a6abdc483a3c2fcae4129a7c1693cfdb88 100644
--- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C
@@ -60,8 +60,8 @@ equationMaxIterCondition
 )
 :
     runTimeCondition(name, obr, dict, state),
-    fieldNames_(dict.lookup("fields")),
-    threshold_(readLabel(dict.lookup("threshold"))),
+    fieldNames_(dict.get<wordList>("fields")),
+    threshold_(dict.get<label>("threshold")),
     startIter_(dict.lookupOrDefault("startIter", 2))
 {
     if (!fieldNames_.size())
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/minMaxCondition/minMaxCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/minMaxCondition/minMaxCondition.C
index e7b2062fb5585d7e86304a6e1b121d6eb8389d31..d87644e931e85835311a5d32ae93cfb82825c543 100644
--- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/minMaxCondition/minMaxCondition.C
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/minMaxCondition/minMaxCondition.C
@@ -83,10 +83,10 @@ Foam::functionObjects::runTimeControls::minMaxCondition::minMaxCondition
 )
 :
     runTimeCondition(name, obr, dict, state),
-    functionObjectName_(dict.lookup("functionObject")),
+    functionObjectName_(dict.get<word>("functionObject")),
     mode_(modeTypeNames_.lookup("mode", dict)),
-    fieldNames_(dict.lookup("fields")),
-    value_(readScalar(dict.lookup("value")))
+    fieldNames_(dict.get<wordList>("fields")),
+    value_(dict.get<scalar>("value"))
 {}
 
 
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/minTimeStepCondition/minTimeStepCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/minTimeStepCondition/minTimeStepCondition.C
index e46070d494464358b78c18dfbeea0d6a6a866be2..50b05b611ea26f38b2544f77fa74464c28a62334 100644
--- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/minTimeStepCondition/minTimeStepCondition.C
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/minTimeStepCondition/minTimeStepCondition.C
@@ -59,7 +59,7 @@ minTimeStepCondition
 )
 :
     runTimeCondition(name, obr, dict, state),
-    minValue_(readScalar(dict.lookup("minValue")))
+    minValue_(dict.get<scalar>("minValue"))
 {}
 
 
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/runTimeCondition/runTimeConditionNew.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/runTimeCondition/runTimeConditionNew.C
index 5f5d878bae8a946208efc30a1025c1a9bd7aece6..cff1d3ecfaaf0fde7f75297dfa7f1fb932ff8c15 100644
--- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/runTimeCondition/runTimeConditionNew.C
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/runTimeCondition/runTimeConditionNew.C
@@ -36,7 +36,7 @@ Foam::functionObjects::runTimeControls::runTimeCondition::New
     stateFunctionObject& state
 )
 {
-    const word conditionType(dict.lookup("type"));
+    const word conditionType(dict.get<word>("type"));
 
     Info<< "Selecting runTimeCondition " << conditionType << endl;
 
@@ -52,7 +52,8 @@ Foam::functionObjects::runTimeControls::runTimeCondition::New
             << exit(FatalError);
     }
 
-    return autoPtr<runTimeCondition>
+    return
+        autoPtr<runTimeCondition>
         (
             cstrIter()(conditionName, obr, dict, state)
         );
diff --git a/src/functionObjects/utilities/thermoCoupleProbes/thermoCoupleProbes.C b/src/functionObjects/utilities/thermoCoupleProbes/thermoCoupleProbes.C
index 6c1cfd9bab69e98fd4084d211ef1ef5f32bbf9ad..6b7a1e709dc0b8f148de167c273e04a50fa0563b 100644
--- a/src/functionObjects/utilities/thermoCoupleProbes/thermoCoupleProbes.C
+++ b/src/functionObjects/utilities/thermoCoupleProbes/thermoCoupleProbes.C
@@ -56,7 +56,7 @@ Foam::functionObjects::thermoCoupleProbes::thermoCoupleProbes
     probes(name, runTime, dict, loadFromFiles, false),
     ODESystem(),
     UName_(dict.lookupOrDefault<word>("U", "U")),
-    radiationFieldName_(dict.lookup("radiationField")),
+    radiationFieldName_(dict.get<word>("radiationField")),
     thermo_(mesh_.lookupObject<fluidThermo>(basicThermo::dictName)),
     odeSolver_(nullptr),
     Ttc_()
@@ -71,7 +71,7 @@ Foam::functionObjects::thermoCoupleProbes::thermoCoupleProbes
     dictionary probeDict;
     if (getDict(typeName, probeDict))
     {
-        probeDict.lookup("Tc") >> Ttc_;
+        probeDict.readEntry("Tc", Ttc_);
     }
     else
     {
@@ -198,10 +198,10 @@ bool Foam::functionObjects::thermoCoupleProbes::read(const dictionary& dict)
 {
     if (probes::read(dict))
     {
-        rho_ = readScalar(dict.lookup("rho"));
-        Cp_ = readScalar(dict.lookup("Cp"));
-        d_ = readScalar(dict.lookup("d"));
-        epsilon_ = readScalar(dict.lookup("epsilon"));
+        dict.readEntry("rho", rho_);
+        dict.readEntry("Cp", Cp_);
+        dict.readEntry("d", d_);
+        dict.readEntry("epsilon", epsilon_);
         return true;
     }
 
diff --git a/src/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C b/src/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C
index ed48e24fcf45620d36a88ab4cdfdc6e0b151780c..a45099d32824b79bbdc7dc120bc018f527c64582 100644
--- a/src/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C
+++ b/src/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C
@@ -115,8 +115,8 @@ bool Foam::functionObjects::timeActivatedFileUpdate::read
 {
     functionObject::read(dict);
 
-    dict.lookup("fileToUpdate") >> fileToUpdate_;
-    dict.lookup("timeVsFile") >> timeVsFile_;
+    dict.readEntry("fileToUpdate", fileToUpdate_);
+    dict.readEntry("timeVsFile", timeVsFile_);
 
     lastIndex_ = -1;
     fileToUpdate_.expand();
diff --git a/src/functionObjects/utilities/vtkWrite/vtkWrite.C b/src/functionObjects/utilities/vtkWrite/vtkWrite.C
index c0d66f29785dd5372bd7eb3879c93de5562e10c1..99409e45b1ace7a83d965f2cf5ed0898bb81e93f 100644
--- a/src/functionObjects/utilities/vtkWrite/vtkWrite.C
+++ b/src/functionObjects/utilities/vtkWrite/vtkWrite.C
@@ -87,7 +87,7 @@ bool Foam::functionObjects::vtkWrite::read(const dictionary& dict)
     writeOpts_.ascii
     (
         dict.found("format")
-     && (IOstream::formatEnum(dict.lookup("format")) == IOstream::ASCII)
+     && (IOstream::formatEnum(dict.get<word>("format")) == IOstream::ASCII)
     );
 
     // FUTURE?
@@ -115,7 +115,7 @@ bool Foam::functionObjects::vtkWrite::read(const dictionary& dict)
     //
     // output fields
     //
-    dict.lookup("fields") >> selectFields_;
+    dict.readEntry("fields", selectFields_);
     selectFields_.uniq();
 
     return true;
diff --git a/src/functionObjects/utilities/writeDictionary/writeDictionary.C b/src/functionObjects/utilities/writeDictionary/writeDictionary.C
index 8e9625f0f5980ac0f035a9f06fc3765251fa4d50..a81e5a718b5ee1c2ff27f5740c1e343f60007e37 100644
--- a/src/functionObjects/utilities/writeDictionary/writeDictionary.C
+++ b/src/functionObjects/utilities/writeDictionary/writeDictionary.C
@@ -125,7 +125,7 @@ bool Foam::functionObjects::writeDictionary::read(const dictionary& dict)
 {
     regionFunctionObject::read(dict);
 
-    wordList dictNames(dict.lookup("dictNames"));
+    wordList dictNames(dict.get<wordList>("dictNames"));
     wordHashSet uniqueNames(dictNames);
     dictNames_ = uniqueNames.toc();
 
@@ -134,9 +134,9 @@ bool Foam::functionObjects::writeDictionary::read(const dictionary& dict)
     Info<< type() << " " << name() << ": monitoring dictionaries:" << nl;
     if (dictNames_.size())
     {
-        forAll(dictNames_, i)
+        for (const word & dictName : dictNames_)
         {
-            Info<< "    " << dictNames_[i] << endl;
+            Info<< "    " << dictName << endl;
         }
     }
     else
diff --git a/src/functionObjects/utilities/writeObjects/writeObjects.C b/src/functionObjects/utilities/writeObjects/writeObjects.C
index c33d83db864594db950acaca7794cc69ed66e026..96579eb3d47f207e8c06ea98f7165d62ee3f8a18 100644
--- a/src/functionObjects/utilities/writeObjects/writeObjects.C
+++ b/src/functionObjects/utilities/writeObjects/writeObjects.C
@@ -90,15 +90,15 @@ bool Foam::functionObjects::writeObjects::read(const dictionary& dict)
     if (dict.found("field"))
     {
         objectNames_.setSize(1);
-        dict.lookup("field") >> objectNames_[0];
+        dict.readEntry("field", objectNames_[0]);
     }
     else if (dict.found("fields"))
     {
-        dict.lookup("fields") >> objectNames_;
+        dict.readEntry("fields", objectNames_);
     }
     else
     {
-        dict.lookup("objects") >> objectNames_;
+        dict.readEntry("objects", objectNames_);
     }
 
     writeOption_ = writeOptionNames_.lookupOrDefault