diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistry.C b/src/OpenFOAM/db/objectRegistry/objectRegistry.C
index 76b7bad5cb7f54fee93aedcda434f263c7ca1f26..b16e3886292b428b437d1ffada4c49a089e272e1 100644
--- a/src/OpenFOAM/db/objectRegistry/objectRegistry.C
+++ b/src/OpenFOAM/db/objectRegistry/objectRegistry.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2019 OpenFOAM Foundation
-    Copyright (C) 2015-2023 OpenCFD Ltd.
+    Copyright (C) 2015-2024 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -151,6 +151,44 @@ Foam::HashTable<Foam::wordHashSet> Foam::objectRegistry::classes() const
 }
 
 
+Foam::IOobject Foam::objectRegistry::newIOobject
+(
+    const word& name,
+    IOobjectOption::readOption rOpt,
+    IOobjectOption::writeOption wOpt,
+    IOobjectOption::registerOption regOpt
+) const
+{
+    return IOobject
+    (
+        name,
+        time().timeName(),  // instance
+        *this,
+        IOobjectOption(rOpt, wOpt, regOpt)
+    );
+}
+
+
+// FUTURE?
+//
+// Foam::IOobject Foam::objectRegistry::newIOobject_constant
+// (
+//     const word& name,
+//     IOobjectOption::readOption rOpt,
+//     IOobjectOption::writeOption wOpt,
+//     IOobjectOption::registerOption regOpt
+// ) const
+// {
+//     return IOobject
+//     (
+//         name,
+//         time().constant(),  // instance
+//         *this,
+//         IOobjectOption(rOpt, wOpt, regOpt)
+//     );
+// }
+
+
 Foam::label Foam::objectRegistry::count(const char* clsName) const
 {
     // No nullptr check - only called with string literals
diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistry.H b/src/OpenFOAM/db/objectRegistry/objectRegistry.H
index 6110ab36ad08e31f89944c0d525a2ffdeed9adbf..175d11a6183b61cf40d09dcc19d85ecbc720cef9 100644
--- a/src/OpenFOAM/db/objectRegistry/objectRegistry.H
+++ b/src/OpenFOAM/db/objectRegistry/objectRegistry.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2019 OpenFOAM Foundation
-    Copyright (C) 2016-2023 OpenCFD Ltd.
+    Copyright (C) 2016-2024 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -239,6 +239,23 @@ public:
         }
 
 
+    // Helper Functions
+
+        //- Create an IOobject at the current time instance (timeName).
+        //  By default the object is NO_READ/NO_WRITE/NO_REGISTER
+        IOobject newIOobject
+        (
+            //! The object name
+            const word& name,
+            //! The read option (default: NO_READ)
+            IOobjectOption::readOption rOpt = IOobjectOption::NO_READ,
+            //! The write option (default: NO_WRITE)
+            IOobjectOption::writeOption wOpt = IOobjectOption::NO_WRITE,
+            //! The register option (default: NO_REGISTER)
+            IOobjectOption::registerOption regOpt = IOobjectOption::NO_REGISTER
+        ) const;
+
+
     // Summary of classes
 
         //- A summary hash of classes used and their associated object names.
diff --git a/src/functionObjects/field/streamLine/streamLineParticle.C b/src/functionObjects/field/streamLine/streamLineParticle.C
index c18415d524a0733442c9c7fd976ccd267296cfa3..9b43342a44880374fedd57ca67da61ca0275d52e 100644
--- a/src/functionObjects/field/streamLine/streamLineParticle.C
+++ b/src/functionObjects/field/streamLine/streamLineParticle.C
@@ -394,14 +394,14 @@ void Foam::streamLineParticle::readFields(Cloud<streamLineParticle>& c)
 
     IOField<label> lifeTime
     (
-        c.fieldIOobject("lifeTime", IOobject::MUST_READ),
+        c.newIOobject("lifeTime", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, lifeTime);
 
     vectorFieldIOField sampledPositions
     (
-        c.fieldIOobject("sampledPositions", IOobject::MUST_READ),
+        c.newIOobject("sampledPositions", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, sampledPositions);
@@ -425,12 +425,12 @@ void Foam::streamLineParticle::writeFields(const Cloud<streamLineParticle>& c)
 
     IOField<label> lifeTime
     (
-        c.fieldIOobject("lifeTime", IOobject::NO_READ),
+        c.newIOobject("lifeTime", IOobject::NO_READ),
         np
     );
     vectorFieldIOField sampledPositions
     (
-        c.fieldIOobject("sampledPositions", IOobject::NO_READ),
+        c.newIOobject("sampledPositions", IOobject::NO_READ),
         np
     );
 
diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
index 895f8104ae704a24d03546f1a91ab514e706ebd0..76efc17bfd8e5a8fedd6feaa1c927c57cc515cad 100644
--- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
+++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
@@ -427,19 +427,19 @@ void Foam::wallBoundedParticle::readFields(TrackCloudType& c)
 
     IOField<point> localPosition
     (
-        c.fieldIOobject("position", IOobject::MUST_READ)
+        c.newIOobject("position", IOobject::MUST_READ)
     );
     c.checkFieldIOobject(c, localPosition);
 
     IOField<label> meshEdgeStart
     (
-        c.fieldIOobject("meshEdgeStart", IOobject::MUST_READ)
+        c.newIOobject("meshEdgeStart", IOobject::MUST_READ)
     );
     c.checkFieldIOobject(c, meshEdgeStart);
 
     IOField<label> diagEdge
     (
-        c.fieldIOobject("diagEdge", IOobject::MUST_READ)
+        c.newIOobject("diagEdge", IOobject::MUST_READ)
     );
     c.checkFieldIOobject(c, diagEdge);
 
@@ -464,17 +464,17 @@ void Foam::wallBoundedParticle::writeFields(const TrackCloudType& c)
 
     IOField<point> localPosition
     (
-        c.fieldIOobject("position", IOobject::NO_READ),
+        c.newIOobject("position", IOobject::NO_READ),
         np
     );
     IOField<label> meshEdgeStart
     (
-        c.fieldIOobject("meshEdgeStart", IOobject::NO_READ),
+        c.newIOobject("meshEdgeStart", IOobject::NO_READ),
         np
     );
     IOField<label> diagEdge
     (
-        c.fieldIOobject("diagEdge", IOobject::NO_READ),
+        c.newIOobject("diagEdge", IOobject::NO_READ),
         np
     );
 
diff --git a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C
index b57fe5c0f70f58cd8c4c6d8495b611c9d07cfbe8..766c3d2737cdde8b46bb0c0efedcd5e2c6b3b95d 100644
--- a/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C
+++ b/src/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineParticle.C
@@ -213,13 +213,13 @@ void Foam::wallBoundedStreamLineParticle::readFields
 
     IOField<label> lifeTime
     (
-        c.fieldIOobject("lifeTime", IOobject::MUST_READ)
+        c.newIOobject("lifeTime", IOobject::MUST_READ)
     );
     c.checkFieldIOobject(c, lifeTime);
 
     vectorFieldIOField sampledPositions
     (
-        c.fieldIOobject("sampledPositions", IOobject::MUST_READ)
+        c.newIOobject("sampledPositions", IOobject::MUST_READ)
     );
     c.checkFieldIOobject(c, sampledPositions);
 
@@ -244,12 +244,12 @@ void Foam::wallBoundedStreamLineParticle::writeFields
 
     IOField<label> lifeTime
     (
-        c.fieldIOobject("lifeTime", IOobject::NO_READ),
+        c.newIOobject("lifeTime", IOobject::NO_READ),
         np
     );
     vectorFieldIOField sampledPositions
     (
-        c.fieldIOobject("sampledPositions", IOobject::NO_READ),
+        c.newIOobject("sampledPositions", IOobject::NO_READ),
         np
     );
 
diff --git a/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C b/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C
index c50c4e35018c00d6e1e887e026c14fccc311dd40..30a2f6f72af41664fbf777dfe7d9cf00111be584 100644
--- a/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C
+++ b/src/lagrangian/DSMC/parcels/Templates/DSMCParcel/DSMCParcelIO.C
@@ -91,15 +91,15 @@ void Foam::DSMCParcel<ParcelType>::readFields(Cloud<DSMCParcel<ParcelType>>& c)
 
     ParcelType::readFields(c);
 
-    IOField<vector> U(c.fieldIOobject("U", IOobject::MUST_READ), readOnProc);
+    IOField<vector> U(c.newIOobject("U", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, U);
 
-    IOField<scalar> Ei(c.fieldIOobject("Ei", IOobject::MUST_READ), readOnProc);
+    IOField<scalar> Ei(c.newIOobject("Ei", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, Ei);
 
     IOField<label> typeId
     (
-        c.fieldIOobject("typeId", IOobject::MUST_READ),
+        c.newIOobject("typeId", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, typeId);
@@ -126,9 +126,9 @@ void Foam::DSMCParcel<ParcelType>::writeFields
     const label np = c.size();
     const bool writeOnProc = c.size();
 
-    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
-    IOField<scalar> Ei(c.fieldIOobject("Ei", IOobject::NO_READ), np);
-    IOField<label> typeId(c.fieldIOobject("typeId", IOobject::NO_READ), np);
+    IOField<vector> U(c.newIOobject("U", IOobject::NO_READ), np);
+    IOField<scalar> Ei(c.newIOobject("Ei", IOobject::NO_READ), np);
+    IOField<label> typeId(c.newIOobject("typeId", IOobject::NO_READ), np);
 
     label i = 0;
     for (const DSMCParcel<ParcelType>& p : c)
diff --git a/src/lagrangian/basic/Cloud/Cloud.H b/src/lagrangian/basic/Cloud/Cloud.H
index 9bc8e5c37d0b4559fe35dc7c8bb2c653419e71eb..9d4c842dac09f0d61736bb0c3e6c518006c4a492 100644
--- a/src/lagrangian/basic/Cloud/Cloud.H
+++ b/src/lagrangian/basic/Cloud/Cloud.H
@@ -226,13 +226,6 @@ public:
 
         // Read
 
-            //- Helper to construct IOobject for field and current time.
-            IOobject fieldIOobject
-            (
-                const word& fieldName,
-                IOobjectOption::readOption rOpt = IOobjectOption::NO_READ
-            ) const;
-
             //- Check lagrangian data field
             template<class DataType>
             void checkFieldIOobject
@@ -287,6 +280,20 @@ public:
             //  Stores the particles global positions in the database
             //  for use during mapping.
             void storeGlobalPositions() const;
+
+
+    // Housekeeping
+
+        //- Helper to construct IOobject for field and current time.
+        FOAM_DEPRECATED_FOR(2024-01, "newIOobject()")
+        IOobject fieldIOobject
+        (
+            const word& fieldName,
+            IOobjectOption::readOption rOpt = IOobjectOption::NO_READ
+        ) const
+        {
+            return this->newIOobject(fieldName, rOpt);
+        }
 };
 
 
diff --git a/src/lagrangian/basic/Cloud/CloudIO.C b/src/lagrangian/basic/Cloud/CloudIO.C
index 70f14cac28676cf9e9f5a6fac3459e0bf664dab4..d804f755c7a824ce13daf523c59e5758af84dc42 100644
--- a/src/lagrangian/basic/Cloud/CloudIO.C
+++ b/src/lagrangian/basic/Cloud/CloudIO.C
@@ -177,25 +177,6 @@ Foam::Cloud<ParticleType>::Cloud
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class ParticleType>
-Foam::IOobject Foam::Cloud<ParticleType>::fieldIOobject
-(
-    const word& fieldName,
-    IOobjectOption::readOption rOpt
-) const
-{
-    return IOobject
-    (
-        fieldName,
-        time().timeName(),
-        *this,
-        rOpt,
-        IOobjectOption::NO_WRITE,
-        IOobjectOption::NO_REGISTER
-    );
-}
-
-
 template<class ParticleType>
 template<class DataType>
 void Foam::Cloud<ParticleType>::checkFieldIOobject
diff --git a/src/lagrangian/basic/injectedParticle/injectedParticleIO.C b/src/lagrangian/basic/injectedParticle/injectedParticleIO.C
index 5a44f4caa50c19e899bad9b68341454710df63c8..e310d25a56c32f05bc4399c8627cc494a55c7a0f 100644
--- a/src/lagrangian/basic/injectedParticle/injectedParticleIO.C
+++ b/src/lagrangian/basic/injectedParticle/injectedParticleIO.C
@@ -104,16 +104,16 @@ void Foam::injectedParticle::readFields(Cloud<injectedParticle>& c)
 
     particle::readFields(c);
 
-    IOField<label> tag(c.fieldIOobject("tag", IOobject::MUST_READ));
+    IOField<label> tag(c.newIOobject("tag", IOobject::MUST_READ));
     c.checkFieldIOobject(c, tag);
 
-    IOField<scalar> soi(c.fieldIOobject("soi", IOobject::MUST_READ));
+    IOField<scalar> soi(c.newIOobject("soi", IOobject::MUST_READ));
     c.checkFieldIOobject(c, soi);
 
-    IOField<scalar> d(c.fieldIOobject("d", IOobject::MUST_READ));
+    IOField<scalar> d(c.newIOobject("d", IOobject::MUST_READ));
     c.checkFieldIOobject(c, d);
 
-    IOField<vector> U(c.fieldIOobject("U", IOobject::MUST_READ));
+    IOField<vector> U(c.newIOobject("U", IOobject::MUST_READ));
     c.checkFieldIOobject(c, U);
 
     label i = 0;
@@ -144,10 +144,10 @@ void Foam::injectedParticle::writeFields(const Cloud<injectedParticle>& c)
 
     const label np = c.size();
 
-    IOField<label> tag(c.fieldIOobject("tag", IOobject::NO_READ), np);
-    IOField<scalar> soi(c.fieldIOobject("soi", IOobject::NO_READ), np);
-    IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
-    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
+    IOField<label> tag(c.newIOobject("tag", IOobject::NO_READ), np);
+    IOField<scalar> soi(c.newIOobject("soi", IOobject::NO_READ), np);
+    IOField<scalar> d(c.newIOobject("d", IOobject::NO_READ), np);
+    IOField<vector> U(c.newIOobject("U", IOobject::NO_READ), np);
 
     label i = 0;
 
diff --git a/src/lagrangian/basic/particle/particleTemplates.C b/src/lagrangian/basic/particle/particleTemplates.C
index 9169336118f71bbecb0498067a02aaed89444251..aa1c25ea7318cb5f0e8aff72b37928eb2e6d8f32 100644
--- a/src/lagrangian/basic/particle/particleTemplates.C
+++ b/src/lagrangian/basic/particle/particleTemplates.C
@@ -141,7 +141,7 @@ void Foam::particle::readFields(TrackCloudType& c)
 {
     const bool readOnProc = c.size();
 
-    IOobject procIO(c.fieldIOobject("origProcId", IOobject::MUST_READ));
+    IOobject procIO(c.newIOobject("origProcId", IOobject::MUST_READ));
 
     const bool haveFile = procIO.typeHeaderOk<IOField<label>>(true);
 
@@ -150,7 +150,7 @@ void Foam::particle::readFields(TrackCloudType& c)
 
     IOField<label> origId
     (
-        c.fieldIOobject("origId", IOobject::MUST_READ),
+        c.newIOobject("origId", IOobject::MUST_READ),
         readOnProc && haveFile
     );
     c.checkFieldIOobject(c, origId);
@@ -197,12 +197,12 @@ void Foam::particle::writeFields(const TrackCloudType& c)
 
     IOField<label> origProc
     (
-        c.fieldIOobject("origProcId", IOobject::NO_READ),
+        c.newIOobject("origProcId", IOobject::NO_READ),
         np
     );
     IOField<label> origId
     (
-        c.fieldIOobject("origId", IOobject::NO_READ),
+        c.newIOobject("origId", IOobject::NO_READ),
         np
     );
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C
index 1aa32adde2af3b25000e781115b15a1e2610e8f0..cf080b2aee39c7fdb1cdb2ff20f09ae85b5dbf77 100644
--- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelIO.C
@@ -101,33 +101,33 @@ void Foam::CollidingParcel<ParcelType>::readFields(CloudType& c)
 
     ParcelType::readFields(c);
 
-    IOField<vector> f(c.fieldIOobject("f", IOobject::MUST_READ), readOnProc);
+    IOField<vector> f(c.newIOobject("f", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, f);
 
     IOField<vector> angularMomentum
     (
-        c.fieldIOobject("angularMomentum", IOobject::MUST_READ),
+        c.newIOobject("angularMomentum", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, angularMomentum);
 
     IOField<vector> torque
     (
-        c.fieldIOobject("torque", IOobject::MUST_READ),
+        c.newIOobject("torque", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, torque);
 
     labelFieldCompactIOField collisionRecordsPairAccessed
     (
-        c.fieldIOobject("collisionRecordsPairAccessed", IOobject::MUST_READ),
+        c.newIOobject("collisionRecordsPairAccessed", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldFieldIOobject(c, collisionRecordsPairAccessed);
 
     labelFieldCompactIOField collisionRecordsPairOrigProcOfOther
     (
-        c.fieldIOobject
+        c.newIOobject
         (
             "collisionRecordsPairOrigProcOfOther",
             IOobject::MUST_READ
@@ -138,7 +138,7 @@ void Foam::CollidingParcel<ParcelType>::readFields(CloudType& c)
 
     labelFieldCompactIOField collisionRecordsPairOrigIdOfOther
     (
-        c.fieldIOobject
+        c.newIOobject
         (
             "collisionRecordsPairOrigIdOfOther",
             IOobject::MUST_READ
@@ -149,28 +149,28 @@ void Foam::CollidingParcel<ParcelType>::readFields(CloudType& c)
 
     pairDataFieldCompactIOField collisionRecordsPairData
     (
-        c.fieldIOobject("collisionRecordsPairData", IOobject::MUST_READ),
+        c.newIOobject("collisionRecordsPairData", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldFieldIOobject(c, collisionRecordsPairData);
 
     labelFieldCompactIOField collisionRecordsWallAccessed
     (
-        c.fieldIOobject("collisionRecordsWallAccessed", IOobject::MUST_READ),
+        c.newIOobject("collisionRecordsWallAccessed", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldFieldIOobject(c, collisionRecordsWallAccessed);
 
     vectorFieldCompactIOField collisionRecordsWallPRel
     (
-        c.fieldIOobject("collisionRecordsWallPRel", IOobject::MUST_READ),
+        c.newIOobject("collisionRecordsWallPRel", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldFieldIOobject(c, collisionRecordsWallPRel);
 
     wallDataFieldCompactIOField collisionRecordsWallData
     (
-        c.fieldIOobject("collisionRecordsWallData", IOobject::MUST_READ),
+        c.newIOobject("collisionRecordsWallData", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldFieldIOobject(c, collisionRecordsWallData);
@@ -209,22 +209,22 @@ void Foam::CollidingParcel<ParcelType>::writeFields(const CloudType& c)
     const bool writeOnProc = c.size();
 
 
-    IOField<vector> f(c.fieldIOobject("f", IOobject::NO_READ), np);
+    IOField<vector> f(c.newIOobject("f", IOobject::NO_READ), np);
     IOField<vector> angMom
     (
-        c.fieldIOobject("angularMomentum", IOobject::NO_READ),
+        c.newIOobject("angularMomentum", IOobject::NO_READ),
         np
     );
-    IOField<vector> torque(c.fieldIOobject("torque", IOobject::NO_READ), np);
+    IOField<vector> torque(c.newIOobject("torque", IOobject::NO_READ), np);
 
     labelFieldCompactIOField collisionRecordsPairAccessed
     (
-        c.fieldIOobject("collisionRecordsPairAccessed", IOobject::NO_READ),
+        c.newIOobject("collisionRecordsPairAccessed", IOobject::NO_READ),
         np
     );
     labelFieldCompactIOField collisionRecordsPairOrigProcOfOther
     (
-        c.fieldIOobject
+        c.newIOobject
         (
             "collisionRecordsPairOrigProcOfOther",
             IOobject::NO_READ
@@ -233,27 +233,27 @@ void Foam::CollidingParcel<ParcelType>::writeFields(const CloudType& c)
     );
     labelFieldCompactIOField collisionRecordsPairOrigIdOfOther
     (
-        c.fieldIOobject("collisionRecordsPairOrigIdOfOther", IOobject::NO_READ),
+        c.newIOobject("collisionRecordsPairOrigIdOfOther", IOobject::NO_READ),
         np
     );
     pairDataFieldCompactIOField collisionRecordsPairData
     (
-        c.fieldIOobject("collisionRecordsPairData", IOobject::NO_READ),
+        c.newIOobject("collisionRecordsPairData", IOobject::NO_READ),
         np
     );
     labelFieldCompactIOField collisionRecordsWallAccessed
     (
-        c.fieldIOobject("collisionRecordsWallAccessed", IOobject::NO_READ),
+        c.newIOobject("collisionRecordsWallAccessed", IOobject::NO_READ),
         np
     );
     vectorFieldCompactIOField collisionRecordsWallPRel
     (
-        c.fieldIOobject("collisionRecordsWallPRel", IOobject::NO_READ),
+        c.newIOobject("collisionRecordsWallPRel", IOobject::NO_READ),
         np
     );
     wallDataFieldCompactIOField collisionRecordsWallData
     (
-        c.fieldIOobject("collisionRecordsWallData", IOobject::NO_READ),
+        c.newIOobject("collisionRecordsWallData", IOobject::NO_READ),
         np
     );
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
index a488b9e4f7e419caf74fe129457e8d0518bef19e..e660263e2bc3a689c2a4fa4cba753e69d8756a3b 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
@@ -126,77 +126,77 @@ void Foam::KinematicParcel<ParcelType>::readFields(CloudType& c)
 
     IOField<label> active
     (
-        c.fieldIOobject("active", IOobject::MUST_READ),
+        c.newIOobject("active", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, active);
 
     IOField<label> typeId
     (
-        c.fieldIOobject("typeId", IOobject::MUST_READ),
+        c.newIOobject("typeId", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, typeId);
 
     IOField<scalar> nParticle
     (
-        c.fieldIOobject("nParticle", IOobject::MUST_READ),
+        c.newIOobject("nParticle", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, nParticle);
 
     IOField<scalar> d
     (
-        c.fieldIOobject("d", IOobject::MUST_READ),
+        c.newIOobject("d", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, d);
 
     IOField<scalar> dTarget
     (
-        c.fieldIOobject("dTarget", IOobject::MUST_READ),
+        c.newIOobject("dTarget", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, dTarget);
 
     IOField<vector> U
     (
-        c.fieldIOobject("U", IOobject::MUST_READ),
+        c.newIOobject("U", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, U);
 
     IOField<scalar> rho
     (
-        c.fieldIOobject("rho", IOobject::MUST_READ),
+        c.newIOobject("rho", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, rho);
 
     IOField<scalar> age
     (
-        c.fieldIOobject("age", IOobject::MUST_READ),
+        c.newIOobject("age", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, age);
 
     IOField<scalar> tTurb
     (
-        c.fieldIOobject("tTurb", IOobject::MUST_READ),
+        c.newIOobject("tTurb", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, tTurb);
 
     IOField<vector> UTurb
     (
-        c.fieldIOobject("UTurb", IOobject::MUST_READ),
+        c.newIOobject("UTurb", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, UTurb);
 
     IOField<vector> UCorrect
     (
-        c.fieldIOobject("UCorrect", IOobject::MUST_READ),
+        c.newIOobject("UCorrect", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, UCorrect);
@@ -231,21 +231,21 @@ void Foam::KinematicParcel<ParcelType>::writeFields(const CloudType& c)
     const label np = c.size();
     const bool writeOnProc = c.size();
 
-    IOField<label> active(c.fieldIOobject("active", IOobject::NO_READ), np);
-    IOField<label> typeId(c.fieldIOobject("typeId", IOobject::NO_READ), np);
+    IOField<label> active(c.newIOobject("active", IOobject::NO_READ), np);
+    IOField<label> typeId(c.newIOobject("typeId", IOobject::NO_READ), np);
     IOField<scalar> nParticle
     (
-        c.fieldIOobject("nParticle", IOobject::NO_READ),
+        c.newIOobject("nParticle", IOobject::NO_READ),
         np
     );
-    IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
-    IOField<scalar> dTarget(c.fieldIOobject("dTarget", IOobject::NO_READ), np);
-    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
-    IOField<scalar> rho(c.fieldIOobject("rho", IOobject::NO_READ), np);
-    IOField<scalar> age(c.fieldIOobject("age", IOobject::NO_READ), np);
-    IOField<scalar> tTurb(c.fieldIOobject("tTurb", IOobject::NO_READ), np);
-    IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::NO_READ), np);
-    IOField<vector> UCorrect(c.fieldIOobject("UCorrect", IOobject::NO_READ), np);
+    IOField<scalar> d(c.newIOobject("d", IOobject::NO_READ), np);
+    IOField<scalar> dTarget(c.newIOobject("dTarget", IOobject::NO_READ), np);
+    IOField<vector> U(c.newIOobject("U", IOobject::NO_READ), np);
+    IOField<scalar> rho(c.newIOobject("rho", IOobject::NO_READ), np);
+    IOField<scalar> age(c.newIOobject("age", IOobject::NO_READ), np);
+    IOField<scalar> tTurb(c.newIOobject("tTurb", IOobject::NO_READ), np);
+    IOField<vector> UTurb(c.newIOobject("UTurb", IOobject::NO_READ), np);
+    IOField<vector> UCorrect(c.newIOobject("UCorrect", IOobject::NO_READ), np);
 
     label i = 0;
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C
index 581e53e5b2cb9ea2d53d93d0fd3d63b0c56c900b..0cf83e4e051ea2643214adfb7dfb5c40e109fbc0 100644
--- a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcelIO.C
@@ -94,7 +94,7 @@ void Foam::MPPICParcel<ParcelType>::readFields(CloudType& c)
 
     IOField<vector> UCorrect
     (
-        c.fieldIOobject("UCorrect", IOobject::MUST_READ),
+        c.newIOobject("UCorrect", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, UCorrect);
@@ -118,8 +118,7 @@ void Foam::MPPICParcel<ParcelType>::writeFields(const CloudType& c)
     const label np = c.size();
     const bool writeOnProc = c.size();
 
-    IOField<vector>
-        UCorrect(c.fieldIOobject("UCorrect", IOobject::NO_READ), np);
+    IOField<vector> UCorrect(c.newIOobject("UCorrect", IOobject::NO_READ), np);
 
     label i = 0;
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingHeterogeneousParcel/ReactingHeterogeneousParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingHeterogeneousParcel/ReactingHeterogeneousParcelIO.C
index a1109002f14b86adbf391d4c05c884aa54f50046..e577aa35b946dcd9036ced9be11a866f33d5c925 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingHeterogeneousParcel/ReactingHeterogeneousParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingHeterogeneousParcel/ReactingHeterogeneousParcelIO.C
@@ -93,7 +93,7 @@ void Foam::ReactingHeterogeneousParcel<ParcelType>::readFields
 
     IOField<scalar> mass0
     (
-        c.fieldIOobject("mass0", IOobject::MUST_READ),
+        c.newIOobject("mass0", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, mass0);
@@ -123,7 +123,7 @@ void Foam::ReactingHeterogeneousParcel<ParcelType>::readFields
         // Read F
         IOField<scalar> F
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "F" + name(i),
                 IOobject::MUST_READ
@@ -144,7 +144,7 @@ void Foam::ReactingHeterogeneousParcel<ParcelType>::readFields
     {
         IOField<scalar> Y
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "Y" + solidNames[j],
                 IOobject::MUST_READ
@@ -188,7 +188,7 @@ void Foam::ReactingHeterogeneousParcel<ParcelType>::writeFields
     const label np = c.size();
     const bool writeOnProc = c.size();
 
-    IOField<scalar> mass0(c.fieldIOobject("mass0", IOobject::NO_READ), np);
+    IOField<scalar> mass0(c.newIOobject("mass0", IOobject::NO_READ), np);
 
     label nF = 0;
     label i = 0;
@@ -208,7 +208,7 @@ void Foam::ReactingHeterogeneousParcel<ParcelType>::writeFields
     {
         IOField<scalar> F
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "F" + name(i),
                 IOobject::NO_READ
@@ -231,7 +231,7 @@ void Foam::ReactingHeterogeneousParcel<ParcelType>::writeFields
     {
         IOField<scalar> Y
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "Y" + solidNames[j],
                 IOobject::NO_READ
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
index f5e5987fa2c2920eec2f35a707f2eb47b75fff6a..bc65c1387b0c2a599ff88f6c66a91ede94c18ba6 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
@@ -119,7 +119,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::readFields
     {
         IOField<scalar> YGas
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "Y" + gasNames[j] + stateLabels[idGas],
                 IOobject::MUST_READ
@@ -139,7 +139,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::readFields
     {
         IOField<scalar> YLiquid
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "Y" + liquidNames[j] + stateLabels[idLiquid],
                  IOobject::MUST_READ
@@ -159,7 +159,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::readFields
     {
         IOField<scalar> YSolid
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "Y" + solidNames[j] + stateLabels[idSolid],
                 IOobject::MUST_READ
@@ -208,7 +208,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::writeFields
         {
             IOField<scalar> YGas
             (
-                c.fieldIOobject
+                c.newIOobject
                 (
                     "Y" + gasNames[j] + stateLabels[idGas],
                     IOobject::NO_READ
@@ -232,7 +232,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::writeFields
         {
             IOField<scalar> YLiquid
             (
-                c.fieldIOobject
+                c.newIOobject
                 (
                     "Y" + liquidNames[j] + stateLabels[idLiquid],
                     IOobject::NO_READ
@@ -256,7 +256,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::writeFields
         {
             IOField<scalar> YSolid
             (
-                c.fieldIOobject
+                c.newIOobject
                 (
                     "Y" + solidNames[j] + stateLabels[idSolid],
                     IOobject::NO_READ
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
index 9c4d324b5c30c1d339ce291f00ea81994e9777f2..70abbc7a31dba23d709752d09a4faea5a7595066 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
@@ -112,7 +112,7 @@ void Foam::ReactingParcel<ParcelType>::readFields
 
     IOField<scalar> mass0
     (
-        c.fieldIOobject("mass0", IOobject::MUST_READ),
+        c.newIOobject("mass0", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, mass0);
@@ -146,7 +146,7 @@ void Foam::ReactingParcel<ParcelType>::readFields
     {
         IOField<scalar> Y
         (
-            c.fieldIOobject
+            c.newIOobject
             (
                 "Y" + phaseTypes[j] + stateLabels[j],
                  IOobject::MUST_READ
@@ -187,7 +187,7 @@ void Foam::ReactingParcel<ParcelType>::writeFields
     const bool writeOnProc = c.size();
 
     {
-        IOField<scalar> mass0(c.fieldIOobject("mass0", IOobject::NO_READ), np);
+        IOField<scalar> mass0(c.newIOobject("mass0", IOobject::NO_READ), np);
 
         label i = 0;
         for (const ReactingParcel<ParcelType>& p : c)
@@ -210,7 +210,7 @@ void Foam::ReactingParcel<ParcelType>::writeFields
         {
             IOField<scalar> Y
             (
-                c.fieldIOobject
+                c.newIOobject
                 (
                     "Y" + phaseTypes[j] + stateLabels[j],
                     IOobject::NO_READ
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
index 410836a81629fb745f4e468793cb613422ae63ec..736d73dae417247c44e24b4da03c1324f41b4606 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
@@ -94,10 +94,10 @@ void Foam::ThermoParcel<ParcelType>::readFields(CloudType& c)
 
     ParcelType::readFields(c);
 
-    IOField<scalar> T(c.fieldIOobject("T", IOobject::MUST_READ), readOnProc);
+    IOField<scalar> T(c.newIOobject("T", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, T);
 
-    IOField<scalar> Cp(c.fieldIOobject("Cp", IOobject::MUST_READ), readOnProc);
+    IOField<scalar> Cp(c.newIOobject("Cp", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, Cp);
 
 
@@ -121,8 +121,8 @@ void Foam::ThermoParcel<ParcelType>::writeFields(const CloudType& c)
     const label np = c.size();
     const bool writeOnProc = c.size();
 
-    IOField<scalar> T(c.fieldIOobject("T", IOobject::NO_READ), np);
-    IOField<scalar> Cp(c.fieldIOobject("Cp", IOobject::NO_READ), np);
+    IOField<scalar> T(c.newIOobject("T", IOobject::NO_READ), np);
+    IOField<scalar> Cp(c.newIOobject("Cp", IOobject::NO_READ), np);
 
     label i = 0;
     for (const ThermoParcel<ParcelType>& p : c)
diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C
index e52aa5414598cb99ed0c9b37b57b0d18f3c10185..5818f23085aaea7927ed2b5c9ee1a478c9f46ef7 100644
--- a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C
+++ b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C
@@ -114,40 +114,40 @@ void Foam::molecule::readFields(Cloud<molecule>& mC)
 
     particle::readFields(mC);
 
-    IOField<tensor> Q(mC.fieldIOobject("Q", IOobject::MUST_READ), readOnProc);
+    IOField<tensor> Q(mC.newIOobject("Q", IOobject::MUST_READ), readOnProc);
     mC.checkFieldIOobject(mC, Q);
 
-    IOField<vector> v(mC.fieldIOobject("v", IOobject::MUST_READ), readOnProc);
+    IOField<vector> v(mC.newIOobject("v", IOobject::MUST_READ), readOnProc);
     mC.checkFieldIOobject(mC, v);
 
-    IOField<vector> a(mC.fieldIOobject("a", IOobject::MUST_READ), readOnProc);
+    IOField<vector> a(mC.newIOobject("a", IOobject::MUST_READ), readOnProc);
     mC.checkFieldIOobject(mC, a);
 
-    IOField<vector> pi(mC.fieldIOobject("pi", IOobject::MUST_READ), readOnProc);
+    IOField<vector> pi(mC.newIOobject("pi", IOobject::MUST_READ), readOnProc);
     mC.checkFieldIOobject(mC, pi);
 
     IOField<vector> tau
     (
-        mC.fieldIOobject("tau", IOobject::MUST_READ),
+        mC.newIOobject("tau", IOobject::MUST_READ),
         readOnProc
     );
     mC.checkFieldIOobject(mC, tau);
 
     IOField<vector> specialPosition
     (
-        mC.fieldIOobject("specialPosition", IOobject::MUST_READ),
+        mC.newIOobject("specialPosition", IOobject::MUST_READ),
         readOnProc
     );
     mC.checkFieldIOobject(mC, specialPosition);
 
     IOField<label> special
     (
-        mC.fieldIOobject("special", IOobject::MUST_READ),
+        mC.newIOobject("special", IOobject::MUST_READ),
         readOnProc
     );
     mC.checkFieldIOobject(mC, special);
 
-    IOField<label> id(mC.fieldIOobject("id", IOobject::MUST_READ), readOnProc);
+    IOField<label> id(mC.newIOobject("id", IOobject::MUST_READ), readOnProc);
     mC.checkFieldIOobject(mC, id);
 
     label i = 0;
@@ -174,48 +174,48 @@ void Foam::molecule::writeFields(const Cloud<molecule>& mC)
     const label np = mC.size();
     const bool writeOnProc = mC.size();
 
-    IOField<tensor> Q(mC.fieldIOobject("Q", IOobject::NO_READ), np);
-    IOField<vector> v(mC.fieldIOobject("v", IOobject::NO_READ), np);
-    IOField<vector> a(mC.fieldIOobject("a", IOobject::NO_READ), np);
-    IOField<vector> pi(mC.fieldIOobject("pi", IOobject::NO_READ), np);
-    IOField<vector> tau(mC.fieldIOobject("tau", IOobject::NO_READ), np);
+    IOField<tensor> Q(mC.newIOobject("Q", IOobject::NO_READ), np);
+    IOField<vector> v(mC.newIOobject("v", IOobject::NO_READ), np);
+    IOField<vector> a(mC.newIOobject("a", IOobject::NO_READ), np);
+    IOField<vector> pi(mC.newIOobject("pi", IOobject::NO_READ), np);
+    IOField<vector> tau(mC.newIOobject("tau", IOobject::NO_READ), np);
     IOField<vector> specialPosition
     (
-        mC.fieldIOobject("specialPosition", IOobject::NO_READ),
+        mC.newIOobject("specialPosition", IOobject::NO_READ),
         np
     );
-    IOField<label> special(mC.fieldIOobject("special", IOobject::NO_READ), np);
-    IOField<label> id(mC.fieldIOobject("id", IOobject::NO_READ), np);
+    IOField<label> special(mC.newIOobject("special", IOobject::NO_READ), np);
+    IOField<label> id(mC.newIOobject("id", IOobject::NO_READ), np);
 
     // Post processing fields
 
     IOField<vector> piGlobal
     (
-        mC.fieldIOobject("piGlobal", IOobject::NO_READ),
+        mC.newIOobject("piGlobal", IOobject::NO_READ),
         np
     );
 
     IOField<vector> tauGlobal
     (
-        mC.fieldIOobject("tauGlobal", IOobject::NO_READ),
+        mC.newIOobject("tauGlobal", IOobject::NO_READ),
         np
     );
 
     IOField<vector> orientation1
     (
-        mC.fieldIOobject("orientation1", IOobject::NO_READ),
+        mC.newIOobject("orientation1", IOobject::NO_READ),
         np
     );
 
     IOField<vector> orientation2
     (
-        mC.fieldIOobject("orientation2", IOobject::NO_READ),
+        mC.newIOobject("orientation2", IOobject::NO_READ),
         np
     );
 
     IOField<vector> orientation3
     (
-        mC.fieldIOobject("orientation3", IOobject::NO_READ),
+        mC.newIOobject("orientation3", IOobject::NO_READ),
         np
     );
 
diff --git a/src/lagrangian/solidParticle/solidParticleIO.C b/src/lagrangian/solidParticle/solidParticleIO.C
index eab74deb740196803e0a2df8f7c942b1b03e2333..379b26d566a54b35ac9050efe0cd3cb438aaa877 100644
--- a/src/lagrangian/solidParticle/solidParticleIO.C
+++ b/src/lagrangian/solidParticle/solidParticleIO.C
@@ -82,10 +82,10 @@ void Foam::solidParticle::readFields(Cloud<solidParticle>& c)
 
     particle::readFields(c);
 
-    IOField<scalar> d(c.fieldIOobject("d", IOobject::MUST_READ), readOnProc);
+    IOField<scalar> d(c.newIOobject("d", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, d);
 
-    IOField<vector> U(c.fieldIOobject("U", IOobject::MUST_READ), readOnProc);
+    IOField<vector> U(c.newIOobject("U", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, U);
 
     label i = 0;
@@ -105,8 +105,8 @@ void Foam::solidParticle::writeFields(const Cloud<solidParticle>& c)
     const label np = c.size();
     const bool writeOnProc = c.size();
 
-    IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
-    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
+    IOField<scalar> d(c.newIOobject("d", IOobject::NO_READ), np);
+    IOField<vector> U(c.newIOobject("U", IOobject::NO_READ), np);
 
     label i = 0;
     for (const solidParticle& p : c)
diff --git a/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C b/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C
index feb807b5ecea82cc11752db0003fcf6a11e9e663..59414e7d307726fa573125c136343c1f9cd11d5c 100644
--- a/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C
+++ b/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcelIO.C
@@ -139,85 +139,85 @@ void Foam::SprayParcel<ParcelType>::readFields
 
     ParcelType::readFields(c, compModel);
 
-    IOField<scalar> d0(c.fieldIOobject("d0", IOobject::MUST_READ), readOnProc);
+    IOField<scalar> d0(c.newIOobject("d0", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, d0);
 
     IOField<vector> position0
     (
-        c.fieldIOobject("position0", IOobject::MUST_READ),
+        c.newIOobject("position0", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, position0);
 
     IOField<scalar> sigma
     (
-        c.fieldIOobject("sigma", IOobject::MUST_READ),
+        c.newIOobject("sigma", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, sigma);
 
-    IOField<scalar> mu(c.fieldIOobject("mu", IOobject::MUST_READ), readOnProc);
+    IOField<scalar> mu(c.newIOobject("mu", IOobject::MUST_READ), readOnProc);
     c.checkFieldIOobject(c, mu);
 
     IOField<scalar> liquidCore
     (
-        c.fieldIOobject("liquidCore", IOobject::MUST_READ),
+        c.newIOobject("liquidCore", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, liquidCore);
 
     IOField<scalar> KHindex
     (
-        c.fieldIOobject("KHindex", IOobject::MUST_READ),
+        c.newIOobject("KHindex", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, KHindex);
 
     IOField<scalar> y
     (
-        c.fieldIOobject("y", IOobject::MUST_READ),
+        c.newIOobject("y", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, y);
 
     IOField<scalar> yDot
     (
-        c.fieldIOobject("yDot", IOobject::MUST_READ),
+        c.newIOobject("yDot", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, yDot);
 
     IOField<scalar> tc
     (
-        c.fieldIOobject("tc", IOobject::MUST_READ),
+        c.newIOobject("tc", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, tc);
 
     IOField<scalar> ms
     (
-        c.fieldIOobject("ms", IOobject::MUST_READ),
+        c.newIOobject("ms", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, ms);
 
     IOField<scalar> injector
     (
-        c.fieldIOobject("injector", IOobject::MUST_READ),
+        c.newIOobject("injector", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, injector);
 
     IOField<scalar> tMom
     (
-        c.fieldIOobject("tMom", IOobject::MUST_READ),
+        c.newIOobject("tMom", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, tMom);
 
     IOField<scalar> user
     (
-        c.fieldIOobject("user", IOobject::MUST_READ),
+        c.newIOobject("user", IOobject::MUST_READ),
         readOnProc
     );
     c.checkFieldIOobject(c, user);
@@ -265,31 +265,31 @@ void Foam::SprayParcel<ParcelType>::writeFields
     const label np = c.size();
     const bool writeOnProc = c.size();
 
-    IOField<scalar> d0(c.fieldIOobject("d0", IOobject::NO_READ), np);
+    IOField<scalar> d0(c.newIOobject("d0", IOobject::NO_READ), np);
     IOField<vector> position0
     (
-        c.fieldIOobject("position0", IOobject::NO_READ),
+        c.newIOobject("position0", IOobject::NO_READ),
         np
     );
-    IOField<scalar> sigma(c.fieldIOobject("sigma", IOobject::NO_READ), np);
-    IOField<scalar> mu(c.fieldIOobject("mu", IOobject::NO_READ), np);
+    IOField<scalar> sigma(c.newIOobject("sigma", IOobject::NO_READ), np);
+    IOField<scalar> mu(c.newIOobject("mu", IOobject::NO_READ), np);
     IOField<scalar> liquidCore
     (
-        c.fieldIOobject("liquidCore", IOobject::NO_READ),
+        c.newIOobject("liquidCore", IOobject::NO_READ),
         np
     );
-    IOField<scalar> KHindex(c.fieldIOobject("KHindex", IOobject::NO_READ), np);
-    IOField<scalar> y(c.fieldIOobject("y", IOobject::NO_READ), np);
-    IOField<scalar> yDot(c.fieldIOobject("yDot", IOobject::NO_READ), np);
-    IOField<scalar> tc(c.fieldIOobject("tc", IOobject::NO_READ), np);
-    IOField<scalar> ms(c.fieldIOobject("ms", IOobject::NO_READ), np);
+    IOField<scalar> KHindex(c.newIOobject("KHindex", IOobject::NO_READ), np);
+    IOField<scalar> y(c.newIOobject("y", IOobject::NO_READ), np);
+    IOField<scalar> yDot(c.newIOobject("yDot", IOobject::NO_READ), np);
+    IOField<scalar> tc(c.newIOobject("tc", IOobject::NO_READ), np);
+    IOField<scalar> ms(c.newIOobject("ms", IOobject::NO_READ), np);
     IOField<scalar> injector
     (
-        c.fieldIOobject("injector", IOobject::NO_READ),
+        c.newIOobject("injector", IOobject::NO_READ),
         np
     );
-    IOField<scalar> tMom(c.fieldIOobject("tMom", IOobject::NO_READ), np);
-    IOField<scalar> user(c.fieldIOobject("user", IOobject::NO_READ), np);
+    IOField<scalar> tMom(c.newIOobject("tMom", IOobject::NO_READ), np);
+    IOField<scalar> user(c.newIOobject("user", IOobject::NO_READ), np);
 
     label i = 0;
     for (const SprayParcel<ParcelType>& p : c)