diff --git a/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H b/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H
index ccbf8fd3e5e91412a5e2d95d5e843d2cb150a9e8..1f9ade080838ee1e49db8da7a524e12e6f59f9ec 100644
--- a/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H
+++ b/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017-2020 OpenCFD Ltd.
+    Copyright (C) 2017-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -60,7 +60,7 @@ class phaseModel
 :
     public volScalarField
 {
-    // Private data
+    // Private Data
 
         //- Reference to the phaseSystem to which this phase belongs
         const phaseSystem& fluid_;
@@ -209,8 +209,8 @@ public:
             const label patchi
         ) const;
 
-        //- Query each thermo for dpdt
-        Switch dpdt() const
+        //- Query thermo for dpdt
+        bool dpdt() const
         {
              return thermo().dpdt();
         }
diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C
index b2b368f8adcb3c96002982162c594b608c92731a..b25fd1d89112be68d98070b8540f1ad737d2087e 100644
--- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C
+++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2017-2020 OpenCFD Ltd.
+    Copyright (C) 2017-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -36,8 +36,7 @@ License
 #include "energyJumpFvPatchScalarField.H"
 #include "energyJumpAMIFvPatchScalarField.H"
 
-
-/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
@@ -55,7 +54,7 @@ Foam::wordList Foam::basicThermo::heBoundaryBaseTypes()
 {
     const volScalarField::Boundary& tbf = this->T_.boundaryField();
 
-    wordList hbt(tbf.size(), word::null);
+    wordList hbt(tbf.size());
 
     forAll(tbf, patchi)
     {
@@ -86,7 +85,7 @@ Foam::wordList Foam::basicThermo::heBoundaryTypes()
 {
     const volScalarField::Boundary& tbf = this->T_.boundaryField();
 
-    wordList hbt = tbf.types();
+    wordList hbt(tbf.types());
 
     forAll(tbf, patchi)
     {
@@ -120,17 +119,16 @@ Foam::wordList Foam::basicThermo::heBoundaryTypes()
 }
 
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
 
 Foam::volScalarField& Foam::basicThermo::lookupOrConstruct
 (
     const fvMesh& mesh,
-    const word& name,
+    const word& fieldName,
     bool& isOwner
 )
 {
-    volScalarField* ptr =
-        mesh.objectRegistry::getObjectPtr<volScalarField>(name);
+    auto* ptr = mesh.objectRegistry::getObjectPtr<volScalarField>(fieldName);
 
     isOwner = !ptr;
 
@@ -140,7 +138,7 @@ Foam::volScalarField& Foam::basicThermo::lookupOrConstruct
         (
             IOobject
             (
-                name,
+                fieldName,
                 mesh.time().timeName(),
                 mesh,
                 IOobject::MUST_READ,
@@ -157,6 +155,8 @@ Foam::volScalarField& Foam::basicThermo::lookupOrConstruct
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
 Foam::basicThermo::basicThermo
 (
     const fvMesh& mesh,
@@ -177,10 +177,12 @@ Foam::basicThermo::basicThermo
 
     phaseName_(phaseName),
 
-    p_(lookupOrConstruct(mesh, "p", pOwner_)),
+    pOwner_(false),
+    TOwner_(false),
+    dpdt_(getOrDefault<bool>("dpdt", true)),
 
+    p_(lookupOrConstruct(mesh, "p", pOwner_)),
     T_(lookupOrConstruct(mesh, phasePropertyName("T"), TOwner_)),
-    TOwner_(getOrDefault<Switch>("updateT", TOwner_)),
 
     alpha_
     (
@@ -194,10 +196,10 @@ Foam::basicThermo::basicThermo
         ),
         mesh,
         dimensionedScalar(dimensionSet(1, -1, -1, 0, 0), Zero)
-    ),
-
-    dpdt_(getOrDefault<Switch>("dpdt", true))
-{}
+    )
+{
+    this->readIfPresent("updateT", TOwner_);  // Manual override
+}
 
 
 Foam::basicThermo::basicThermo
@@ -222,10 +224,12 @@ Foam::basicThermo::basicThermo
 
     phaseName_(phaseName),
 
-    p_(lookupOrConstruct(mesh, "p", pOwner_)),
+    pOwner_(false),
+    TOwner_(false),
+    dpdt_(getOrDefault<bool>("dpdt", true)),
 
+    p_(lookupOrConstruct(mesh, "p", pOwner_)),
     T_(lookupOrConstruct(mesh, phasePropertyName("T"), TOwner_)),
-    TOwner_(getOrDefault<Switch>("updateT", TOwner_)),
 
     alpha_
     (
@@ -239,10 +243,10 @@ Foam::basicThermo::basicThermo
         ),
         mesh,
         dimensionedScalar(dimensionSet(1, -1, -1, 0, 0), Zero)
-    ),
-
-    dpdt_(getOrDefault<Switch>("dpdt", true))
-{}
+    )
+{
+    this->readIfPresent("updateT", TOwner_);  // Manual override
+}
 
 
 Foam::basicThermo::basicThermo
@@ -266,10 +270,12 @@ Foam::basicThermo::basicThermo
 
     phaseName_(phaseName),
 
-    p_(lookupOrConstruct(mesh, "p", pOwner_)),
+    pOwner_(false),
+    TOwner_(false),
+    dpdt_(getOrDefault<bool>("dpdt", true)),
 
+    p_(lookupOrConstruct(mesh, "p", pOwner_)),
     T_(lookupOrConstruct(mesh, "T", TOwner_)),
-    TOwner_(getOrDefault<Switch>("updateT", TOwner_)),
 
     alpha_
     (
@@ -283,10 +289,10 @@ Foam::basicThermo::basicThermo
         ),
         mesh,
         dimensionedScalar(dimensionSet(1, -1, -1, 0, 0), Zero)
-    ),
-
-    dpdt_(getOrDefault<Switch>("dpdt", true))
+    )
 {
+    this->readIfPresent("updateT", TOwner_);  // Manual override
+
     if (debug)
     {
         Pout<< "Constructed shared thermo : mesh:" << mesh.name()
@@ -384,7 +390,7 @@ void Foam::basicThermo::validate
     )
     {
         FatalErrorInFunction
-            << "Supported energy types are " << phasePropertyName(a)
+            << "Supported energy types: " << phasePropertyName(a)
             << " and " << phasePropertyName(b)
             << ", thermodynamics package provides " << he().name()
             << exit(FatalError);
@@ -409,7 +415,7 @@ void Foam::basicThermo::validate
     )
     {
         FatalErrorInFunction
-            << "Supported energy types are " << phasePropertyName(a)
+            << "Supported energy types: " << phasePropertyName(a)
             << ", " << phasePropertyName(b)
             << " and " << phasePropertyName(c)
             << ", thermodynamics package provides " << he().name()
@@ -437,7 +443,7 @@ void Foam::basicThermo::validate
     )
     {
         FatalErrorInFunction
-            << "Supported energy types are " << phasePropertyName(a)
+            << "Supported energy types: " << phasePropertyName(a)
             << ", " << phasePropertyName(b)
             << ", " << phasePropertyName(c)
             << " and " << phasePropertyName(d)
diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H
index 0e799adc1d80778276c04b58066baea4b044faee..dcd7dce5dfe86e82236c38594bc45d376fe279a8 100644
--- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H
+++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
-    Copyright (C) 2017-2019 OpenCFD Ltd.
+    Copyright (C) 2017-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -65,55 +65,56 @@ class basicThermo
 :
     public IOdictionary
 {
-
 protected:
 
-    // Protected data
+    // Protected Data
 
         //- Phase-name
         const word& phaseName_;
 
+        //- Pressure created and stored by this instance
+        bool pOwner_;
 
-        // Fields
+        //- Temperature created and stored by this instance
+        bool TOwner_;
 
-            //- Pressure [Pa]
-            volScalarField& p_;
+        //- Include dpdt term in the enthalpy equation?
+        bool dpdt_;
 
-            bool pOwner_;
 
-            //- Temperature [K]
-            volScalarField& T_;
+    // Fields
 
-            bool TOwner_;
+        //- Pressure [Pa]
+        volScalarField& p_;
 
-            //- Laminar thermal diffusivity [kg/m/s]
-            volScalarField alpha_;
+        //- Temperature [K]
+        volScalarField& T_;
 
-        //- Should the dpdt term be included in the enthalpy equation
-        Switch dpdt_;
+        //- Laminar thermal diffusivity [kg/m/s]
+        volScalarField alpha_;
 
 
     // Protected Member Functions
 
-        //- Construct as copy (not implemented)
-        basicThermo(const basicThermo&);
-
-        //- Look up or construct field
+        //- Look up field from registry or construct and store
         static volScalarField& lookupOrConstruct
         (
             const fvMesh& mesh,
-            const word&,
-            bool& isOwner
+            const word& fieldName,
+            bool& isOwner  //!< Stored to registry by this instance
         );
 
         //- Return the enthalpy/internal energy field boundary types
-        //  by interrogating the temperature field boundary types
+        //- by interrogating the temperature field boundary types
         wordList heBoundaryTypes();
 
         //- Return the enthalpy/internal energy field boundary base types
-        //  by interrogating the temperature field boundary types
+        //- by interrogating the temperature field boundary types
         wordList heBoundaryBaseTypes();
 
+        //- No copy construct
+        basicThermo(const basicThermo&) = delete;
+
 
 public:
 
@@ -161,7 +162,7 @@ public:
         );
 
         //- Construct from mesh, phase name and explicit naming of the
-        //  dictionary (so it can be shared amongst phases).
+        //- dictionary (so it can be shared amongst phases).
         basicThermo
         (
             const fvMesh&,
@@ -228,7 +229,7 @@ public:
     virtual ~basicThermo();
 
 
-    // Member functions
+    // Member Functions
 
         static const word dictName;
 
@@ -243,7 +244,7 @@ public:
 
         word phasePropertyName(const word& name) const
         {
-            return basicThermo::phasePropertyName(name, phaseName_);
+            return IOobject::groupName(name, phaseName_);
         }
 
         static const basicThermo& lookupThermo(const fvPatchScalarField& pf);
@@ -307,14 +308,14 @@ public:
         //  i.e. rho = const
         virtual bool isochoric() const = 0;
 
-        //- Should the dpdt term be included in the enthalpy equation
-        Switch dpdt() const
+        //- True if dpdt term should be included in enthalpy equation
+        bool dpdt() const noexcept
         {
             return dpdt_;
         }
 
-        //- Should T be updated
-        Switch updateT() const
+        //- True if T should be updated
+        bool updateT() const noexcept
         {
             return TOwner_;
         }