diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C b/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C
index a43f73116e4bebd5f8f47a74dd9f10edf12f85d7..54b1305f27ed6d378682f44c0de1aec9280e0cb4 100644
--- a/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C
+++ b/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2022-2023 OpenCFD Ltd.
+    Copyright (C) 2022-2024 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -34,7 +34,7 @@ License
 Foam::UIPBstream::UIPBstream
 (
     const UPstream::commsTypes commsType,
-    const int fromProcNo,
+    const int rootProcNo,
     DynamicList<char>& receiveBuf,
     label& receiveBufPosition,
     const int tag,
@@ -45,11 +45,11 @@ Foam::UIPBstream::UIPBstream
 :
     UIPstreamBase
     (
-        commsType,
-        fromProcNo,
+        commsType,              // irrelevant
+        rootProcNo,             // normally UPstream::masterNo()
         receiveBuf,
         receiveBufPosition,
-        tag,
+        tag,                    // irrelevant
         comm,
         clearAtEnd,
         fmt
@@ -62,7 +62,7 @@ Foam::UIPBstream::UIPBstream
 Foam::IPBstream::IPBstream
 (
     const UPstream::commsTypes commsType,
-    const int fromProcNo,
+    const int rootProcNo,
     const label bufSize,
     const int tag,
     const label comm,
@@ -72,11 +72,11 @@ Foam::IPBstream::IPBstream
     Pstream(commsType, bufSize),
     UIPBstream
     (
-        commsType,
-        fromProcNo,
+        commsType,              // irrelevant
+        rootProcNo,             // normally UPstream::masterNo()
         Pstream::transferBuf_,
         UIPstreamBase::storedRecvBufPos_,   // Internal only
-        tag,
+        tag,                    // irrelevant
         comm,
         false,  // Do not clear Pstream::transferBuf_ if at end
         fmt
@@ -86,7 +86,7 @@ Foam::IPBstream::IPBstream
 
 Foam::IPBstream::IPBstream
 (
-    const int fromProcNo,
+    const int rootProcNo,
     const label comm,
     IOstreamOption::streamFormat fmt
 )
@@ -94,7 +94,25 @@ Foam::IPBstream::IPBstream
     IPBstream
     (
         UPstream::commsTypes::scheduled,    // irrelevant
-        fromProcNo,
+        rootProcNo,
+        label(0),  // bufSize
+        UPstream::msgType(),                // irrelevant
+        comm,
+        fmt
+    )
+{}
+
+
+Foam::IPBstream::IPBstream
+(
+    const label comm,
+    IOstreamOption::streamFormat fmt
+)
+:
+    IPBstream
+    (
+        UPstream::commsTypes::scheduled,    // irrelevant
+        UPstream::masterNo(),  // rootProcNo
         label(0),  // bufSize
         UPstream::msgType(),                // irrelevant
         comm,
diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H b/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H
index c71bb4b24c594db26153ee2af2dde9da7ec8300c..2f7eeea3df58d2df7ce76170bcebbdaea6da699b 100644
--- a/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H
+++ b/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H
@@ -127,11 +127,19 @@ public:
             IOstreamOption::streamFormat fmt = IOstreamOption::BINARY
         );
 
-        //- Construct for broadcast root with optional communicator,
-        //- write format
-        explicit IPBstream
+        //- Construct for broadcast root and communicator,
+        //- with optional read format
+        IPBstream
         (
             const int rootProcNo,           //!< normally UPstream::masterNo()
+            const label comm,
+            IOstreamOption::streamFormat fmt = IOstreamOption::BINARY
+        );
+
+        //- Construct with optional communicator and read format.
+        //- Uses UPstream::masterNo() root
+        explicit IPBstream
+        (
             const label comm = UPstream::worldComm,
             IOstreamOption::streamFormat fmt = IOstreamOption::BINARY
         );
diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C b/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C
index 487cdf6716cccd00dbe655082ab2ccc4da897b25..b68dc927a709dee58c924768adeb6291482be183 100644
--- a/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C
+++ b/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2022-2023 OpenCFD Ltd.
+    Copyright (C) 2022-2024 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -34,7 +34,7 @@ License
 Foam::UOPBstream::UOPBstream
 (
     const UPstream::commsTypes commsType,
-    const int toProcNo,
+    const int rootProcNo,
     DynamicList<char>& sendBuf,
     const int tag,
     const label comm,
@@ -42,14 +42,23 @@ Foam::UOPBstream::UOPBstream
     IOstreamOption::streamFormat fmt
 )
 :
-    UOPstreamBase(commsType, toProcNo, sendBuf, tag, comm, sendAtDestruct, fmt)
+    UOPstreamBase
+    (
+        commsType,              // irrelevant
+        rootProcNo,             // normally UPstream::masterNo()
+        sendBuf,
+        tag,                    // irrelevant
+        comm,
+        sendAtDestruct,
+        fmt
+    )
 {}
 
 
 Foam::OPBstream::OPBstream
 (
     const UPstream::commsTypes commsType,
-    const int toProcNo,
+    const int rootProcNo,
     const label bufSize,
     const int tag,
     const label comm,
@@ -59,10 +68,10 @@ Foam::OPBstream::OPBstream
     Pstream(commsType, bufSize),
     UOPBstream
     (
-        commsType,
-        toProcNo,
+        commsType,              // irrelevant
+        rootProcNo,             // normally UPstream::masterNo()
         Pstream::transferBuf_,
-        tag,
+        tag,                    // irrelevant
         comm,
         true,  // sendAtDestruct
         fmt
@@ -72,7 +81,25 @@ Foam::OPBstream::OPBstream
 
 Foam::OPBstream::OPBstream
 (
-    const int toProcNo,
+    const int rootProcNo,
+    const label comm,
+    IOstreamOption::streamFormat fmt
+)
+:
+    OPBstream
+    (
+        UPstream::commsTypes::scheduled,    // irrelevant
+        rootProcNo,
+        label(0),  // bufSize
+        UPstream::msgType(),                // irrelevant
+        comm,
+        fmt
+    )
+{}
+
+
+Foam::OPBstream::OPBstream
+(
     const label comm,
     IOstreamOption::streamFormat fmt
 )
@@ -80,7 +107,7 @@ Foam::OPBstream::OPBstream
     OPBstream
     (
         UPstream::commsTypes::scheduled,    // irrelevant
-        toProcNo,
+        UPstream::masterNo(),  // rootProcNo
         label(0),  // bufSize
         UPstream::msgType(),                // irrelevant
         comm,
diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H b/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H
index 87d56367593778fa10149f94eb1904b426a11430..bf0445f04a37207a5f9d444c0c942c91e7f97cd2 100644
--- a/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H
+++ b/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H
@@ -144,11 +144,19 @@ public:
             IOstreamOption::streamFormat fmt = IOstreamOption::BINARY
         );
 
-        //- Construct for broadcast root with optional communicator,
-        //- write format
-        explicit OPBstream
+        //- Construct for broadcast root and communicator,
+        //- with optional write format
+        OPBstream
         (
             const int rootProcNo,           //!< normally UPstream::masterNo()
+            const label comm,
+            IOstreamOption::streamFormat fmt = IOstreamOption::BINARY
+        );
+
+        //- Construct with optional communicator and write format.
+        //- Uses UPstream::masterNo() root
+        explicit OPBstream
+        (
             const label comm = UPstream::worldComm,
             IOstreamOption::streamFormat fmt = IOstreamOption::BINARY
         );
diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C
index 7bba29d4fbb798de37e98df1c129ab7ddd7e2dca..b41fafee10db47c66c2a5ea3f4f34cfb76aa86a5 100644
--- a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C
+++ b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C
@@ -41,20 +41,19 @@ void Foam::Pstream::broadcast(Type& value, const label comm)
         (
             reinterpret_cast<char*>(&value),
             sizeof(Type),
-            comm,
-            UPstream::masterNo()
+            comm
         );
     }
     else if (UPstream::is_parallel(comm))
     {
         if (UPstream::master(comm))
         {
-            OPBstream os(UPstream::masterNo(), comm);
+            OPBstream os(comm);
             os << value;
         }
         else  // UPstream::is_subrank(comm)
         {
-            IPBstream is(UPstream::masterNo(), comm);
+            IPBstream is(comm);
             is >> value;
         }
     }
@@ -68,12 +67,12 @@ void Foam::Pstream::broadcasts(const label comm, Type& arg1, Args&&... args)
     {
         if (UPstream::master(comm))
         {
-            OPBstream os(UPstream::masterNo(), comm);
+            OPBstream os(comm);
             Detail::outputLoop(os, arg1, std::forward<Args>(args)...);
         }
         else  // UPstream::is_subrank(comm)
         {
-            IPBstream is(UPstream::masterNo(), comm);
+            IPBstream is(comm);
             Detail::inputLoop(is, arg1, std::forward<Args>(args)...);
         }
     }
@@ -98,8 +97,7 @@ void Foam::Pstream::broadcastList(ListType& list, const label comm)
             (
                 reinterpret_cast<char*>(&len),
                 sizeof(label),
-                comm,
-                UPstream::masterNo()
+                comm
             );
 
             if (UPstream::is_subrank(comm))
@@ -113,8 +111,7 @@ void Foam::Pstream::broadcastList(ListType& list, const label comm)
                 (
                     list.data_bytes(),
                     list.size_bytes(),
-                    comm,
-                    UPstream::masterNo()
+                    comm
                 );
             }
         }
@@ -125,12 +122,12 @@ void Foam::Pstream::broadcastList(ListType& list, const label comm)
 
         if (UPstream::master(comm))
         {
-            OPBstream os(UPstream::masterNo(), comm);
+            OPBstream os(comm);
             os << list;
         }
         else  // UPstream::is_subrank(comm)
         {
-            IPBstream is(UPstream::masterNo(), comm);
+            IPBstream is(comm);
             is >> list;
         }
     }
diff --git a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C
index 100e87b22743fc13bda52274de82989a3ac94fe7..ac4ffc8e22921cc1abb7262ed08d57d808bfb6e2 100644
--- a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C
+++ b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C
@@ -2195,26 +2195,18 @@ bool Foam::fileOperations::masterUncollatedFileOperation::read
                 io.note()
             );
 
-            if (Pstream::master(UPstream::worldComm))
+            if (UPstream::master(UPstream::worldComm))
             {
-                OPBstream toAll
-                (
-                    UPstream::masterNo(),
-                    UPstream::worldComm,
-                    format
-                );
-                bool okWrite = io.writeData(toAll);
+                OPBstream os(UPstream::worldComm, format);
+
+                bool okWrite = io.writeData(os);
                 ok = ok && okWrite;
             }
             else
             {
-                IPBstream fromMaster
-                (
-                    UPstream::masterNo(),
-                    UPstream::worldComm,
-                    format
-                );
-                ok = io.readData(fromMaster);
+                IPBstream is(UPstream::worldComm, format);
+
+                ok = io.readData(is);
             }
         }
     }
diff --git a/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C b/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C
index 75996732c3bb307f2ae80b1ab281380b9eb2e82f..ea85088558196869d01eb328cda6725484ad924e 100644
--- a/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C
+++ b/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C
@@ -752,24 +752,16 @@ bool Foam::fileOperations::uncollatedFileOperation::read
 
         if (UPstream::master(UPstream::worldComm))
         {
-            OPBstream toAll
-            (
-                UPstream::masterNo(),
-                UPstream::worldComm,
-                format
-            );
-            bool okWrite = io.writeData(toAll);
+            OPBstream os(UPstream::worldComm, format);
+
+            bool okWrite = io.writeData(os);
             ok = ok && okWrite;
         }
         else
         {
-            IPBstream fromMaster
-            (
-                UPstream::masterNo(),
-                UPstream::worldComm,
-                format
-            );
-            ok = io.readData(fromMaster);
+            IPBstream is(UPstream::worldComm, format);
+
+            ok = io.readData(is);
         }
     }
 
diff --git a/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C b/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C
index 491b8f31ee0d17941d240b94b7f864b0790c1a1e..01c0195b81c37b4cd50de61dda8b50f71508904e 100644
--- a/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C
+++ b/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2022-2023 OpenCFD Ltd.
+    Copyright (C) 2022-2024 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -270,7 +270,7 @@ void Foam::fieldsDistributor::readFieldsImpl
         // Broadcast zero sized fields everywhere (if needed)
         // Send like a list of dictionaries
 
-        OPBstream toProcs(UPstream::masterNo());  // worldComm
+        OPBstream toProcs(UPstream::worldComm);
 
         const label nDicts = (subsetter ? fields.size() : label(0));
 
@@ -299,7 +299,7 @@ void Foam::fieldsDistributor::readFieldsImpl
     else
     {
         // Receive the broadcast...
-        IPBstream fromMaster(UPstream::masterNo());  // worldComm
+        IPBstream fromMaster(UPstream::worldComm);
 
         // But only consume where needed...
         if (!haveMeshOnProc.test(UPstream::myProcNo()))