diff --git a/MQ/histoServer/CbmHistoServer.cxx b/MQ/histoServer/CbmHistoServer.cxx
index f0ab6d8ad1b3704509d2fd1ff33003163a4e7b9e..93d15d733d0d397a511bed4c8b47e75f3f0fbfa6 100644
--- a/MQ/histoServer/CbmHistoServer.cxx
+++ b/MQ/histoServer/CbmHistoServer.cxx
@@ -48,7 +48,8 @@ bool CbmHistoServer::ReceiveData(FairMQMessagePtr& msg, int /*index*/)
 #ifdef HAVE_RootDeserializer
   Deserialize<RootDeserializer>(*msg, tempObject);
 #else
-  Deserialize<RootSerializer>(*msg, tempObject);
+  //  Deserialize<RootSerializer>(*msg, tempObject);
+  RootSerializer().Deserialize(*msg, tempObject);
 #endif
 
   if (TString(tempObject->ClassName()).EqualTo("TObjArray")) {
diff --git a/MQ/histoServer/CbmMqHistoServer.cxx b/MQ/histoServer/CbmMqHistoServer.cxx
index 73753384677cbe8a9e1e517ef01f337b8170c504..5f27627af8bdc1217ab4273ecc00c6ad2507f504 100644
--- a/MQ/histoServer/CbmMqHistoServer.cxx
+++ b/MQ/histoServer/CbmMqHistoServer.cxx
@@ -89,7 +89,8 @@ bool CbmMqHistoServer::ReceiveData(FairMQMessagePtr& msg, int /*index*/)
 {
   TObject* tempObject = nullptr;
 
-  Deserialize<RootSerializer>(*msg, tempObject);
+  //  Deserialize<RootSerializer>(*msg, tempObject);
+  RootSerializer().Deserialize(*msg, tempObject);
 
   if (TString(tempObject->ClassName()).EqualTo("TObjArray")) {
     std::lock_guard<std::mutex> lk(mtx);
@@ -155,7 +156,9 @@ bool CbmMqHistoServer::ReceiveHistoConfig(FairMQMessagePtr& msg, int /*index*/)
 {
   std::pair<std::string, std::string> tempObject;
 
-  Deserialize<BoostSerializer<std::pair<std::string, std::string>>>(*msg, tempObject);
+  //  Deserialize<BoostSerializer<std::pair<std::string, std::string>>>(*msg, tempObject);
+  BoostSerializer<std::pair<std::string, std::string>>().Deserialize(*msg, tempObject);
+
 
   LOG(info) << " Received configuration for histo " << tempObject.first << " : " << tempObject.second;
 
@@ -185,7 +188,8 @@ bool CbmMqHistoServer::ReceiveCanvasConfig(FairMQMessagePtr& msg, int /*index*/)
 {
   std::pair<std::string, std::string> tempObject;
 
-  Deserialize<BoostSerializer<std::pair<std::string, std::string>>>(*msg, tempObject);
+  //  Deserialize<BoostSerializer<std::pair<std::string, std::string>>>(*msg, tempObject);
+  BoostSerializer<std::pair<std::string, std::string>>().Deserialize(*msg, tempObject);
 
   LOG(info) << " Received configuration for canvas " << tempObject.first << " : " << tempObject.second;
 
@@ -233,7 +237,8 @@ bool CbmMqHistoServer::ReceiveConfigAndData(FairMQParts& parts, int /*index*/)
 
   /// Header contains a pair of
   std::pair<uint32_t, uint32_t> pairHeader;
-  Deserialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*parts.At(0), pairHeader);
+  //  Deserialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*parts.At(0), pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Deserialize(*parts.At(0), pairHeader);
 
   LOG(info) << "CbmMqHistoServer::ReceiveConfigAndData => Received configuration for " << pairHeader.first
             << " histos and " << pairHeader.second << " canvases";
diff --git a/MQ/mcbm/CbmDeviceBuildDigiEvents.cxx b/MQ/mcbm/CbmDeviceBuildDigiEvents.cxx
index 7a1eb026551ead4fc9e3a907bb562fd03c412f5e..b43711c253f465bd272b0fb32b7ee9c70841f1e0 100644
--- a/MQ/mcbm/CbmDeviceBuildDigiEvents.cxx
+++ b/MQ/mcbm/CbmDeviceBuildDigiEvents.cxx
@@ -383,7 +383,8 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/)
   uint32_t uPartIdx = 0;
 
   /// TS header
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), fCbmTsEventHeader);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), fCbmTsEventHeader);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), fCbmTsEventHeader);
   ++uPartIdx;
 
   /// T0
@@ -436,7 +437,8 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/)
   ++uPartIdx;
 
   /// TS metadata
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), fTsMetaData);
   new ((*fTimeSliceMetaDataArray)[fTimeSliceMetaDataArray->GetEntriesFast()])
     TimesliceMetaData(std::move(*fTsMetaData));
   ++uPartIdx;
@@ -515,7 +517,8 @@ bool CbmDeviceBuildDigiEvents::SendEvents(FairMQParts& partsIn)
   /// Serialize the array of events into a single MQ message
   /// FIXME: Find out if possible to use only the boost serializer
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &(vOutEvents));
+  //  Serialize<RootSerializer>(*message, &(vOutEvents));
+  RootSerializer().Serialize(*message, &(vOutEvents));
   /*
   std::stringstream ossEvt;
   boost::archive::binary_oarchive oaEvt(ossEvt);
@@ -549,31 +552,31 @@ bool CbmDeviceBuildDigiEvents::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
-
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
 
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
-
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
 
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
-
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
-
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
   partsOut.AddPart(std::move(msgHistos));
 
   /// Send the multi-parts message to the common histogram messages queue
@@ -592,8 +595,8 @@ bool CbmDeviceBuildDigiEvents::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
-
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
     LOG(error) << "Problem sending data";
diff --git a/MQ/mcbm/CbmDeviceBuildRawEvents.cxx b/MQ/mcbm/CbmDeviceBuildRawEvents.cxx
index e4fccbfee340fa20a9c0f9d430c554dbc814511d..bde389bdbb41eb7b1c41ede7af87e11c2f0127cf 100644
--- a/MQ/mcbm/CbmDeviceBuildRawEvents.cxx
+++ b/MQ/mcbm/CbmDeviceBuildRawEvents.cxx
@@ -319,7 +319,8 @@ try {
 
       /// Serialize the vector of histo config into a single MQ message
       FairMQMessagePtr messageHist(NewMessage());
-      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+      //      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+      BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, psHistoConfig);
 
       /// Send message to the common histogram config messages queue
       if (Send(messageHist, fsChannelNameHistosConfig) < 0) { throw InitTaskError("Problem sending histo config"); }
@@ -341,7 +342,8 @@ try {
 
       /// Serialize the vector of canvas config into a single MQ message
       FairMQMessagePtr messageCan(NewMessage());
-      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+      //      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+      BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, psCanvConfig);
 
       /// Send message to the common canvas config messages queue
       if (Send(messageCan, fsChannelNameCanvasConfig) < 0) { throw InitTaskError("Problem sending canvas config"); }
@@ -387,7 +389,8 @@ bool CbmDeviceBuildRawEvents::HandleData(FairMQParts& parts, int /*index*/)
   uint32_t uPartIdx = 0;
 
   /// TS metadata
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), fTsMetaData);
   new ((*fTimeSliceMetaDataArray)[fTimeSliceMetaDataArray->GetEntriesFast()])
     TimesliceMetaData(std::move(*fTsMetaData));
   ++uPartIdx;
@@ -497,7 +500,8 @@ bool CbmDeviceBuildRawEvents::SendEvents(FairMQParts& partsIn)
 
   /// Serialize the array of events into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, fEvents);
+  //  Serialize<RootSerializer>(*message, fEvents);
+  RootSerializer().Serialize(*message, fEvents);
 
   /// Add it at the end of the input composed message
   FairMQParts partsOut(std::move(partsIn));
@@ -515,7 +519,8 @@ bool CbmDeviceBuildRawEvents::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/mcbm/CbmDeviceDigiEventSink.cxx b/MQ/mcbm/CbmDeviceDigiEventSink.cxx
index 744b73158c60f38251faca95ca26b0f9a56fe9e9..f0d12e15c5e89b0383d7ab10565efd361f8bdc47 100644
--- a/MQ/mcbm/CbmDeviceDigiEventSink.cxx
+++ b/MQ/mcbm/CbmDeviceDigiEventSink.cxx
@@ -531,7 +531,8 @@ bool CbmDeviceDigiEventSink::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -539,7 +540,8 @@ bool CbmDeviceDigiEventSink::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -547,14 +549,16 @@ bool CbmDeviceDigiEventSink::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -574,7 +578,8 @@ bool CbmDeviceDigiEventSink::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/mcbm/CbmDeviceEventBuilder.cxx b/MQ/mcbm/CbmDeviceEventBuilder.cxx
index 8dad9cb974eb3ff9b8494bae5770581a4fa59005..37a7a2e9bec0c2dd282e4eb99c6018822f8a66fb 100644
--- a/MQ/mcbm/CbmDeviceEventBuilder.cxx
+++ b/MQ/mcbm/CbmDeviceEventBuilder.cxx
@@ -237,7 +237,8 @@ bool CbmDeviceEventBuilder::HandleData(FairMQParts& parts, int /*index*/)
 
   /// TS header
   CbmTsEventHeader* evtHeader = new CbmTsEventHeader();
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), evtHeader);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), evtHeader);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), evtHeader);
   ++uPartIdx;
 
   CbmDigiTimeslice ts;
@@ -293,7 +294,8 @@ bool CbmDeviceEventBuilder::HandleData(FairMQParts& parts, int /*index*/)
 
   /// TS metadata
   TimesliceMetaData* tsMetaData = new TimesliceMetaData();
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), tsMetaData);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), tsMetaData);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), tsMetaData);
   ++uPartIdx;
 
   //if (1 == fulNumMessages) {
@@ -399,12 +401,14 @@ bool CbmDeviceEventBuilder::SendEvents(const std::vector<CbmDigiEvent>& vEvents,
 
   /// Prepare serialized versions of the TS Event header
   FairMQMessagePtr messTsHeader(NewMessage());
-  Serialize<RootSerializer>(*messTsHeader, eventHeader);
+  //  Serialize<RootSerializer>(*messTsHeader, eventHeader);
+  RootSerializer().Serialize(*messTsHeader, eventHeader);
   partsOut.AddPart(std::move(messTsHeader));
 
   // Prepare TS meta data
   FairMQMessagePtr messTsMeta(NewMessage());
-  Serialize<RootSerializer>(*messTsMeta, tsMetaData);
+  //  Serialize<RootSerializer>(*messTsMeta, tsMetaData);
+  RootSerializer().Serialize(*messTsMeta, tsMetaData);
   partsOut.AddPart(std::move(messTsMeta));
 
   // Prepare event vector.
diff --git a/MQ/mcbm/CbmDeviceEventSink.cxx b/MQ/mcbm/CbmDeviceEventSink.cxx
index cd07287cee8ae9cfdb1ccd2fba5592806e83fcca..584b756e747fbe37d983e9a85a873f473e8a2ba3 100644
--- a/MQ/mcbm/CbmDeviceEventSink.cxx
+++ b/MQ/mcbm/CbmDeviceEventSink.cxx
@@ -483,7 +483,8 @@ bool CbmDeviceEventSink::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -491,7 +492,8 @@ bool CbmDeviceEventSink::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -499,14 +501,16 @@ bool CbmDeviceEventSink::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -526,7 +530,8 @@ bool CbmDeviceEventSink::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx b/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx
index d0abc27e79959819aba55e0938d67d8644e2ff15..d2c7c9118ef78b9d0348135333e9af75832ae153 100644
--- a/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx
+++ b/MQ/mcbm/CbmDeviceMcbmEventBuilderWin.cxx
@@ -340,7 +340,8 @@ try {
 
       /// Serialize the vector of histo config into a single MQ message
       FairMQMessagePtr messageHist(NewMessage());
-      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+      //      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+      BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, psHistoConfig);
 
       /// Send message to the common histogram config messages queue
       if (Send(messageHist, fsChannelNameHistosConfig) < 0) {
@@ -365,7 +366,8 @@ try {
 
       /// Serialize the vector of canvas config into a single MQ message
       FairMQMessagePtr messageCan(NewMessage());
-      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+      //      Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+      BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, psCanvConfig);
 
       /// Send message to the common canvas config messages queue
       if (Send(messageCan, fsChannelNameCanvasConfig) < 0) {
@@ -482,7 +484,8 @@ bool CbmDeviceMcbmEventBuilderWin::HandleData(FairMQParts& parts, int /*index*/)
   inputArchiveTsMeta >> (*fTsMetaData);
   ++uPartIdx;
 */
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), fTsMetaData);
   /// FIXME: Not if this is the proper way to insert the data
   new ((*fTimeSliceMetaDataArray)[fTimeSliceMetaDataArray->GetEntriesFast()
                                   //                                    ] ) TimesliceMetaData( *fTsMetaData ) ;
@@ -598,7 +601,8 @@ bool CbmDeviceMcbmEventBuilderWin::SendEvents(FairMQParts& partsIn)
 
   /// Serialize the array of events into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, fEvents);
+  //  Serialize<RootSerializer>(*message, fEvents);
+  RootSerializer().Serialize(*message, fEvents);
 
   /// Add it at the end of the input composed message
   /// FIXME: use move or fix addition of new part to avoid full message copy
@@ -634,7 +638,8 @@ bool CbmDeviceMcbmEventBuilderWin::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/mcbm/CbmDeviceMcbmEventSink.cxx b/MQ/mcbm/CbmDeviceMcbmEventSink.cxx
index 25315e787644a1eebdf94db8923176cc112ed29d..0990e830f73999659a67ece4044ac246b1232baf 100644
--- a/MQ/mcbm/CbmDeviceMcbmEventSink.cxx
+++ b/MQ/mcbm/CbmDeviceMcbmEventSink.cxx
@@ -194,7 +194,8 @@ try {
 
          /// Serialize the vector of histo config into a single MQ message
          FairMQMessagePtr messageHist( NewMessage() );
-         Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageHist, psHistoConfig );
+//         Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageHist, psHistoConfig );
+         BoostSerializer < std::pair< std::string, std::string > >.Serialize( *messageHist, psHistoConfig );
 
          /// Send message to the common histogram config messages queue
          if( Send( messageHist, fsChannelNameHistosConfig ) < 0 )
@@ -222,7 +223,8 @@ try {
 
          /// Serialize the vector of canvas config into a single MQ message
          FairMQMessagePtr messageCan( NewMessage() );
-         Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageCan, psCanvConfig );
+//         Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageCan, psCanvConfig );
+         BoostSerializer < std::pair< std::string, std::string > >.Serialize( *messageCan, psCanvConfig );
 
          /// Send message to the common canvas config messages queue
          if( Send( messageCan, fsChannelNameCanvasConfig ) < 0 )
@@ -360,7 +362,8 @@ bool CbmDeviceMcbmEventSink::HandleData(FairMQParts& parts, int /*index*/)
   inputArchiveTsMeta >> (*fTsMetaData);
   ++uPartIdx;
 */
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), fTsMetaData);
   LOG(debug) << "TS metadata extracted";
 
   /// FIXME: Need to check if TS arrived in order (probably not!!!) + buffer!!!
@@ -613,7 +616,8 @@ bool CbmDeviceMcbmEventSink::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/mcbm/CbmDeviceMcbmMonitorPulser.cxx b/MQ/mcbm/CbmDeviceMcbmMonitorPulser.cxx
index 543e19b7d1e2a7352d723e832113b96dd65542ff..73c6717344ff6f158fdb1ce5bc67f627a5cf0feb 100644
--- a/MQ/mcbm/CbmDeviceMcbmMonitorPulser.cxx
+++ b/MQ/mcbm/CbmDeviceMcbmMonitorPulser.cxx
@@ -201,7 +201,8 @@ Bool_t CbmDeviceMcbmMonitorPulser::InitContainers()
 
       /// Serialize the vector of histo config into a single MQ message
       FairMQMessagePtr messageHist( NewMessage() );
-      Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageHist, psHistoConfig );
+//      Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageHist, psHistoConfig );
+      BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist,psHistoConfig);
 
       /// Send message to the common histogram config messages queue
       if( Send( messageHist, fsChannelNameHistosConfig ) < 0 )
@@ -230,7 +231,8 @@ Bool_t CbmDeviceMcbmMonitorPulser::InitContainers()
 
       /// Serialize the vector of canvas config into a single MQ message
       FairMQMessagePtr messageCan( NewMessage() );
-      Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageCan, psCanvConfig );
+//      Serialize< BoostSerializer < std::pair< std::string, std::string > > >( *messageCan, psCanvConfig );
+      BoostSerializer < std::pair< std::string, std::string > >().Serialize( *messageCan, psCanvConfig );
 
       /// Send message to the common canvas config messages queue
       if( Send( messageCan, fsChannelNameCanvasConfig ) < 0 )
@@ -266,7 +268,8 @@ bool CbmDeviceMcbmMonitorPulser::HandleData(FairMQParts& parts, int /*index*/)
   inputArchiveTsMeta >> (*fTsMetaData);
   ++uPartIdx;
 */
-  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  //  Deserialize<RootSerializer>(*parts.At(uPartIdx), fTsMetaData);
+  RootSerializer().Deserialize(*parts.At(uPartIdx), fTsMetaData);
   ++uPartIdx;
 
   std::string msgStrT0(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
@@ -360,12 +363,14 @@ bool CbmDeviceMcbmMonitorPulser::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   // test code to check if deserialization works
   /*
   TObject* tempObject = nullptr;
-  Deserialize<RootDeserializer>(*message, tempObject);
+//  Deserialize<RootDeserializer>(*message, tempObject);
+  RootDeserializer().Deserialize(*message, tempObject);
 
   if (TString(tempObject->ClassName()).EqualTo("TObjArray")) {
    TObjArray* arrayHisto = static_cast<TObjArray*>(tempObject);
diff --git a/MQ/mcbm/CbmDeviceMcbmUnpack.cxx b/MQ/mcbm/CbmDeviceMcbmUnpack.cxx
index d72d85b1ae925d31869f8e50751b8b996fd7c583..fc7dc71f27cf066ab938fbc0958a241c9afaf9b2 100644
--- a/MQ/mcbm/CbmDeviceMcbmUnpack.cxx
+++ b/MQ/mcbm/CbmDeviceMcbmUnpack.cxx
@@ -305,7 +305,8 @@ bool CbmDeviceMcbmUnpack::SendUnpData()
    std::string* strMsgTsMetaE = new std::string(ossTsMeta.str());
 */
   FairMQMessagePtr messTsMeta(NewMessage());
-  Serialize<RootSerializer>(*messTsMeta, fTsMetaData);
+  //  Serialize<RootSerializer>(*messTsMeta, fTsMetaData);
+  RootSerializer().Serialize(*messTsMeta, fTsMetaData);
 
   std::stringstream ossSts;
   boost::archive::binary_oarchive oaSts(ossSts);
diff --git a/MQ/mcbm/CbmDeviceUnpack.cxx b/MQ/mcbm/CbmDeviceUnpack.cxx
index 7d0f5d5e671711220da68123928d04c06b008c45..6bda42347619d642ec49837504e9513128f61900 100644
--- a/MQ/mcbm/CbmDeviceUnpack.cxx
+++ b/MQ/mcbm/CbmDeviceUnpack.cxx
@@ -638,7 +638,9 @@ bool CbmDeviceUnpack::SendUnpData()
 
   /// Prepare serialized versions of the TS Event header
   FairMQMessagePtr messTsHeader(NewMessage());
-  Serialize<RootSerializer>(*messTsHeader, fCbmTsEventHeader);
+  //  Serialize<RootSerializer>(*messTsHeader, fCbmTsEventHeader);
+  RootSerializer().Serialize(*messTsHeader, fCbmTsEventHeader);
+
   parts.AddPart(std::move(messTsHeader));
 
   // ---- T0 ----
@@ -742,7 +744,8 @@ bool CbmDeviceUnpack::SendUnpData()
   /// FIXME: only for TS duration and overlap, should be sent to parameter service instead as stable values in run
   ///        Index and start time are already included in the TsHeader object!
   FairMQMessagePtr messTsMeta(NewMessage());
-  Serialize<RootSerializer>(*messTsMeta, fTsMetaData);
+  //  Serialize<RootSerializer>(*messTsMeta, fTsMetaData);
+  RootSerializer().Serialize(*messTsMeta, fTsMetaData);
   parts.AddPart(std::move(messTsMeta));
 
   if (Send(parts, fsChannelNameDataOutput) < 0) {
@@ -759,15 +762,16 @@ bool CbmDeviceUnpack::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
-
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
 
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -775,15 +779,16 @@ bool CbmDeviceUnpack::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
-
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
   partsOut.AddPart(std::move(msgHistos));
 
   /// Send the multi-parts message to the common histogram messages queue
@@ -802,7 +807,8 @@ bool CbmDeviceUnpack::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/monitor/CbmDeviceMonitorPsd.cxx b/MQ/monitor/CbmDeviceMonitorPsd.cxx
index f1fb67b0253800d3df1481d59eef9317e81c10f6..04ac3d4ca1d4c0b0b2da34b0f41e12c85df15b61 100644
--- a/MQ/monitor/CbmDeviceMonitorPsd.cxx
+++ b/MQ/monitor/CbmDeviceMonitorPsd.cxx
@@ -218,7 +218,8 @@ Bool_t CbmDeviceMonitorPsd::InitContainers()
 
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, psHistoConfig);
 
     /// Send message to the common histogram config messages queue
     if (Send(messageHist, fsChannelNameHistosConfig) < 0) {
@@ -244,7 +245,8 @@ Bool_t CbmDeviceMonitorPsd::InitContainers()
 
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, psCanvConfig);
 
     /// Send message to the common canvas config messages queue
     if (Send(messageCan, fsChannelNameCanvasConfig) < 0) {
@@ -296,7 +298,8 @@ bool CbmDeviceMonitorPsd::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/monitor/CbmDeviceMonitorReqT0.cxx b/MQ/monitor/CbmDeviceMonitorReqT0.cxx
index 27020c8c7fa039ac4369efd9d711397102a637b2..c7f1739754b89a61bcfaec12fa0d75a870f7eeff 100644
--- a/MQ/monitor/CbmDeviceMonitorReqT0.cxx
+++ b/MQ/monitor/CbmDeviceMonitorReqT0.cxx
@@ -266,7 +266,8 @@ bool CbmDeviceMonitorReqT0::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -274,22 +275,23 @@ bool CbmDeviceMonitorReqT0::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
-
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
 
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
-
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -309,7 +311,8 @@ bool CbmDeviceMonitorReqT0::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/monitor/CbmDeviceMonitorReqTof.cxx b/MQ/monitor/CbmDeviceMonitorReqTof.cxx
index 039c98b5e7e5547d0dbee6293a374fe7a5a1333d..2eb18a65bf84c74237f451d61d591604a07f2c87 100644
--- a/MQ/monitor/CbmDeviceMonitorReqTof.cxx
+++ b/MQ/monitor/CbmDeviceMonitorReqTof.cxx
@@ -246,7 +246,8 @@ bool CbmDeviceMonitorReqTof::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -254,7 +255,8 @@ bool CbmDeviceMonitorReqTof::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -262,14 +264,16 @@ bool CbmDeviceMonitorReqTof::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -289,7 +293,8 @@ bool CbmDeviceMonitorReqTof::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/monitor/CbmDeviceMonitorT0.cxx b/MQ/monitor/CbmDeviceMonitorT0.cxx
index 720119ff8b5c45415020c503ccf58fd136b18bc6..62f1241b90125e1887aca4e5a9ffb80e10b3f1fb 100644
--- a/MQ/monitor/CbmDeviceMonitorT0.cxx
+++ b/MQ/monitor/CbmDeviceMonitorT0.cxx
@@ -312,7 +312,8 @@ bool CbmDeviceMonitorT0::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -320,7 +321,8 @@ bool CbmDeviceMonitorT0::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -328,14 +330,16 @@ bool CbmDeviceMonitorT0::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -355,7 +359,8 @@ bool CbmDeviceMonitorT0::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/monitor/CbmDeviceMonitorTof.cxx b/MQ/monitor/CbmDeviceMonitorTof.cxx
index 8c342781726892d2c85cdd42a6a6ca43ed375bf4..370ad0e4ae6e927e06d99b69ca13e7e2dd9205c5 100644
--- a/MQ/monitor/CbmDeviceMonitorTof.cxx
+++ b/MQ/monitor/CbmDeviceMonitorTof.cxx
@@ -270,7 +270,8 @@ bool CbmDeviceMonitorTof::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -278,7 +279,8 @@ bool CbmDeviceMonitorTof::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -286,14 +288,16 @@ bool CbmDeviceMonitorTof::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -313,7 +317,8 @@ bool CbmDeviceMonitorTof::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/source/CbmMQTsSamplerRepReq.cxx b/MQ/source/CbmMQTsSamplerRepReq.cxx
index 0f39bbd7b63e513e9e1d8268c2e10a592b7efde8..e16e791114f634bda8ded79db423a1dafd0a1ea4 100644
--- a/MQ/source/CbmMQTsSamplerRepReq.cxx
+++ b/MQ/source/CbmMQTsSamplerRepReq.cxx
@@ -900,7 +900,8 @@ bool CbmMQTsSamplerRepReq::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -908,7 +909,8 @@ bool CbmMQTsSamplerRepReq::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -916,14 +918,16 @@ bool CbmMQTsSamplerRepReq::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -943,7 +947,8 @@ bool CbmMQTsSamplerRepReq::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/source/CbmMQTsaMultiSampler.cxx b/MQ/source/CbmMQTsaMultiSampler.cxx
index e8a9eeb8779c241d39dc11baddb2d7d33a059eb4..fca6e472aeac5f9632a73344595fb071a4301bfa 100644
--- a/MQ/source/CbmMQTsaMultiSampler.cxx
+++ b/MQ/source/CbmMQTsaMultiSampler.cxx
@@ -392,7 +392,8 @@ bool CbmMQTsaMultiSampler::InitHistograms()
 
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, psHistoConfig);
 
     /// Send message to the common histogram config messages queue
     if (Send(messageHist, fsChannelNameHistosConfig) < 0) {
@@ -417,7 +418,8 @@ bool CbmMQTsaMultiSampler::InitHistograms()
 
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, psCanvConfig);
 
     /// Send message to the common canvas config messages queue
     if (Send(messageCan, fsChannelNameCanvasConfig) < 0) {
@@ -956,7 +958,8 @@ bool CbmMQTsaMultiSampler::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {
diff --git a/MQ/source/CbmTsConsumerReqDevExample.cxx b/MQ/source/CbmTsConsumerReqDevExample.cxx
index 16e4928b8ba61713fc87909b77e8ed69cac00f08..9b6f0945957a62449dd65ac9652f74102ac44013 100644
--- a/MQ/source/CbmTsConsumerReqDevExample.cxx
+++ b/MQ/source/CbmTsConsumerReqDevExample.cxx
@@ -238,7 +238,8 @@ bool CbmTsConsumerReqDevExample::SendHistoConfAndData()
   /// Prepare multiparts message and header
   std::pair<uint32_t, uint32_t> pairHeader(fvpsHistosFolder.size(), fvpsCanvasConfig.size());
   FairMQMessagePtr messageHeader(NewMessage());
-  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  //  Serialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*messageHeader, pairHeader);
+  BoostSerializer<std::pair<uint32_t, uint32_t>>().Serialize(*messageHeader, pairHeader);
 
   FairMQParts partsOut;
   partsOut.AddPart(std::move(messageHeader));
@@ -246,7 +247,8 @@ bool CbmTsConsumerReqDevExample::SendHistoConfAndData()
   for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) {
     /// Serialize the vector of histo config into a single MQ message
     FairMQMessagePtr messageHist(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageHist, fvpsHistosFolder[uHisto]);
 
     partsOut.AddPart(std::move(messageHist));
   }  // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto)
@@ -254,14 +256,16 @@ bool CbmTsConsumerReqDevExample::SendHistoConfAndData()
   for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) {
     /// Serialize the vector of canvas config into a single MQ message
     FairMQMessagePtr messageCan(NewMessage());
-    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    //    Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]);
+    BoostSerializer<std::pair<std::string, std::string>>().Serialize(*messageCan, fvpsCanvasConfig[uCanv]);
 
     partsOut.AddPart(std::move(messageCan));
   }  // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv)
 
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr msgHistos(NewMessage());
-  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  //  Serialize<RootSerializer>(*msgHistos, &fArrayHisto);
+  RootSerializer().Serialize(*msgHistos, &fArrayHisto);
 
   partsOut.AddPart(std::move(msgHistos));
 
@@ -281,7 +285,8 @@ bool CbmTsConsumerReqDevExample::SendHistograms()
 {
   /// Serialize the array of histos into a single MQ message
   FairMQMessagePtr message(NewMessage());
-  Serialize<RootSerializer>(*message, &fArrayHisto);
+  //  Serialize<RootSerializer>(*message, &fArrayHisto);
+  RootSerializer().Serialize(*message, &fArrayHisto);
 
   /// Send message to the common histogram messages queue
   if (Send(message, fsChannelNameHistosInput) < 0) {