diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp
index ae98aecdf50799e61aff1e9b607862acaa092f38..6efab91fb6b0f63536908a2849601de232a15b05 100644
--- a/src/language/PugsParser.cpp
+++ b/src/language/PugsParser.cpp
@@ -1,6 +1,7 @@
-#include <PugsOStream.hpp>
 #include <PugsParser.hpp>
 
+#include <iostream>
+
 #include <rang.hpp>
 
 #include <pegtl.hpp>
@@ -159,10 +160,10 @@ parser(const std::string& filename)
 
   const size_t grammar_issues = analyze<language::grammar>();
 
-  pout() << rang::fgB::yellow << "grammar_issues=" << rang::fg::reset << grammar_issues << '\n';
+  std::cout << rang::fgB::yellow << "grammar_issues=" << rang::fg::reset << grammar_issues << '\n';
 
-  pout() << rang::style::bold << "Parsing file " << rang::style::reset << rang::style::underline << filename
-         << rang::style::reset << " ...\n\n";
+  std::cout << rang::style::bold << "Parsing file " << rang::style::reset << rang::style::underline << filename
+            << rang::style::reset << " ...\n\n";
 
   read_input in(filename);
   try {
@@ -172,13 +173,13 @@ parser(const std::string& filename)
   }
   catch (const parse_error& e) {
     const auto p = e.positions.front();
-    perr() << rang::style::bold << p.source << ':' << p.line << ':' << p.byte_in_line << ": " << rang::style::reset
-           << rang::fgB::red << "error: " << rang::fg::reset << rang::style::bold << e.what() << rang::style::reset
-           << '\n'
-           << in.line_at(p) << '\n'
-           << std::string(p.byte_in_line, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << std::endl;
+    std::cerr << rang::style::bold << p.source << ':' << p.line << ':' << p.byte_in_line << ": " << rang::style::reset
+              << rang::fgB::red << "error: " << rang::fg::reset << rang::style::bold << e.what() << rang::style::reset
+              << '\n'
+              << in.line_at(p) << '\n'
+              << std::string(p.byte_in_line, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << std::endl;
     std::exit(1);
   }
 
-  pout() << "Parsed:\n" << name << std::endl;
+  std::cout << "Parsed:\n" << name << std::endl;
 }
diff --git a/src/main.cpp b/src/main.cpp
index a08658afed41b499c930f256cedf44d1592f4851..93ff1e39f0d3ad18c556d141f91754dcc1d4c211 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,4 +1,3 @@
-#include <PugsOStream.hpp>
 #include <PugsUtils.hpp>
 
 #include <rang.hpp>
@@ -25,6 +24,8 @@
 
 #include <SynchronizerManager.hpp>
 
+#include <iostream>
+
 #include <limits>
 #include <map>
 #include <regex>
@@ -45,7 +46,7 @@ main(int argc, char* argv[])
   SynchronizerManager::create();
 
   if (filename != "") {
-    pout() << "Reading (gmsh) " << rang::style::underline << filename << rang::style::reset << " ...\n";
+    std::cout << "Reading (gmsh) " << rang::style::underline << filename << rang::style::reset << " ...\n";
     Timer gmsh_timer;
     gmsh_timer.reset();
     GmshReader gmsh_reader(filename);
@@ -99,7 +100,7 @@ main(int argc, char* argv[])
             break;
           }
           default: {
-            perr() << "Unknown BCDescription\n";
+            std::cerr << "Unknown BCDescription\n";
             std::exit(1);
           }
           }
@@ -157,8 +158,8 @@ main(int argc, char* argv[])
                         NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
                        t, true);   // forces last output
 
-      pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green << t
-             << rang::fg::reset << " (" << iteration << " iterations)\n";
+      std::cout << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green
+                << t << rang::fg::reset << " (" << iteration << " iterations)\n";
 
       method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
 
@@ -219,7 +220,7 @@ main(int argc, char* argv[])
             break;
           }
           default: {
-            perr() << "Unknown BCDescription\n";
+            std::cerr << "Unknown BCDescription\n";
             std::exit(1);
           }
           }
@@ -275,8 +276,8 @@ main(int argc, char* argv[])
                         NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
                        t, true);   // forces last output
 
-      pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green << t
-             << rang::fg::reset << " (" << iteration << " iterations)\n";
+      std::cout << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green
+                << t << rang::fg::reset << " (" << iteration << " iterations)\n";
 
       method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
       break;
@@ -326,7 +327,7 @@ main(int argc, char* argv[])
             break;
           }
           default: {
-            perr() << "Unknown BCDescription\n";
+            std::cerr << "Unknown BCDescription\n";
             std::exit(1);
           }
           }
@@ -381,19 +382,19 @@ main(int argc, char* argv[])
                         NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}},
                        t, true);   // forces last output
 
-      pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green << t
-             << rang::fg::reset << " (" << iteration << " iterations)\n";
+      std::cout << "* " << rang::style::underline << "Final time" << rang::style::reset << ":  " << rang::fgB::green
+                << t << rang::fg::reset << " (" << iteration << " iterations)\n";
 
       method_cost_map["AcousticSolverWithMesh"] = timer.seconds();
       break;
     }
     }
 
-    pout() << "* " << rang::fgB::red << "Could not be uglier!" << rang::fg::reset << " (" << __FILE__ << ':' << __LINE__
-           << ")\n";
+    std::cout << "* " << rang::fgB::red << "Could not be uglier!" << rang::fg::reset << " (" << __FILE__ << ':'
+              << __LINE__ << ")\n";
 
   } else {
-    perr() << "Connectivity1D defined by number of nodes no more implemented\n";
+    std::cerr << "Connectivity1D defined by number of nodes no more implemented\n";
     std::exit(0);
   }
 
@@ -407,8 +408,8 @@ main(int argc, char* argv[])
   }
 
   for (const auto& method_cost : method_cost_map) {
-    pout() << "* [" << rang::fgB::cyan << std::setw(size) << std::left << method_cost.first << rang::fg::reset
-           << "] Execution time: " << rang::style::bold << method_cost.second << rang::style::reset << '\n';
+    std::cout << "* [" << rang::fgB::cyan << std::setw(size) << std::left << method_cost.first << rang::fg::reset
+              << "] Execution time: " << rang::style::bold << method_cost.second << rang::style::reset << '\n';
   }
 
   return 0;
diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp
index 1b815cdd023e066f4c8f4ee7fd0e058459da81e2..6b7e31a4057de6a854c72237ba8482ba7df0abf8 100644
--- a/src/mesh/Connectivity.hpp
+++ b/src/mesh/Connectivity.hpp
@@ -4,7 +4,6 @@
 #include <PugsAssert.hpp>
 #include <PugsMacros.hpp>
 
-#include <PugsOStream.hpp>
 #include <PugsUtils.hpp>
 
 #include <PugsTraits.hpp>
@@ -34,6 +33,7 @@
 
 #include <SynchronizerManager.hpp>
 
+#include <iostream>
 #include <set>
 
 class ConnectivityDescriptor;
@@ -208,7 +208,7 @@ class Connectivity final : public IConnectivity
   const auto&
   edgeOwner() const
   {
-    perr() << __FILE__ << ':' << __LINE__ << ": edge owner not built\n";
+    std::cerr << __FILE__ << ':' << __LINE__ << ": edge owner not built\n";
     std::terminate();
     return m_edge_owner;
   }
@@ -255,7 +255,7 @@ class Connectivity final : public IConnectivity
   const auto&
   edgeIsOwned() const
   {
-    perr() << __FILE__ << ':' << __LINE__ << ": edge is owned not built\n";
+    std::cerr << __FILE__ << ':' << __LINE__ << ": edge is owned not built\n";
     std::terminate();
     return m_edge_is_owned;
   }
diff --git a/src/mesh/ConnectivityComputer.cpp b/src/mesh/ConnectivityComputer.cpp
index b040c48890f23085b2d6de6a0a9e2fe894d07a87..b4f24fb692ed2fc1c42de307e20447e956d568a6 100644
--- a/src/mesh/ConnectivityComputer.cpp
+++ b/src/mesh/ConnectivityComputer.cpp
@@ -1,6 +1,8 @@
 #include <Connectivity.hpp>
 
 #include <ConnectivityComputer.hpp>
+
+#include <iostream>
 #include <map>
 
 template <typename ConnectivityType>
@@ -13,11 +15,12 @@ ConnectivityComputer::computeConnectivityMatrix(const ConnectivityType& connecti
   if (connectivity.isConnectivityMatrixBuilt(child_item_type, item_type)) {
     const ConnectivityMatrix& child_to_item_matrix = connectivity._getMatrix(child_item_type, item_type);
 
-    pout() << "computing connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n';
+    std::cout << "computing connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n';
 
     item_to_child_item_matrix = this->_computeInverse(child_to_item_matrix);
   } else {
-    perr() << "unable to compute connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n';
+    std::cerr << "unable to compute connectivity " << itemName(item_type) << " -> " << itemName(child_item_type)
+              << '\n';
     std::terminate();
   }
 
@@ -53,7 +56,7 @@ ConnectivityComputer::_computeInverse(const ConnectivityMatrix& item_to_child_ma
     size_t i = 0;
     for (const auto& [child_item_id, item_vector] : child_to_item_vector_map) {
       if (child_item_id != i) {
-        perr() << "sparse item numerotation NIY\n";
+        std::cerr << "sparse item numerotation NIY\n";
         std::exit(0);
       }
       ++i;
diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp
index 792bb0c18e9577e4afc8859b6c328777ea7c2928..0136c264c66b9cd00a2be037a1019d1c83886383 100644
--- a/src/mesh/ConnectivityDispatcher.cpp
+++ b/src/mesh/ConnectivityDispatcher.cpp
@@ -3,6 +3,7 @@
 
 #include <ItemOfItemType.hpp>
 
+#include <iostream>
 #include <unordered_map>
 
 template <int Dimension>
@@ -417,8 +418,8 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList()
 
   if (number_of_item_list_sender > 0) {
     if (number_of_item_list_sender > 1) {
-      perr() << __FILE__ << ':' << __LINE__ << ": " << rang::fgB::red
-             << "need to check that knowing procs know the same item_ref_lists!" << rang::fg::reset << '\n';
+      std::cerr << __FILE__ << ':' << __LINE__ << ": " << rang::fgB::red
+                << "need to check that knowing procs know the same item_ref_lists!" << rang::fg::reset << '\n';
     }
 
     if (number_of_item_list_sender < parallel::size()) {
diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index 3d2c7985b58fcea14015334d2b1e329b9e51d8c3..7ba1dbfc1fe442da97a4872103231a4f7d0834e8 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -21,6 +21,8 @@
 #include <ConnectivityDispatcher.hpp>
 
 #include <iomanip>
+#include <iostream>
+
 #include <map>
 #include <regex>
 #include <unordered_map>
@@ -88,30 +90,30 @@ ErrorHandler::writeErrorMessage() const
 {
   switch (__type) {
   case asked: {
-    perr() << "\nremark: exit command explicitly called\n";
+    std::cerr << "\nremark: exit command explicitly called\n";
     [[fallthrough]];
   }
   case normal: {
-    perr() << '\n' << __filename << ':' << __lineNumber << ":remark: emitted the following message\n";
-    perr() << "error: " << __errorMessage << '\n';
+    std::cerr << '\n' << __filename << ':' << __lineNumber << ":remark: emitted the following message\n";
+    std::cerr << "error: " << __errorMessage << '\n';
     break;
   }
   case compilation: {
-    perr() << "\nline " << __lineNumber << ':' << __errorMessage << '\n';
+    std::cerr << "\nline " << __lineNumber << ':' << __errorMessage << '\n';
     break;
   }
   case unexpected: {
-    perr() << '\n' << __filename << ':' << __lineNumber << ":\n" << __errorMessage << '\n';
-    perr() << "\nUNEXPECTED ERROR: this should not occure, please report it\n";
-    perr() << "\nBUG REPORT: Please send bug reports to:\n"
-           << "  ff3d-dev@nongnu.org or freefem@ann.jussieu.fr\n"
-           << "or better, use the Bug Tracking System:\n"
-           << "  http://savannah.nongnu.org/bugs/?group=ff3d\n";
+    std::cerr << '\n' << __filename << ':' << __lineNumber << ":\n" << __errorMessage << '\n';
+    std::cerr << "\nUNEXPECTED ERROR: this should not occure, please report it\n";
+    std::cerr << "\nBUG REPORT: Please send bug reports to:\n"
+              << "  ff3d-dev@nongnu.org or freefem@ann.jussieu.fr\n"
+              << "or better, use the Bug Tracking System:\n"
+              << "  http://savannah.nongnu.org/bugs/?group=ff3d\n";
     break;
   }
   default: {
-    perr() << __filename << ':' << __lineNumber << ": " << __errorMessage << '\n';
-    perr() << __FILE__ << ':' << __LINE__ << ":remark:  error type not implemented!\n";
+    std::cerr << __filename << ':' << __lineNumber << ": " << __errorMessage << '\n';
+    std::cerr << __FILE__ << ':' << __LINE__ << ":remark:  error type not implemented!\n";
   }
   }
 }
@@ -343,7 +345,7 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename)
     try {
       m_fin.open(m_filename);
       if (not m_fin) {
-        perr() << "cannot read file '" << m_filename << "'\n";
+        std::cerr << "cannot read file '" << m_filename << "'\n";
         std::exit(0);
       }
 
@@ -405,7 +407,7 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename)
       __primitivesNames[14]     = "point";
       __supportedPrimitives[14] = true;
 
-      pout() << "Reading file '" << m_filename << "'\n";
+      std::cout << "Reading file '" << m_filename << "'\n";
 
       // Getting vertices list
       GmshReader::Keyword kw = this->__nextKeyword();
@@ -453,18 +455,18 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename)
           // 	}
           // }
 
-          //       pout() << "- Binary format: ";
+          //       std::cout << "- Binary format: ";
           // #ifdef    WORDS_BIGENDIAN
           //       if (not __convertEndian) {
-          // 	pout() << "big endian\n";
+          // 	std::cout << "big endian\n";
           //       } else {
-          // 	pout() << "little endian\n";
+          // 	std::cout << "little endian\n";
           //       }
           // #else  // WORDS_BIGENDIAN
           //       if (not __convertEndian) {
-          // 	pout() << "little endian\n";
+          // 	std::cout << "little endian\n";
           //       } else {
-          // 	pout() << "big endian\n";
+          // 	std::cout << "big endian\n";
           //       }
           // #endif // WORDS_BIGENDIAN
         }
@@ -495,9 +497,9 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename)
       std::exit(0);
     }
   }
-  pout() << std::flush;
+  std::cout << std::flush;
   if (parallel::size() > 1) {
-    pout() << "Sequential mesh read! Need to be dispatched\n" << std::flush;
+    std::cout << "Sequential mesh read! Need to be dispatched\n" << std::flush;
 
     const int mesh_dimension = [&]() {
       int mesh_dimension = -1;   // unknown mesh dimension
@@ -534,7 +536,7 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename)
       break;
     }
     default: {
-      perr() << "unexpected dimension " << mesh_dimension << '\n';
+      std::cerr << "unexpected dimension " << mesh_dimension << '\n';
       std::exit(1);
     }
     }
@@ -545,7 +547,7 @@ void
 GmshReader::__readVertices()
 {
   const int numberOfVerices = this->_getInteger();
-  pout() << "- Number Of Vertices: " << numberOfVerices << '\n';
+  std::cout << "- Number Of Vertices: " << numberOfVerices << '\n';
   if (numberOfVerices < 0) {
     throw ErrorHandler(__FILE__, __LINE__, "reading file '" + this->m_filename + "': number of vertices is negative",
                        ErrorHandler::normal);
@@ -590,7 +592,7 @@ GmshReader::__readVertices()
 // GmshReader::__readElements1()
 // {
 //   const int numberOfElements = this->_getInteger();
-//   pout() << "- Number Of Elements: " << numberOfElements << '\n';
+//   std::cout << "- Number Of Elements: " << numberOfElements << '\n';
 //   if (numberOfElements<0) {
 //     throw ErrorHandler(__FILE__,__LINE__,
 // 		       "reading file '"+m_filename
@@ -639,7 +641,7 @@ void
 GmshReader::__readElements2_2()
 {
   const int numberOfElements = this->_getInteger();
-  pout() << "- Number Of Elements: " << numberOfElements << '\n';
+  std::cout << "- Number Of Elements: " << numberOfElements << '\n';
   if (numberOfElements < 0) {
     throw ErrorHandler(__FILE__, __LINE__, "reading file '" + m_filename + "': number of elements is negative",
                        ErrorHandler::normal);
@@ -754,8 +756,8 @@ GmshReader::__readPhysicalNames2_2()
     PhysicalRefId physical_ref_id(physical_dimension, RefId(physical_number, physical_name));
     auto searched_physical_ref_id = m_physical_ref_map.find(physical_number);
     if (searched_physical_ref_id != m_physical_ref_map.end()) {
-      perr() << "Physical reference id '" << physical_ref_id << "' already defined as '"
-             << searched_physical_ref_id->second << "'!";
+      std::cerr << "Physical reference id '" << physical_ref_id << "' already defined as '"
+                << searched_physical_ref_id->second << "'!";
       std::exit(0);
     }
     m_physical_ref_map[physical_number] = physical_ref_id;
@@ -813,7 +815,7 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(ConnectivityDescriptor& d
         break;
       }
       default: {
-        perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 2!\n";
+        std::cerr << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 2!\n";
         std::terminate();
       }
       }
@@ -867,7 +869,7 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(ConnectivityDescriptor& d
         break;
       }
       default: {
-        perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n";
+        std::cerr << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n";
         std::terminate();
       }
       }
@@ -1040,7 +1042,7 @@ GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(ConnectivityDe
         break;
       }
       default: {
-        perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n";
+        std::cerr << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n";
         std::terminate();
       }
       }
@@ -1062,16 +1064,16 @@ GmshReader::__proceedData()
 
   for (size_t i = 0; i < elementNumber.dimension(); ++i) {
     if (elementNumber[i] > 0) {
-      pout() << "  - Number of " << __primitivesNames[i] << ": " << elementNumber[i];
+      std::cout << "  - Number of " << __primitivesNames[i] << ": " << elementNumber[i];
       if (not(__supportedPrimitives[i])) {
-        pout() << " [" << rang::fg::yellow << "IGNORED" << rang::style::reset << "]";
+        std::cout << " [" << rang::fg::yellow << "IGNORED" << rang::style::reset << "]";
       } else {
-        pout() << " references: ";
+        std::cout << " references: ";
         for (std::set<size_t>::const_iterator iref = elementReferences[i].begin(); iref != elementReferences[i].end();
              ++iref) {
           if (iref != elementReferences[i].begin())
-            pout() << ',';
-          pout() << *iref;
+            std::cout << ',';
+          std::cout << *iref;
         }
 
         switch (i) {
@@ -1129,11 +1131,11 @@ GmshReader::__proceedData()
         }
         }
       }
-      pout() << '\n';
+      std::cout << '\n';
     }
   }
 
-  pout() << "- Building correspondance table\n";
+  std::cout << "- Building correspondance table\n";
   int minNumber = std::numeric_limits<int>::max();
   int maxNumber = std::numeric_limits<int>::min();
   for (size_t i = 0; i < __verticesNumbers.size(); ++i) {
@@ -1307,10 +1309,10 @@ GmshReader::__proceedData()
   dimension3_mask[12]                 = 1;
   dimension3_mask[13]                 = 1;
 
-  pout() << "- dimension 0 entities: " << (dimension0_mask, elementNumber) << '\n';
-  pout() << "- dimension 1 entities: " << (dimension1_mask, elementNumber) << '\n';
-  pout() << "- dimension 2 entities: " << (dimension2_mask, elementNumber) << '\n';
-  pout() << "- dimension 3 entities: " << (dimension3_mask, elementNumber) << '\n';
+  std::cout << "- dimension 0 entities: " << (dimension0_mask, elementNumber) << '\n';
+  std::cout << "- dimension 1 entities: " << (dimension1_mask, elementNumber) << '\n';
+  std::cout << "- dimension 2 entities: " << (dimension2_mask, elementNumber) << '\n';
+  std::cout << "- dimension 3 entities: " << (dimension3_mask, elementNumber) << '\n';
   if ((dimension3_mask, elementNumber) > 0) {
     const size_t nb_cells = (dimension3_mask, elementNumber);
 
@@ -1776,7 +1778,7 @@ GmshReader::__proceedData()
     m_mesh = std::make_shared<MeshType>(p_connectivity, xr);
 
   } else {
-    perr() << "*** using a dimension 0 mesh is forbidden!\n";
+    std::cerr << "*** using a dimension 0 mesh is forbidden!\n";
     std::exit(0);
   }
 }
@@ -1812,7 +1814,7 @@ GmshReader::__nextKeyword()
 void
 GmshReader::__readGmshFormat2_2()
 {
-  pout() << "- Reading Gmsh format 2.2\n";
+  std::cout << "- Reading Gmsh format 2.2\n";
   GmshReader::Keyword kw = std::make_pair("", Unknown);
   while (kw.second != EndOfFile) {
     kw = this->__nextKeyword();
diff --git a/src/mesh/ItemValue.hpp b/src/mesh/ItemValue.hpp
index 38b53ea79190724014241f50fc8cfd37d7599e40..81301f7a3d9a33e66906c20a48d984c22139bf8a 100644
--- a/src/mesh/ItemValue.hpp
+++ b/src/mesh/ItemValue.hpp
@@ -2,7 +2,6 @@
 #define ITEM_VALUE_HPP
 
 #include <PugsAssert.hpp>
-#include <PugsOStream.hpp>
 
 #include <Array.hpp>
 
diff --git a/src/mesh/ItemValueUtils.hpp b/src/mesh/ItemValueUtils.hpp
index 33a4a988a98bf9cf92524a5eb5da4948360bc00f..666d4a0e9bf99b69b5d2b92e4588f84da30e8715 100644
--- a/src/mesh/ItemValueUtils.hpp
+++ b/src/mesh/ItemValueUtils.hpp
@@ -9,6 +9,8 @@
 #include <Synchronizer.hpp>
 #include <SynchronizerManager.hpp>
 
+#include <iostream>
+
 template <typename DataType, ItemType item_type>
 std::remove_const_t<DataType>
 min(const ItemValue<DataType, item_type>& item_value)
@@ -37,7 +39,7 @@ min(const ItemValue<DataType, item_type>& item_value)
       break;
     }
     default: {
-      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
       std::terminate();
     }
     }
@@ -128,7 +130,7 @@ max(const ItemValue<DataType, item_type>& item_value)
       break;
     }
     default: {
-      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
       std::terminate();
     }
     }
@@ -219,7 +221,7 @@ sum(const ItemValue<DataType, item_type>& item_value)
       break;
     }
     default: {
-      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
       std::terminate();
     }
     }
diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp
index 5742d0c5d84740f81a9c1f9e6634d58d5f260214..5c5de47d4bcc7c55ebfd4d56a24db6afb2bb2d9f 100644
--- a/src/mesh/MeshNodeBoundary.hpp
+++ b/src/mesh/MeshNodeBoundary.hpp
@@ -15,6 +15,8 @@
 
 #include <Messenger.hpp>
 
+#include <iostream>
+
 template <size_t Dimension>
 class MeshNodeBoundary
 {
@@ -42,7 +44,7 @@ class MeshNodeBoundary
       face_list.size(), PUGS_LAMBDA(const int& l) {
         const auto& face_cells = face_to_cell_matrix[face_list[l]];
         if (face_cells.size() > 1) {
-          perr() << "internal faces cannot be used to define mesh boundaries\n";
+          std::cerr << "internal faces cannot be used to define mesh boundaries\n";
           std::exit(1);
         }
       });
@@ -153,7 +155,7 @@ MeshFlatNodeBoundary<2>::_checkBoundaryIsFlat(const TinyVector<2, double>& norma
     m_node_list.size(), PUGS_LAMBDA(const size_t& r) {
       const R2& x = xr[m_node_list[r]];
       if ((x - origin, normal) > 1E-13 * length) {
-        perr() << "this FlatBoundary is not flat!\n";
+        std::cerr << "this FlatBoundary is not flat!\n";
         std::exit(1);
       }
     });
@@ -177,7 +179,7 @@ MeshFlatNodeBoundary<1>::_getNormal(const MeshType& mesh)
   }();
 
   if (number_of_bc_nodes != 1) {
-    perr() << "Node boundaries in 1D require to have exactly 1 node\n";
+    std::cerr << "Node boundaries in 1D require to have exactly 1 node\n";
     std::exit(1);
   }
 
@@ -224,7 +226,7 @@ MeshFlatNodeBoundary<2>::_getNormal(const MeshType& mesh)
   }
 
   if (xmin == xmax) {
-    perr() << "xmin==xmax (" << xmin << "==" << xmax << ") unable to compute normal";
+    std::cerr << "xmin==xmax (" << xmin << "==" << xmax << ") unable to compute normal";
     std::exit(1);
   }
 
@@ -349,7 +351,7 @@ MeshFlatNodeBoundary<3>::_getNormal(const MeshType& mesh)
   }
 
   if (normal_l2 == 0) {
-    perr() << "not able to compute normal!\n";
+    std::cerr << "not able to compute normal!\n";
     std::exit(1);
   }
 
diff --git a/src/mesh/Synchronizer.hpp b/src/mesh/Synchronizer.hpp
index 30781a63a0d67bbc9ee4031f82d579d92a6a2194..7c2f97a6c08326c556ded90d2492fc12a22d9f8f 100644
--- a/src/mesh/Synchronizer.hpp
+++ b/src/mesh/Synchronizer.hpp
@@ -4,6 +4,7 @@
 #include <Connectivity.hpp>
 #include <ItemValue.hpp>
 
+#include <iostream>
 #include <map>
 
 class Synchronizer
@@ -187,7 +188,7 @@ class Synchronizer
       break;
     }
     default: {
-      perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
+      std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n";
       std::terminate();
     }
     }
diff --git a/src/mesh/SynchronizerManager.cpp b/src/mesh/SynchronizerManager.cpp
index e739394e3fa24708a0165904d6e03d7934f48c69..b02ae8300e83703dcd64e09d8cccb1e51b2060f1 100644
--- a/src/mesh/SynchronizerManager.cpp
+++ b/src/mesh/SynchronizerManager.cpp
@@ -9,7 +9,7 @@ SynchronizerManager* SynchronizerManager::m_instance{nullptr};
 SynchronizerManager::~SynchronizerManager()
 {
   if (m_connectivity_synchronizer_map.size() > 0) {
-    perr() << __FILE__ << ':' << __LINE__ << ": warning: some connectivities are still registered\n";
+    std::cerr << __FILE__ << ':' << __LINE__ << ": warning: some connectivities are still registered\n";
     ;
   }
 }
diff --git a/src/output/VTKWriter.hpp b/src/output/VTKWriter.hpp
index 4793c1bf29c511fca2437a353aef229d9f5f0e8e..4656a183977e28b00853a847ad1ec3b9c89cc9a1 100644
--- a/src/output/VTKWriter.hpp
+++ b/src/output/VTKWriter.hpp
@@ -3,15 +3,17 @@
 
 #include <IConnectivity.hpp>
 #include <TinyVector.hpp>
-#include <fstream>
-#include <iomanip>
-#include <sstream>
-#include <string>
 
 #include <ItemValue.hpp>
 #include <Messenger.hpp>
 #include <OutputNamedItemValueSet.hpp>
 
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+#include <sstream>
+#include <string>
+
 class VTKWriter
 {
  private:
diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp
index 01b485f5f9007b2d73328fd10bbac4ba1b6df154..24c2e36514e9d746acb0e81bcf78f8bfe150bdbe 100644
--- a/src/scheme/AcousticSolver.hpp
+++ b/src/scheme/AcousticSolver.hpp
@@ -19,6 +19,8 @@
 #include <Messenger.hpp>
 #include <SubItemValuePerItem.hpp>
 
+#include <iostream>
+
 template <typename MeshData>
 class AcousticSolver
 {
@@ -118,12 +120,12 @@ class AcousticSolver
     for (const auto& handler : m_boundary_condition_list) {
       switch (handler.boundaryCondition().type()) {
       case BoundaryCondition::normal_velocity: {
-        perr() << __FILE__ << ':' << __LINE__ << ": normal_velocity BC NIY\n";
+        std::cerr << __FILE__ << ':' << __LINE__ << ": normal_velocity BC NIY\n";
         std::exit(0);
         break;
       }
       case BoundaryCondition::velocity: {
-        perr() << __FILE__ << ':' << __LINE__ << ": velocity BC NIY\n";
+        std::cerr << __FILE__ << ':' << __LINE__ << ": velocity BC NIY\n";
         std::exit(0);
         break;
       }
@@ -131,7 +133,7 @@ class AcousticSolver
         // const PressureBoundaryCondition& pressure_bc
         //   = dynamic_cast<const
         //   PressureBoundaryCondition&>(handler.boundaryCondition());
-        perr() << __FILE__ << ':' << __LINE__ << ": pressure BC NIY\n";
+        std::cerr << __FILE__ << ':' << __LINE__ << ": pressure BC NIY\n";
         std::exit(0);
         break;
       }
diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt
index 9859671af16ff0eae47582587c887ad3bcac8b8d..59def1c2dd746c70799b67953ec260abc051d87a 100644
--- a/src/utils/CMakeLists.txt
+++ b/src/utils/CMakeLists.txt
@@ -11,7 +11,6 @@ add_library(
   FPEManager.cpp
   Messenger.cpp
   Partitioner.cpp
-  PugsOStream.cpp
   PugsUtils.cpp
   RevisionInfo.cpp
   SignalManager.cpp)
diff --git a/src/utils/CastArray.hpp b/src/utils/CastArray.hpp
index e9f0cdd07d35255a7c4df9583732f0d84c1e231f..5202d886256692d48f50225654f77e9a1ae749d2 100644
--- a/src/utils/CastArray.hpp
+++ b/src/utils/CastArray.hpp
@@ -4,6 +4,8 @@
 #include <Array.hpp>
 #include <PugsTraits.hpp>
 
+#include <iostream>
+
 template <typename DataType, typename CastDataType>
 class CastArray
 {
diff --git a/src/utils/ConsoleManager.cpp b/src/utils/ConsoleManager.cpp
index cec3cb2cbecf8d84a651f6a11268443904135251..83e4c84cb628fb48e15e68c21c76042e62ddc788 100644
--- a/src/utils/ConsoleManager.cpp
+++ b/src/utils/ConsoleManager.cpp
@@ -1,5 +1,4 @@
 #include <ConsoleManager.hpp>
-#include <PugsOStream.hpp>
 
 #include <rang.hpp>
 
@@ -12,12 +11,12 @@ ConsoleManager::isTerminal(std::ostream& os)
 void
 ConsoleManager::init(const bool& colorize)
 {
-  pout() << "Console management: color ";
+  std::cout << "Console management: color ";
   if (colorize) {
     rang::setControlMode(rang::control::Force);
-    pout() << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset << rang::style::reset << '\n';
+    std::cout << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset << rang::style::reset << '\n';
   } else {
     rang::setControlMode(rang::control::Off);
-    pout() << "disabled\n";
+    std::cout << "disabled\n";
   }
 }
diff --git a/src/utils/FPEManager.cpp b/src/utils/FPEManager.cpp
index 2c61e89209bc462c243cfd379a6a88b7bfa4fbfa..b0295f77d6b95abf42e91fcf8efc772a9329bb67 100644
--- a/src/utils/FPEManager.cpp
+++ b/src/utils/FPEManager.cpp
@@ -1,6 +1,5 @@
 #include <FPEManager.hpp>
 #include <PugsMacros.hpp>
-#include <PugsOStream.hpp>
 
 #include <pugs_config.hpp>
 #include <rang.hpp>
@@ -62,16 +61,16 @@ fedisableexcept(unsigned int excepts)
 void
 FPEManager::enable()
 {
-  pout() << "FE management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset
-         << rang::style::reset << '\n';
+  std::cout << "FE management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset
+            << rang::style::reset << '\n';
   ::feenableexcept(MANAGED_FPE);
 }
 
 void
 FPEManager::disable()
 {
-  pout() << "FE management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset
-         << rang::style::reset << '\n';
+  std::cout << "FE management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset
+            << rang::style::reset << '\n';
   ::fedisableexcept(MANAGED_FPE);
 }
 
@@ -80,13 +79,13 @@ FPEManager::disable()
 void
 FPEManager::enable()
 {
-  pout() << "FE management: enabled " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n';
+  std::cout << "FE management: enabled " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n';
 }
 
 void
 FPEManager::disable()
 {
-  pout() << "FE management: disable " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n';
+  std::cout << "FE management: disable " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n';
 }
 
 #endif   // PUGS_HAS_FENV_H
diff --git a/src/utils/Messenger.cpp b/src/utils/Messenger.cpp
index f1d18053557fc8dbd9d4f1dea27ba74d61147129..07eab1792beb3a3208da71dba580af7114812699 100644
--- a/src/utils/Messenger.cpp
+++ b/src/utils/Messenger.cpp
@@ -1,5 +1,6 @@
 #include <Messenger.hpp>
-#include <PugsOStream.hpp>
+
+#include <iostream>
 
 namespace parallel
 {
@@ -45,8 +46,9 @@ Messenger::Messenger([[maybe_unused]] int& argc, [[maybe_unused]] char* argv[])
 
   if (m_rank != 0) {
     // LCOV_EXCL_START
-    pout.setOutput(null_stream);
-    perr.setOutput(null_stream);
+    std::cout.setstate(std::ios::badbit);
+    std::cerr.setstate(std::ios::badbit);
+    std::clog.setstate(std::ios::badbit);
     // LCOV_EXCL_STOP
   }
 #endif   // PUGS_HAS_MPI
diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp
index d697d61cd8839aafe4fb85345d3b19bc33feef8b..d3c3801beb09f857103ef066316b9c9febbf5c5e 100644
--- a/src/utils/Messenger.hpp
+++ b/src/utils/Messenger.hpp
@@ -3,7 +3,6 @@
 
 #include <PugsAssert.hpp>
 #include <PugsMacros.hpp>
-#include <PugsOStream.hpp>
 
 #include <Array.hpp>
 #include <ArrayUtils.hpp>
@@ -19,6 +18,8 @@
 
 #include <PugsTraits.hpp>
 
+#include <iostream>
+
 namespace parallel
 {
 class Messenger
diff --git a/src/utils/Partitioner.cpp b/src/utils/Partitioner.cpp
index 8d3f46512fa7de558320b211ad22679d36beef13..4bbee923ccc34bfe6de26e4a858ae332754e9acc 100644
--- a/src/utils/Partitioner.cpp
+++ b/src/utils/Partitioner.cpp
@@ -2,20 +2,19 @@
 #include <Partitioner.hpp>
 #include <pugs_config.hpp>
 
-#include <PugsOStream.hpp>
-
 #ifdef PUGS_HAS_MPI
 
 #define IDXTYPEWIDTH 64
 #define REALTYPEWIDTH 64
 #include <parmetis.h>
 
+#include <iostream>
 #include <vector>
 
 Array<int>
 Partitioner::partition(const CSRGraph& graph)
 {
-  pout() << "Partitioning graph into " << rang::style::bold << parallel::size() << rang::style::reset << " parts\n";
+  std::cout << "Partitioning graph into " << rang::style::bold << parallel::size() << rang::style::reset << " parts\n";
 
   int wgtflag = 0;
   int numflag = 0;
@@ -62,7 +61,7 @@ Partitioner::partition(const CSRGraph& graph)
       ParMETIS_V3_PartKway(&(vtxdist[0]), &(entries[0]), &(neighbors[0]), NULL, NULL, &wgtflag, &numflag, &ncon, &npart,
                            &(tpwgts[0]), &(ubvec[0]), &(options[0]), &edgecut, &(part[0]), &parmetis_comm);
     if (result == METIS_ERROR) {
-      perr() << "Metis Error\n";
+      std::cerr << "Metis Error\n";
       std::exit(1);
     }
 
diff --git a/src/utils/PugsOStream.cpp b/src/utils/PugsOStream.cpp
deleted file mode 100644
index e321f50d722a1c6b3cb4f25a2dbd51e8c20af267..0000000000000000000000000000000000000000
--- a/src/utils/PugsOStream.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <PugsOStream.hpp>
-
-#include <iomanip>
-#include <sstream>
-
-PugsOStream pout(std::cout);
-PugsOStream perr(std::cerr);
-
-std::stringstream null_stream;
-const PugsOStream _null_stream_initializer([]() -> std::stringstream& {
-  null_stream.setstate(std::ios::badbit);
-  return null_stream;
-}());
diff --git a/src/utils/PugsOStream.hpp b/src/utils/PugsOStream.hpp
deleted file mode 100644
index e5d986186917b3ca949d46658e175c9adcfb6ff5..0000000000000000000000000000000000000000
--- a/src/utils/PugsOStream.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef PUGS_OSTREAM_HPP
-#define PUGS_OSTREAM_HPP
-
-#include <PugsMacros.hpp>
-#include <iostream>
-#include <sstream>
-
-extern std::stringstream null_stream;
-
-class PugsOStream
-{
- private:
-  std::ostream* m_os = nullptr;
-
- public:
-  PUGS_INLINE
-  std::ostream&
-  operator()()
-  {
-    return *m_os;
-  }
-
-  void
-  setOutput(std::ostream& os)
-  {
-    m_os = &os;
-  }
-
-  PugsOStream(std::ostream& os) : m_os(&os)
-  {
-    ;
-  }
-
-  PugsOStream& operator=(const PugsOStream&) = delete;
-  PugsOStream& operator=(PugsOStream&&) = delete;
-  PugsOStream(const PugsOStream&)       = delete;
-  PugsOStream(PugsOStream&&)            = delete;
-
-  ~PugsOStream() = default;
-};
-
-extern PugsOStream pout;
-extern PugsOStream perr;
-extern const PugsOStream _null_stream_initializer;
-
-#endif   // PUGS_OSTREAM_HPP
diff --git a/src/utils/PugsUtils.cpp b/src/utils/PugsUtils.cpp
index 4e77863d328b6c448f0db2c5cbf6376e383c125a..9aa20750ee42367f09d131972a7c66a0ac20218d 100644
--- a/src/utils/PugsUtils.cpp
+++ b/src/utils/PugsUtils.cpp
@@ -1,4 +1,3 @@
-#include <PugsOStream.hpp>
 #include <PugsUtils.hpp>
 
 #include <Kokkos_Core.hpp>
@@ -16,32 +15,34 @@
 
 #include <CLI/CLI.hpp>
 
+#include <iostream>
+
 std::string
 initialize(int& argc, char* argv[])
 {
   parallel::Messenger::create(argc, argv);
 
-  pout() << "Pugs version: " << rang::style::bold << RevisionInfo::version() << rang::style::reset << '\n';
+  std::cout << "Pugs version: " << rang::style::bold << RevisionInfo::version() << rang::style::reset << '\n';
 
-  pout() << "-------------------- " << rang::fg::green << "git info" << rang::fg::reset << " -------------------------"
-         << '\n';
-  pout() << "tag:  " << rang::style::bold << RevisionInfo::gitTag() << rang::style::reset << '\n';
-  pout() << "HEAD: " << rang::style::bold << RevisionInfo::gitHead() << rang::style::reset << '\n';
-  pout() << "hash: " << rang::style::bold << RevisionInfo::gitHash() << rang::style::reset << "  (";
+  std::cout << "-------------------- " << rang::fg::green << "git info" << rang::fg::reset
+            << " -------------------------" << '\n';
+  std::cout << "tag:  " << rang::style::bold << RevisionInfo::gitTag() << rang::style::reset << '\n';
+  std::cout << "HEAD: " << rang::style::bold << RevisionInfo::gitHead() << rang::style::reset << '\n';
+  std::cout << "hash: " << rang::style::bold << RevisionInfo::gitHash() << rang::style::reset << "  (";
 
   if (RevisionInfo::gitIsClean()) {
-    pout() << rang::fgB::green << "clean" << rang::fg::reset;
+    std::cout << rang::fgB::green << "clean" << rang::fg::reset;
   } else {
-    pout() << rang::fgB::red << "dirty" << rang::fg::reset;
+    std::cout << rang::fgB::red << "dirty" << rang::fg::reset;
   }
-  pout() << ")\n";
-  pout() << "-------------------- " << rang::fg::green << "build info" << rang::fg::reset << " -----------------------"
-         << '\n';
-  pout() << "type:     " << rang::style::bold << BuildInfo::type() << rang::style::reset << '\n';
-  pout() << "compiler: " << rang::style::bold << BuildInfo::compiler() << rang::style::reset << '\n';
-  pout() << "kokkos:   " << rang::style::bold << BuildInfo::kokkosDevices() << rang::style::reset << '\n';
-  pout() << "mpi:      " << rang::style::bold << BuildInfo::mpiLibrary() << rang::style::reset << '\n';
-  pout() << "-------------------------------------------------------\n";
+  std::cout << ")\n";
+  std::cout << "-------------------- " << rang::fg::green << "build info" << rang::fg::reset
+            << " -----------------------" << '\n';
+  std::cout << "type:     " << rang::style::bold << BuildInfo::type() << rang::style::reset << '\n';
+  std::cout << "compiler: " << rang::style::bold << BuildInfo::compiler() << rang::style::reset << '\n';
+  std::cout << "kokkos:   " << rang::style::bold << BuildInfo::kokkosDevices() << rang::style::reset << '\n';
+  std::cout << "mpi:      " << rang::style::bold << BuildInfo::mpiLibrary() << rang::style::reset << '\n';
+  std::cout << "-------------------------------------------------------\n";
 
   std::string filename;
   {
@@ -65,13 +66,13 @@ initialize(int& argc, char* argv[])
     bool pause_on_error = false;
     app.add_flag("-p,--pause-on-error", pause_on_error, "Pause for debugging on unexpected error [default: false]");
 
-    std::atexit([]() { pout() << rang::style::reset; });
+    std::atexit([]() { std::cout << rang::style::reset; });
     try {
       app.parse(argc, argv);
     }
     catch (const CLI::ParseError& e) {
       parallel::Messenger::destroy();
-      std::exit(app.exit(e, pout(), perr()));
+      std::exit(app.exit(e, std::cout, std::cerr));
     }
 
     ConsoleManager::init(enable_color);
@@ -81,13 +82,13 @@ initialize(int& argc, char* argv[])
   }
 
   Kokkos::initialize(argc, argv);
-  pout() << "-------------------- " << rang::fg::green << "exec info" << rang::fg::reset << " ------------------------"
-         << '\n';
+  std::cout << "-------------------- " << rang::fg::green << "exec info" << rang::fg::reset
+            << " ------------------------" << '\n';
 
-  pout() << rang::style::bold;
-  Kokkos::DefaultExecutionSpace::print_configuration(pout());
-  pout() << rang::style::reset;
-  pout() << "-------------------------------------------------------\n";
+  std::cout << rang::style::bold;
+  Kokkos::DefaultExecutionSpace::print_configuration(std::cout);
+  std::cout << rang::style::reset;
+  std::cout << "-------------------------------------------------------\n";
 
   return filename;
 }
diff --git a/src/utils/SignalManager.cpp b/src/utils/SignalManager.cpp
index 4fc37443a27326fe7a0725f1df9ea6c501ad2fee..c9cf877dc8b1273ffab68638602652555af4f758 100644
--- a/src/utils/SignalManager.cpp
+++ b/src/utils/SignalManager.cpp
@@ -1,7 +1,6 @@
 #include <SignalManager.hpp>
 
 #include <PugsAssert.hpp>
-#include <PugsOStream.hpp>
 
 #include <BacktraceManager.hpp>
 #include <ConsoleManager.hpp>
@@ -14,6 +13,8 @@
 
 #include <Messenger.hpp>
 
+#include <iostream>
+
 bool SignalManager::s_pause_on_error = false;
 
 void
@@ -68,6 +69,9 @@ SignalManager::handler(int signal)
   std::signal(SIGINT, SIG_DFL);
   std::signal(SIGABRT, SIG_DFL);
 
+  // Each failing process must write
+  std::cerr.setstate(std::ios::goodbit);
+
   BacktraceManager bm;
   std::cerr << bm << '\n';
 
@@ -101,10 +105,10 @@ SignalManager::init(const bool& enable)
     std::signal(SIGABRT, SignalManager::handler);
     std::signal(SIGPIPE, SignalManager::handler);
 
-    pout() << "Signal management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset
-           << rang::style::reset << '\n';
+    std::cout << "Signal management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset
+              << rang::style::reset << '\n';
   } else {
-    pout() << "Signal management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset
-           << rang::style::reset << '\n';
+    std::cout << "Signal management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset
+              << rang::style::reset << '\n';
   }
 }