diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/detail/EntitySnapshotBase.h b/source/RobotAPI/libraries/armem/server/ltm/base/detail/EntitySnapshotBase.h
index a94255064a95ade2886b3f1ff2787254fc539861..f7cd75f6801d7dfef1c397e8d9f81881c654c294 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/detail/EntitySnapshotBase.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/detail/EntitySnapshotBase.h
@@ -9,10 +9,6 @@
 #include <RobotAPI/libraries/armem/core/wm/memory_definitions.h>
 #include <RobotAPI/libraries/armem/core/wm/aron_conversions.h>
 
-#include "../extractor/Extractor.h"
-#include "../converter/dict/Converter.h"
-#include "../converter/image/Converter.h"
-
 namespace armarx::armem::server::ltm
 {
     /// @brief Interface functions for the longterm memory classes
@@ -50,9 +46,5 @@ namespace armarx::armem::server::ltm
 
     protected:
         mutable std::recursive_mutex ltm_mutex;
-
-        DictConverterPtr dictConverter;
-        ImageConverterPtr imgConverter;
-        ExtractorPtr extractor;
     };
 } // namespace armarx::armem::server::ltm
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.cpp
index 0187962b34aee1e796a6c4f757a958063fdeeec2..c932b5690f1ef5cd2f33dea87cf13b9381bfeed3 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.cpp
@@ -7,7 +7,14 @@
 
 namespace armarx::armem::server::ltm
 {
-    MemoryItem::MemoryItem(const MemoryID& id) : _id(id)
+    MemoryItem::MemoryItem(const MemoryID& id) :
+        _id(id)
+    {
+    }
+
+    MemoryItem::MemoryItem(const MemoryID& id, const LongTermMemoryPipeline& p) :
+        pipeline(p),
+        _id(id)
     {
     }
 
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.h b/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.h
index 0fb9b0274935fe4725e763190610dcd94ba85595..e654dc887446b82a5d34dd7b08ff86c7ef874c04 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryItem.h
@@ -5,16 +5,31 @@
 #include <optional>
 #include <string>
 
+#include "../filter/Filter.h"
+#include "../extractor/Extractor.h"
+#include "../converter/dict/Converter.h"
+#include "../converter/image/Converter.h"
+
 #include <RobotAPI/libraries/armem/core/MemoryID.h>
 
 namespace armarx::armem::server::ltm
 {
+    struct LongTermMemoryPipeline
+    {
+        MemoryFilterPtr memFilter;
+        SnapshotFilterPtr snapFilter;
+        DictConverterPtr dictConverter;
+        ImageConverterPtr imgConverter;
+        ExtractorPtr extractor;
+    };
+
     /// @brief Interface functions for the longterm memory classes
     class MemoryItem
     {
     public:
         MemoryItem() = default;
         MemoryItem(const MemoryID&);
+        MemoryItem(const MemoryID&, const LongTermMemoryPipeline&);
         virtual ~MemoryItem() = default;
 
         MemoryID id() const;
@@ -22,6 +37,9 @@ namespace armarx::armem::server::ltm
 
         virtual void setMemoryID(const MemoryID&);
 
+    protected:
+        LongTermMemoryPipeline pipeline;
+
     private:
         MemoryID _id;
     };
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h b/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h
index c4b5871c83a22c9b29cab975261b2d1902e3d163..f5b068600ac0bb1a89215d81861c2a7a0e10bc6f 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h
@@ -9,15 +9,27 @@
 
 namespace armarx::armem::server::ltm
 {
-    class Filter;
-    typedef std::shared_ptr<Filter> FilterPtr;
+    class SnapshotFilter;
+    typedef std::shared_ptr<SnapshotFilter> SnapshotFilterPtr;
 
-    class Filter
+    class MemoryFilter;
+    typedef std::shared_ptr<MemoryFilter> MemoryFilterPtr;
+
+    class MemoryFilter
+    {
+    public:
+        MemoryFilter() = default;
+        virtual ~MemoryFilter() = default;
+
+        virtual bool accept(const armem::wm::Memory& e) = 0;
+    };
+
+    class SnapshotFilter
     {
     public:
-        Filter() = default;
-        virtual ~Filter() = default;
+        SnapshotFilter() = default;
+        virtual ~SnapshotFilter() = default;
 
-        virtual bool accept(const armem::wm::Memory& memory) = 0;
+        virtual bool accept(const armem::wm::EntitySnapshot& e) = 0;
     };
 }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.cpp
index 15802afb6b662d48d547417bef13478771afb35b..5650c836523a90c48d5cfb50b9b9e6ef8b307af9 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.cpp
@@ -4,9 +4,9 @@
 
 namespace armarx::armem::server::ltm::filter
 {
-    bool FrequencyFilter::accept(const armem::wm::Memory&)
+    bool MemoryFrequencyFilter::accept(const armem::wm::Memory& e)
     {
-        auto now = IceUtil::Time::now().toMilliSeconds();
+        auto now = armem::Time::now().toMilliSeconds();
         if (waitingTimeInMs < 0 || (now - timestampLastCommitInMs) > waitingTimeInMs)
         {
             timestampLastCommitInMs = now;
@@ -14,4 +14,26 @@ namespace armarx::armem::server::ltm::filter
         }
         return false;
     }
+
+    bool SnapshotFrequencyFilter::accept(const armem::wm::EntitySnapshot& e)
+    {
+        auto entityID = e.id().getEntityID();
+        auto genMs = e.time().toMilliSeconds();
+
+        long lastMs = 0;
+        if (timestampLastCommitInMs.count(entityID) > 0)
+        {
+            lastMs = timestampLastCommitInMs.at(entityID);
+        }
+
+        if (waitingTimeInMs < 0 || (genMs - lastMs) > waitingTimeInMs)
+        {
+            /*std::cout << "diff: " << (dataGeneratedInMs - timestampLastCommitInMs) << std::endl;
+            std::cout << "gen: " << (dataGeneratedInMs) << std::endl;
+            std::cout << "last: " << (timestampLastCommitInMs) << std::endl;*/
+            timestampLastCommitInMs[entityID] = genMs;
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h b/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h
index ab6b036a029dc40420305916fab1d4dd0664161d..a791f862abed1b14e9bf75eb3046a635a8d77c36 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h
@@ -5,19 +5,35 @@
 
 namespace armarx::armem::server::ltm::filter
 {
-    class FrequencyFilter;
-    typedef std::shared_ptr<FrequencyFilter> FrequencyFilterPtr;
+    class SnapshotFrequencyFilter;
+    typedef std::shared_ptr<SnapshotFrequencyFilter> SnapshotFrequencyFilterPtr;
 
-    class FrequencyFilter :
-            public Filter
+    class MemoryFrequencyFilter;
+    typedef std::shared_ptr<MemoryFrequencyFilter> MemoryFrequencyFilterPtr;
+
+    class MemoryFrequencyFilter :
+            public MemoryFilter
     {
     public:
-        FrequencyFilter() = default;
+        MemoryFrequencyFilter() = default;
 
-        virtual bool accept(const armem::wm::Memory& memory) override;
+        virtual bool accept(const armem::wm::Memory& e) override;
 
     private:
-        int waitingTimeInMs = 10;
+        int waitingTimeInMs = -1;
         long timestampLastCommitInMs = 0;
     };
+
+    class SnapshotFrequencyFilter :
+            public SnapshotFilter
+    {
+    public:
+        SnapshotFrequencyFilter() = default;
+
+        virtual bool accept(const armem::wm::EntitySnapshot& e) override;
+
+    private:
+        int waitingTimeInMs = 1000;
+        std::unordered_map<MemoryID, long> timestampLastCommitInMs;
+    };
 }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.cpp b/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.cpp
index 256634a83b296cb45843aaad3a5f56cee4c17447..c78baf87f70dbc88c8ab8e00c4174a5b9e019c2f 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.cpp
@@ -21,9 +21,9 @@ namespace armarx::armem::server::ltm::disk
         }
     }
 
-    CoreSegment::CoreSegment(const std::filesystem::path& p) :
-        CoreSegmentBase(getMemoryIDFromPath(p)),
-        DiskStorage(p)
+    CoreSegment::CoreSegment(const std::filesystem::path& p, const LongTermMemoryPipeline& pipe) :
+        CoreSegmentBase(getMemoryIDFromPath(p), pipe),
+        DiskMemoryItem(p)
     {
     }
 
@@ -40,7 +40,7 @@ namespace armarx::armem::server::ltm::disk
         for (const auto& subdir : std::filesystem::directory_iterator(p))
         {
             std::filesystem::path subdirPath = subdir.path();
-            ProviderSegment c(subdirPath);
+            ProviderSegment c(subdirPath, pipeline);
             func(c);
         }
         return true;
@@ -58,7 +58,7 @@ namespace armarx::armem::server::ltm::disk
 
         std::filesystem::path subpath = p / n;
         util::ensureFolderExists(subpath, false);
-        auto c = std::make_shared<ProviderSegment>(subpath);
+        auto c = std::make_shared<ProviderSegment>(subpath, pipeline);
         return c;
     }
 
@@ -83,7 +83,7 @@ namespace armarx::armem::server::ltm::disk
         c.forEachProviderSegment([this](armem::wm::ProviderSegment& e)
         {
             util::ensureFolderExists(std::filesystem::path(path) / e.id().providerSegmentName, false);
-            ProviderSegment c(std::filesystem::path(path) / e.id().providerSegmentName);
+            ProviderSegment c((std::filesystem::path(path) / e.id().providerSegmentName), pipeline);
             c.load(e);
         });
     }
@@ -93,7 +93,7 @@ namespace armarx::armem::server::ltm::disk
         c.forEachProviderSegment([this](const auto& provSegment)
         {
             util::ensureFolderExists(std::filesystem::path(path) / provSegment.id().providerSegmentName);
-            ProviderSegment c(std::filesystem::path(path) / provSegment.id().providerSegmentName);
+            ProviderSegment c((std::filesystem::path(path) / provSegment.id().providerSegmentName), pipeline);
             c.store(provSegment);
         });
     }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.h b/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.h
index 19241fe11afd4b4810b306790c865c4857cfb427..b5d5d6c59a89482f7ebc5b779826737a062542d1 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/CoreSegment.h
@@ -12,11 +12,11 @@ namespace armarx::armem::server::ltm::disk
 {
     class CoreSegment :
             public CoreSegmentBase<ProviderSegment>,
-            public DiskStorage
+            public DiskMemoryItem
     {
     public:
 
-        CoreSegment(const std::filesystem::path&);
+        CoreSegment(const std::filesystem::path&, const LongTermMemoryPipeline& p);
 
         bool forEachProviderSegment(std::function<void(ProviderSegment&)>&& func) const override;
 
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.cpp b/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.cpp
index 3722970f32accc2698a57ff39ea8b61562e01225..4beead8cacdd373bb40268d0f9919d042aa40339 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.cpp
@@ -7,6 +7,8 @@
 
 #include <RobotAPI/libraries/armem/server/wm/memory_definitions.h>
 
+#include "../base/filter/frequencyFilter/FrequencyFilter.h"
+
 
 namespace armarx::armem::server::ltm::disk
 {
@@ -26,9 +28,9 @@ namespace armarx::armem::server::ltm::disk
         }
     }
 
-    Entity::Entity(const std::filesystem::path& p) :
-        EntityBase(getMemoryIDFromPath(p)),
-        DiskStorage(p)
+    Entity::Entity(const std::filesystem::path& p, const LongTermMemoryPipeline& pipe) :
+        EntityBase(getMemoryIDFromPath(p), pipe),
+        DiskMemoryItem(p)
     {
     }
 
@@ -50,7 +52,7 @@ namespace armarx::armem::server::ltm::disk
         for (const auto& subdir : std::filesystem::directory_iterator(p))
         {
             std::filesystem::path subdirPath = subdir.path();
-            EntitySnapshot c(subdirPath);
+            EntitySnapshot c(subdirPath, pipeline);
             func(c);
         }
         return true;
@@ -88,7 +90,7 @@ namespace armarx::armem::server::ltm::disk
 
         std::filesystem::path subpath = p / std::to_string(n.toMicroSeconds());
         util::ensureFolderExists(subpath, false);
-        auto c = std::make_shared<EntitySnapshot>(subpath);
+        auto c = std::make_shared<EntitySnapshot>(subpath, pipeline);
         return c;
     }
 
@@ -133,7 +135,7 @@ namespace armarx::armem::server::ltm::disk
         p.forEachSnapshot([this](armem::wm::EntitySnapshot& e)
         {
             util::ensureFolderExists(std::filesystem::path(path) / std::to_string(e.id().timestamp.toMicroSeconds()), false);
-            EntitySnapshot c(std::filesystem::path(path) / std::to_string(e.id().timestamp.toMicroSeconds()));
+            EntitySnapshot c((std::filesystem::path(path) / std::to_string(e.id().timestamp.toMicroSeconds())), pipeline);
             c.load(e);
         });
     }
@@ -142,8 +144,14 @@ namespace armarx::armem::server::ltm::disk
     {
         entity.forEachSnapshot([this](armem::wm::EntitySnapshot& e)
         {
+            if (!pipeline.snapFilter->accept(e))
+            {
+                ARMARX_WARNING << deactivateSpam() << "Ignoring to put an EntitiySnapshot into the LTM because it got filtered.";
+                return;
+            }
+
             util::ensureFolderExists(std::filesystem::path(path) / std::to_string(e.id().timestamp.toMicroSeconds()));
-            EntitySnapshot c(std::filesystem::path(path) / std::to_string(e.id().timestamp.toMicroSeconds()));
+            EntitySnapshot c((std::filesystem::path(path) / std::to_string(e.id().timestamp.toMicroSeconds())), pipeline);
             c.store(e);
         });
     }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.h b/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.h
index 41ad0be16ee87d81580c5cf1b6829bf358963197..3e0414339218e4d58173597004fecb36c899f059 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/Entity.h
@@ -13,10 +13,10 @@ namespace armarx::armem::server::ltm::disk
     /// @brief A memory storing data in mongodb (needs 'armarx memory start' to start the mongod instance)
     class Entity :
             public EntityBase<EntitySnapshot>,
-            public DiskStorage
+            public DiskMemoryItem
     {
     public:
-        Entity(const std::filesystem::path&);
+        Entity(const std::filesystem::path&, const LongTermMemoryPipeline& p);
 
         bool forEachSnapshot(std::function<void(EntitySnapshot&)>&& func) const override;
         bool forEachSnapshotInIndexRange(long first, long last, std::function<void(EntitySnapshot&)>&& func) const override;
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.cpp b/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.cpp
index c3f31b9f26534807fcadc7dd0bc3de889cef6855..94cbec5482e924f32cf34490e66f1d037badf351 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.cpp
@@ -10,13 +10,6 @@
 #include <ArmarXCore/core/logging/Logging.h>
 #include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h>
 
-// ArmarX
-#include "../base/extractor/noExtractor/NoExtractor.h"
-#include "../base/extractor/imageExtractor/ImageExtractor.h"
-#include "../base/converter/dict/json/JsonConverter.h"
-#include "../base/converter/dict/bson/BsonConverter.h"
-#include "../base/converter/image/png/PngConverter.h"
-
 namespace armarx::armem::server::ltm::disk
 {
 
@@ -44,13 +37,11 @@ namespace armarx::armem::server::ltm::disk
         }
     }
 
-    EntitySnapshot::EntitySnapshot(const std::filesystem::path& p) :
-        EntitySnapshotBase(getMemoryIDFromPath(p)),
-        DiskStorage(p)
+    EntitySnapshot::EntitySnapshot(const std::filesystem::path& p, const LongTermMemoryPipeline& pipe) :
+        EntitySnapshotBase(getMemoryIDFromPath(p), pipe),
+        DiskMemoryItem(p)
     {
-        extractor = std::make_shared<extractor::ImageExtractor>();
-        dictConverter = std::make_shared<converter::dict::JsonConverter>();
-        imgConverter = std::make_shared<converter::image::PngConverter>();
+
     }
 
     std::string EntitySnapshot::getExpectedFolderName() const
@@ -87,8 +78,8 @@ namespace armarx::armem::server::ltm::disk
         {
             util::ensureFolderExists(p / std::to_string(i), false);
 
-            std::filesystem::path data = p / std::to_string(i) / (constantes::DATA_FILENAME + dictConverter->suffix);
-            std::filesystem::path metadata = p / std::to_string(i) / (constantes::METADATA_FILENAME + dictConverter->suffix);
+            std::filesystem::path data = p / std::to_string(i) / (constantes::DATA_FILENAME + pipeline.dictConverter->suffix);
+            std::filesystem::path metadata = p / std::to_string(i) / (constantes::METADATA_FILENAME + pipeline.dictConverter->suffix);
 
             util::ensureFileExists(data);
 
@@ -96,11 +87,11 @@ namespace armarx::armem::server::ltm::disk
 
             std::ifstream dataifs(data);
             std::vector<unsigned char> datafilecontent((std::istreambuf_iterator<char>(dataifs)), (std::istreambuf_iterator<char>()));
-            auto dataaron = dictConverter->convert(datafilecontent);
+            auto dataaron = pipeline.dictConverter->convert(datafilecontent);
 
             std::ifstream metadataifs(metadata);
             std::vector<unsigned char> metadatafilecontent((std::istreambuf_iterator<char>(metadataifs)), (std::istreambuf_iterator<char>()));
-            auto metadataaron = dictConverter->convert(metadatafilecontent);
+            auto metadataaron = pipeline.dictConverter->convert(metadatafilecontent);
 
             from_aron(metadataaron, dataaron, ins);
         }
@@ -116,8 +107,8 @@ namespace armarx::armem::server::ltm::disk
             std::filesystem::path instancePath = p / std::to_string(i);
             util::ensureFolderExists(instancePath);
 
-            std::filesystem::path dataPath = instancePath / (constantes::DATA_FILENAME + dictConverter->suffix);
-            std::filesystem::path metadataPath = instancePath / (constantes::METADATA_FILENAME + dictConverter->suffix);
+            std::filesystem::path dataPath = instancePath / (constantes::DATA_FILENAME + pipeline.dictConverter->suffix);
+            std::filesystem::path metadataPath = instancePath / (constantes::METADATA_FILENAME + pipeline.dictConverter->suffix);
 
             if (util::checkIfFileExists(dataPath) or util::checkIfFileExists(metadataPath))
             {
@@ -132,21 +123,21 @@ namespace armarx::armem::server::ltm::disk
             to_aron(metadataAron, dataAron, ins);
 
             // extract
-            auto dataExt = extractor->extract(dataAron);
-            auto metadataExt = extractor->extract(metadataAron);
+            auto dataExt = pipeline.extractor->extract(dataAron);
+            auto metadataExt = pipeline.extractor->extract(metadataAron);
 
             // convert images
             for (const auto& [memberName, img] : dataExt.images)
             {
                 ARMARX_CHECK_NOT_NULL(img);
-                std::filesystem::path imgPath = instancePath / (memberName + imgConverter->suffix);
-                auto imgVec = imgConverter->convert(img);
+                std::filesystem::path imgPath = instancePath / (memberName + pipeline.imgConverter->suffix);
+                auto imgVec = pipeline.imgConverter->convert(img);
                 writeDataToFile(imgPath, imgVec);
             }
 
             // convert dict and metadata
-            auto dataVec = dictConverter->convert(dataExt.data);
-            auto metadataVec = dictConverter->convert(metadataExt.data);
+            auto dataVec = pipeline.dictConverter->convert(dataExt.data);
+            auto metadataVec = pipeline.dictConverter->convert(metadataExt.data);
             writeDataToFile(dataPath, dataVec);
             writeDataToFile(metadataPath, metadataVec);
         }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.h b/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.h
index 087c1b3e388688f4580da18b280265f58f4c8507..690d948251099033b453d37f0d72a89cc3df5e80 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/EntitySnapshot.h
@@ -11,10 +11,10 @@ namespace armarx::armem::server::ltm::disk
 
     class EntitySnapshot :
             public EntitySnapshotBase,
-            public DiskStorage
+            public DiskMemoryItem
     {
     public:
-        EntitySnapshot(const std::filesystem::path&);
+        EntitySnapshot(const std::filesystem::path&, const LongTermMemoryPipeline& p);
 
     protected:
         void _loadAll(armem::wm::EntitySnapshot&) const override;
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.cpp b/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.cpp
index 6d6c7361cd5ff9340bd8791d3c6f0a5bd31f4ecb..5eeb70355107afee9d8979c2d11b872839c9f4cd 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.cpp
@@ -24,9 +24,9 @@ namespace armarx::armem::server::ltm::disk
         }
     }
 
-    ProviderSegment::ProviderSegment(const std::filesystem::path& p) :
-        ProviderSegmentBase(getMemoryIDFromPath(p)),
-        DiskStorage(p)
+    ProviderSegment::ProviderSegment(const std::filesystem::path& p, const LongTermMemoryPipeline& pipe) :
+        ProviderSegmentBase(getMemoryIDFromPath(p), pipe),
+        DiskMemoryItem(p)
     {
     }
 
@@ -43,7 +43,7 @@ namespace armarx::armem::server::ltm::disk
         for (const auto& subdir : std::filesystem::directory_iterator(p))
         {
             std::filesystem::path subdirPath = subdir.path();
-            Entity c(subdirPath);
+            Entity c(subdirPath, pipeline);
             func(c);
         }
         return true;
@@ -61,7 +61,7 @@ namespace armarx::armem::server::ltm::disk
 
         std::filesystem::path subpath = p / n;
         util::ensureFolderExists(subpath, false);
-        auto c = std::make_shared<Entity>(subpath);
+        auto c = std::make_shared<Entity>(subpath, pipeline);
         return c;
     }
 
@@ -86,7 +86,7 @@ namespace armarx::armem::server::ltm::disk
         p.forEachEntity([this](armem::wm::Entity& e)
         {
             util::ensureFolderExists(std::filesystem::path(path) / e.id().entityName, false);
-            Entity c(std::filesystem::path(path) / e.id().entityName);
+            Entity c((std::filesystem::path(path) / e.id().entityName), pipeline);
             c.load(e);
         });
     }
@@ -96,9 +96,8 @@ namespace armarx::armem::server::ltm::disk
         providerSegment.forEachEntity([this](const auto& entity)
         {
             util::ensureFolderExists(std::filesystem::path(path) / entity.id().entityName);
-            Entity c(std::filesystem::path(path) / entity.id().entityName);
+            Entity c((std::filesystem::path(path) / entity.id().entityName), pipeline);
             c.store(entity);
         });
     }
-
 }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.h b/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.h
index 708d00122047a39ea04f2af8ce1baa0d02364dfe..9683715ef66b94d46a95e6e7c102fad7621561b5 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/disk/ProviderSegment.h
@@ -12,10 +12,10 @@ namespace armarx::armem::server::ltm::disk
 {
     class ProviderSegment :
             public ProviderSegmentBase<Entity>,
-            public DiskStorage
+            public DiskMemoryItem
     {
     public:
-        ProviderSegment(const std::filesystem::path&);
+        ProviderSegment(const std::filesystem::path&, const LongTermMemoryPipeline& p);
 
         bool forEachEntity(std::function<void(Entity&)>&& func) const override;