diff --git a/scripts/logdecoder/logdecoder.cpp b/scripts/logdecoder/logdecoder.cpp
index 59b7e03aad83b09bb6baea4d986f205a4d3d41d1..8227f53788003dcd68bbef6a6860a4bccc1977fd 100644
--- a/scripts/logdecoder/logdecoder.cpp
+++ b/scripts/logdecoder/logdecoder.cpp
@@ -64,18 +64,14 @@ bool deserializeAll()
 {
     for (int i = 0; i < 100; i++)
     {
-        char fn[10];
-        char fnext[11];
-        sprintf(fn, "log%02d", i);
-        sprintf(fnext, "log%02d.dat", i);
+        char nextName[11];
+        sprintf(nextName, "log%02d.dat", i);
         struct stat st;
-        if (stat(fnext, &st) != 0)
+        if (stat(nextName, &st) != 0)
             continue;  // File not found
         // File found
-        if (!deserialize(string(fn)))
-        {
+        if (!deserialize(string(nextName)))
             return false;
-        }
     }
     return true;
 }
diff --git a/src/shared/logger/Deserializer.h b/src/shared/logger/Deserializer.h
index f724e7342fcd46b5b7c014c67f7260eef2124fec..189582f0a17fcd6731236ca004dd3909e9b1d362 100644
--- a/src/shared/logger/Deserializer.h
+++ b/src/shared/logger/Deserializer.h
@@ -99,7 +99,7 @@ private:
 
     bool closed = false;
 
-    std::vector<std::ofstream*> fileStreams;
+    std::map<std::string, std::ofstream*> fileStreams;
     tscpp::TypePoolStream tps;
 
     std::string logFilename;
@@ -130,14 +130,18 @@ void Deserializer::registerType()
 template <typename T>
 void Deserializer::printType(T& t, std::string path, std::string prefix)
 {
-    static std::ofstream* stream = nullptr;
+    std::string demangledTypeName = tscpp::demangle(typeid(T).name());
+    static std::ofstream* stream;
 
+    try
+    {
+        stream = fileStreams.at(demangledTypeName);
+    }
     // If not already initialize, open the file and write the header
-    if (stream == nullptr)
+    catch (std::out_of_range e)
     {
-        stream = new std::ofstream();
-        std::string filename =
-            path + prefix + "_" + tscpp::demangle(typeid(T).name()) + ".csv";
+        stream               = new std::ofstream();
+        std::string filename = path + prefix + "_" + demangledTypeName + ".csv";
         std::cout << "Creating file " + filename << std::endl;
         stream->open(filename);
 
@@ -152,7 +156,7 @@ void Deserializer::printType(T& t, std::string path, std::string prefix)
         *stream << T::header();
 
         // Add the file to the vector such that it will be closed
-        fileStreams.push_back(stream);
+        fileStreams.emplace(demangledTypeName, stream);
     }
 
     // Print data into the file if it is open
@@ -222,8 +226,8 @@ void Deserializer::close()
         closed = true;
         for (auto it = fileStreams.begin(); it != fileStreams.end(); it++)
         {
-            (*it)->close();
-            delete *it;
+            it->second->close();
+            delete it->second;
         }
     }
 }
diff --git a/src/shared/logger/LogTypes.h b/src/shared/logger/LogTypes.h
index b0c45d193df4c9aac7924a41dd4a7e82aef716cf..4df3ac83cf0921490e029d276f9e26510322d316 100644
--- a/src/shared/logger/LogTypes.h
+++ b/src/shared/logger/LogTypes.h
@@ -101,7 +101,6 @@ void registerTypes(Deserializer& ds)
     ds.registerType<VN100Data>();
     ds.registerType<BatteryVoltageSensorData>();
     ds.registerType<CurrentSensorData>();
-    ds.registerType<LoadCellData>();
     ds.registerType<MPXHZ6130AData>();
     ds.registerType<HSCMAND015PAData>();
     ds.registerType<HSCMRNN030PAData>();