diff --git a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
index e48c16e1247278de3cf1a171009351504b000150..15efc34f03a50b46b457956de91eb97e3ca23d60 100644
--- a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
+++ b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
@@ -212,10 +212,10 @@ namespace armarx
 
     // PREDICTING
 
-    armem::predictions::data::PredictionResultSeq
-    ExampleMemory::predict(const armem::predictions::data::PredictionRequestSeq& requests)
+    armem::prediction::data::PredictionResultSeq
+    ExampleMemory::predict(const armem::prediction::data::PredictionRequestSeq& requests)
     {
-        armem::predictions::data::PredictionResultSeq result;
+        armem::prediction::data::PredictionResultSeq result;
         for (auto request : requests)
         {
             result.push_back(predictSingle(request));
@@ -223,10 +223,10 @@ namespace armarx
         return result;
     }
 
-    armem::predictions::data::PredictionResult
-    ExampleMemory::predictSingle(const armem::predictions::data::PredictionRequest& request)
+    armem::prediction::data::PredictionResult
+    ExampleMemory::predictSingle(const armem::prediction::data::PredictionRequest& request)
     {
-        armem::predictions::data::PredictionResult result;
+        armem::prediction::data::PredictionResult result;
 
         std::string engine = request.settings.predictionEngine;
         if (engine.empty() || engine == "Latest")
@@ -270,7 +270,7 @@ namespace armarx
         return result;
     }
 
-    armem::predictions::data::PredictionEngineSeq
+    armem::prediction::data::PredictionEngineSeq
     ExampleMemory::getAvailableEngines()
     {
         return {"Latest"};
diff --git a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h
index b1bbee2381ff363ca4d057f82040a591a34c4659..de89914ba8ed44517ce40639849afa826d022ef1 100644
--- a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h
+++ b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h
@@ -73,10 +73,10 @@ namespace armarx
 
         // PredictingMemoryInterface interface
     public:
-        armem::predictions::data::PredictionResultSeq
-        predict(const armem::predictions::data::PredictionRequestSeq& requests) override;
+        armem::prediction::data::PredictionResultSeq
+        predict(const armem::prediction::data::PredictionRequestSeq& requests) override;
 
-        armem::predictions::data::PredictionEngineSeq getAvailableEngines() override;
+        armem::prediction::data::PredictionEngineSeq getAvailableEngines() override;
 
 
     protected:
@@ -91,8 +91,8 @@ namespace armarx
 
     private:
 
-        armem::predictions::data::PredictionResult
-        predictSingle(const armem::predictions::data::PredictionRequest& request);
+        armem::prediction::data::PredictionResult
+        predictSingle(const armem::prediction::data::PredictionRequest& request);
 
         armarx::DebugObserverInterfacePrx debugObserver;
 
diff --git a/source/RobotAPI/interface/CMakeLists.txt b/source/RobotAPI/interface/CMakeLists.txt
index 2913cd662cf51c48ef7315c930f5c48434eb7618..41a52f9f8a0a2d981583ae1a5c4e85a07f0ff750 100644
--- a/source/RobotAPI/interface/CMakeLists.txt
+++ b/source/RobotAPI/interface/CMakeLists.txt
@@ -110,7 +110,7 @@ set(SLICE_FILES
     armem/io.ice
     armem/commit.ice
     armem/memory.ice
-    armem/predictions.ice
+    armem/prediction.ice
     armem/query.ice
 
     armem/client.ice
diff --git a/source/RobotAPI/interface/armem/predictions.ice b/source/RobotAPI/interface/armem/prediction.ice
similarity index 97%
rename from source/RobotAPI/interface/armem/predictions.ice
rename to source/RobotAPI/interface/armem/prediction.ice
index c7d4230d551004a33126d1ce6d9648a131a72633..b4f0efabe1df20ed3ca1ad4d5c3893b7d618e739 100644
--- a/source/RobotAPI/interface/armem/predictions.ice
+++ b/source/RobotAPI/interface/armem/prediction.ice
@@ -7,7 +7,7 @@ module armarx
 {
     module armem
     {
-        module predictions
+        module prediction
         {
             module data
             {
diff --git a/source/RobotAPI/interface/armem/server/PredictingMemoryInterface.ice b/source/RobotAPI/interface/armem/server/PredictingMemoryInterface.ice
index 38389367977470bee202e0a49f4ffdab36510e04..5b8b668ab72a3c4aef15720e450813891b140124 100644
--- a/source/RobotAPI/interface/armem/server/PredictingMemoryInterface.ice
+++ b/source/RobotAPI/interface/armem/server/PredictingMemoryInterface.ice
@@ -1,6 +1,6 @@
 #pragma once
 
-#include <RobotAPI/interface/armem/predictions.ice>
+#include <RobotAPI/interface/armem/prediction.ice>
 #include <RobotAPI/interface/armem/query.ice>
 
 module armarx
@@ -15,12 +15,12 @@ module armarx
              * The timestamp to requst a prediction for is encoded in the MemoryIDs.
              * The results are all packed into one QueryResult.
              */
-            predictions::data::PredictionResultSeq
-            predict(predictions::data::PredictionRequestSeq requests);
+            prediction::data::PredictionResultSeq
+            predict(prediction::data::PredictionRequestSeq requests);
 
             /* Get the list of engines the memory offers for use in predictions.
              */
-            predictions::data::PredictionEngineSeq getAvailableEngines();
+            prediction::data::PredictionEngineSeq getAvailableEngines();
         }
     };
   };
diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt
index 6b105d8f67ed0ba87bfd5ae17a2fcf54fea79b70..237d90fa5c71d2ad987102a443c6438691079e9f 100644
--- a/source/RobotAPI/libraries/armem/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem/CMakeLists.txt
@@ -51,6 +51,7 @@ set(LIB_FILES
 
 
     client/MemoryNameSystem.cpp
+    client/Prediction.cpp
     client/Reader.cpp
     client/Writer.cpp
 
@@ -125,6 +126,7 @@ set(LIB_HEADERS
     client.h
     client/forward_declarations.h
     client/MemoryNameSystem.h
+    client/Prediction.h
     client/Reader.h
     client/Writer.h
 
diff --git a/source/RobotAPI/libraries/armem/client/Prediction.cpp b/source/RobotAPI/libraries/armem/client/Prediction.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fa7429f2c9a7b2e0100e56688f396bf358bcb09a
--- /dev/null
+++ b/source/RobotAPI/libraries/armem/client/Prediction.cpp
@@ -0,0 +1,110 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::armem::client
+ * @author     phesch ( ulila at student dot kit dot edu )
+ * @date       2022
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#include "Prediction.h"
+
+#include <ArmarXCore/core/ice_conversions/ice_conversions_templates.h>
+
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
+
+namespace armarx::armem::client
+{
+
+    PredictionSettings
+    PredictionSettings::fromIce(const armem::prediction::data::PredictionSettings& ice)
+    {
+        return armarx::fromIce<PredictionSettings>(ice);
+    }
+
+    armem::prediction::data::PredictionSettings
+    PredictionSettings::toIce() const
+    {
+        return armarx::toIce<armem::prediction::data::PredictionSettings>(*this);
+    }
+
+    PredictionRequest
+    PredictionRequest::fromIce(const armem::prediction::data::PredictionRequest& ice)
+    {
+        return armarx::fromIce<PredictionRequest>(ice);
+    }
+
+    armem::prediction::data::PredictionRequest
+    PredictionRequest::toIce() const
+    {
+        return armarx::toIce<armem::prediction::data::PredictionRequest>(*this);
+    }
+
+    PredictionResult
+    PredictionResult::fromIce(const armem::prediction::data::PredictionResult& ice)
+    {
+        return armarx::fromIce<PredictionResult>(ice);
+    }
+
+    armem::prediction::data::PredictionResult
+    PredictionResult::toIce() const
+    {
+        return armarx::toIce<armem::prediction::data::PredictionResult>(*this);
+    }
+
+    void
+    toIce(armem::prediction::data::PredictionSettings& ice, const PredictionSettings& settings)
+    {
+        ice.predictionEngine = settings.predictionEngine;
+    }
+
+    void
+    fromIce(const armem::prediction::data::PredictionSettings& ice, PredictionSettings& settings)
+    {
+        settings.predictionEngine = ice.predictionEngine;
+    }
+
+    void
+    toIce(armem::prediction::data::PredictionRequest& ice, const PredictionRequest& request)
+    {
+        toIce(ice.memoryID, request.memoryID);
+        toIce(ice.settings, request.predictionSettings);
+    }
+
+    void
+    fromIce(const armem::prediction::data::PredictionRequest& ice, PredictionRequest& request)
+    {
+        fromIce(ice.memoryID, request.memoryID);
+        fromIce(ice.settings, request.predictionSettings);
+    }
+
+    void
+    toIce(armem::prediction::data::PredictionResult& ice, const PredictionResult& result)
+    {
+        ice.success = result.success;
+        ice.errorMessage = result.errorMessage;
+        ice.prediction = result.prediction->toAronDictDTO();
+    }
+
+    void
+    fromIce(const armem::prediction::data::PredictionResult& ice, PredictionResult& result)
+    {
+        result.success = ice.success;
+        result.errorMessage = ice.errorMessage;
+        result.prediction = aron::data::Dict::FromAronDictDTO(ice.prediction);
+    }
+
+} // namespace armarx::armem::client
diff --git a/source/RobotAPI/libraries/armem/client/Prediction.h b/source/RobotAPI/libraries/armem/client/Prediction.h
new file mode 100644
index 0000000000000000000000000000000000000000..8408911415af7725ed3fff6e176f1f42b688f2bb
--- /dev/null
+++ b/source/RobotAPI/libraries/armem/client/Prediction.h
@@ -0,0 +1,71 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::armem::client
+ * @author     phesch ( ulila at student dot kit dot edu )
+ * @date       2022
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+#include <RobotAPI/interface/armem/prediction.h>
+#include <RobotAPI/libraries/armem/core/MemoryID.h>
+#include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h>
+
+namespace armarx::armem::client
+{
+    struct PredictionSettings
+    {
+        std::string predictionEngine;
+
+        static PredictionSettings fromIce(const armem::prediction::data::PredictionSettings& ice);
+        armem::prediction::data::PredictionSettings toIce() const;
+    };
+
+    struct PredictionRequest
+    {
+        armem::MemoryID memoryID;
+        PredictionSettings predictionSettings;
+
+        static PredictionRequest fromIce(const armem::prediction::data::PredictionRequest& ice);
+        armem::prediction::data::PredictionRequest toIce() const;
+    };
+
+    struct PredictionResult
+    {
+        bool success;
+        std::string errorMessage;
+
+        aron::data::DictPtr prediction;
+
+        static PredictionResult fromIce(const armem::prediction::data::PredictionResult& ice);
+        armem::prediction::data::PredictionResult toIce() const;
+    };
+
+    void toIce(armem::prediction::data::PredictionSettings& ice,
+               const PredictionSettings& settings);
+    void fromIce(const armem::prediction::data::PredictionSettings& ice,
+                 PredictionSettings& settings);
+
+    void toIce(armem::prediction::data::PredictionRequest& ice, const PredictionRequest& request);
+    void fromIce(const armem::prediction::data::PredictionRequest& ice,
+                 PredictionRequest& request);
+
+    void toIce(armem::prediction::data::PredictionResult& ice, const PredictionResult& result);
+    void fromIce(const armem::prediction::data::PredictionResult& ice, PredictionResult& result);
+
+} // namespace armarx::armem::client
diff --git a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp
index 85ebe639a208d0b3bb54aa06005424ff1248665d..45b08dfd35c50a75b1579f58af02ecb0855d3a83 100644
--- a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp
+++ b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp
@@ -117,13 +117,14 @@ namespace armarx::armem::server::plugins
         return {};
     }
 
-    armem::predictions::data::PredictionResultSeq
-    ReadWritePluginUser::predict(const armem::predictions::data::PredictionRequestSeq& requests)
+    // PREDICTIONS
+    armem::prediction::data::PredictionResultSeq
+    ReadWritePluginUser::predict(const armem::prediction::data::PredictionRequestSeq& requests)
     {
-        armem::predictions::data::PredictionResultSeq result;
+        armem::prediction::data::PredictionResultSeq result;
         for (auto request : requests)
         {
-            armem::predictions::data::PredictionResult singleResult;
+            armem::prediction::data::PredictionResult singleResult;
             singleResult.success = false;
             singleResult.errorMessage = "This memory does not implement predictions.";
             singleResult.prediction = nullptr;
@@ -132,21 +133,20 @@ namespace armarx::armem::server::plugins
         return result;
     }
 
-    armem::predictions::data::PredictionEngineSeq
+    armem::prediction::data::PredictionEngineSeq
     ReadWritePluginUser::getAvailableEngines()
     {
         return {};
     }
 
-    // PREDICTIONS
-    armem::predictions::data::PredictionResultSeq
-    ReadWritePluginUser::predict(const armem::predictions::data::PredictionRequestSeq& requests,
+    armem::prediction::data::PredictionResultSeq
+    ReadWritePluginUser::predict(const armem::prediction::data::PredictionRequestSeq& requests,
                                  const ::Ice::Current& /*unused*/)
     {
         return predict(requests);
     }
 
-    armem::predictions::data::PredictionEngineSeq
+    armem::prediction::data::PredictionEngineSeq
     ReadWritePluginUser::getAvailableEngines(const ::Ice::Current& /*unused*/)
     {
         return getAvailableEngines();
diff --git a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h
index 5b590e2b0593379aee3540f5c413c92445979342..1e0b4bc82568382ead82cbf7b337529db4f46251 100644
--- a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h
+++ b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h
@@ -56,11 +56,11 @@ namespace armarx::armem::server::plugins
         virtual armem::actions::ExecuteActionOutputSeq executeActions(const armem::actions::ExecuteActionInputSeq& inputs, const ::Ice::Current&) override;
 
         // PredictingInterface interface
-        virtual armem::predictions::data::PredictionResultSeq predict(const armem::predictions::data::PredictionRequestSeq& requests);
-        virtual armem::predictions::data::PredictionEngineSeq getAvailableEngines();
+        virtual armem::prediction::data::PredictionResultSeq predict(const armem::prediction::data::PredictionRequestSeq& requests);
+        virtual armem::prediction::data::PredictionEngineSeq getAvailableEngines();
 
-        virtual armem::predictions::data::PredictionResultSeq predict(const armem::predictions::data::PredictionRequestSeq& requests, const ::Ice::Current&) override;
-        virtual armem::predictions::data::PredictionEngineSeq getAvailableEngines(const ::Ice::Current&) override;
+        virtual armem::prediction::data::PredictionResultSeq predict(const armem::prediction::data::PredictionRequestSeq& requests, const ::Ice::Current&) override;
+        virtual armem::prediction::data::PredictionEngineSeq getAvailableEngines(const ::Ice::Current&) override;
 
     public: