diff --git a/source/adios2/engine/dataman/DataManWriter.h b/source/adios2/engine/dataman/DataManWriter.h
index 5f67a4bb1f111bcaf13783fa7f90ca15884fe090..2a401155bae08780e300ae416549ebda71f6be00 100644
--- a/source/adios2/engine/dataman/DataManWriter.h
+++ b/source/adios2/engine/dataman/DataManWriter.h
@@ -33,6 +33,7 @@ public:
     void Close(const int transportIndex = -1) final;
 
 private:
+    std::string m_UseFormat = "json";
     bool m_DoRealTime = false;
     bool m_DoMonitor = false;
     transportman::DataMan m_Man;
diff --git a/source/adios2/engine/dataman/DataManWriter.tcc b/source/adios2/engine/dataman/DataManWriter.tcc
index a85f949febd4ac932020df7fb93a935b1b69ec42..1e536aa0e7d4a9e251ee39ad9fc6f55c7f6a7ac5 100644
--- a/source/adios2/engine/dataman/DataManWriter.tcc
+++ b/source/adios2/engine/dataman/DataManWriter.tcc
@@ -22,13 +22,8 @@ namespace adios2
 template <class T>
 void DataManWriter::PutSyncCommon(Variable<T> &variable, const T *values)
 {
-    // here comes your magic at Writing now variable.m_UserValues has the
-    // data
-    // passed by the user
-    // set variable
-    variable.SetData(values);
 
-    // This part will go away, this is just to monitor variables per rank
+    variable.SetData(values);
 
     if (variable.m_Shape.empty())
     {
@@ -43,19 +38,28 @@ void DataManWriter::PutSyncCommon(Variable<T> &variable, const T *values)
         variable.m_Start.assign(variable.m_Count.size(), 0);
     }
 
-    nlohmann::json jmsg;
-    jmsg["doid"] = m_Name;
-    jmsg["var"] = variable.m_Name;
-    jmsg["dtype"] = GetType<T>();
-    jmsg["putshape"] = variable.m_Count;
-    jmsg["varshape"] = variable.m_Shape;
-    jmsg["offset"] = variable.m_Start;
-    jmsg["timestep"] = 0;
-    jmsg["bytes"] =
-        std::accumulate(variable.m_Shape.begin(), variable.m_Shape.end(),
-                        sizeof(T), std::multiplies<size_t>());
-
-    m_Man.WriteWAN(values, jmsg);
+    if(m_UseFormat == "json"){
+
+        nlohmann::json jmsg;
+        jmsg["doid"] = m_Name;
+        jmsg["var"] = variable.m_Name;
+        jmsg["dtype"] = GetType<T>();
+        jmsg["putshape"] = variable.m_Count;
+        jmsg["varshape"] = variable.m_Shape;
+        jmsg["offset"] = variable.m_Start;
+        jmsg["timestep"] = 0;
+        jmsg["bytes"] =
+            std::accumulate(variable.m_Shape.begin(), variable.m_Shape.end(),
+                    sizeof(T), std::multiplies<size_t>());
+
+        m_Man.WriteWAN(values, jmsg);
+    }
+
+    if(m_UseFormat == "bp"){
+
+        // add bp serialization
+
+    }
 
     if (m_DoMonitor)
     {