diff --git a/source/dataman/DataMan.cpp b/source/dataman/DataMan.cpp
index 5d8f446a4bc8002f797ddaacb8093bff706654f5..9e2b237bf3294ad3464ccdde5d7f62ed17534708 100644
--- a/source/dataman/DataMan.cpp
+++ b/source/dataman/DataMan.cpp
@@ -61,7 +61,10 @@ void DataMan::add_stream(json p_jmsg)
         man->init(p_jmsg);
         this->add_next(method, man);
     }
-    add_man_to_path("zfp", method);
+    if (p_jmsg["compress_method"] != nullptr)
+    {
+        add_man_to_path(p_jmsg["compress_method"], method);
+    }
 }
 
 void DataMan::flush() { flush_next(); }
diff --git a/source/dataman/DataManBase.cpp b/source/dataman/DataManBase.cpp
index feb55a86b829b694370395094269da6f02141208..b7ab6827146f5659672e2840ae57712d7ccfd290 100644
--- a/source/dataman/DataManBase.cpp
+++ b/source/dataman/DataManBase.cpp
@@ -152,8 +152,10 @@ int DataManBase::put_end(const void *p_data, json &p_jmsg)
     m_profiling["manager_mbs"] =
         m_profiling["total_mb"].get<double>() /
         m_profiling["total_manager_time"].get<double>();
-    if (p_jmsg["compressed_size"] != nullptr)
+    if (p_jmsg["compressed_size"].is_number())
         p_jmsg["putbytes"] = p_jmsg["compressed_size"].get<size_t>();
+    else
+        p_jmsg.erase("compressed_size");
     put_next(p_data, p_jmsg);
     return 0;
 }