diff --git a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
index e2059d968293dce364030082be4455186400ce0b..ad50c71c0d4437ddc3a9ef0b62dbe8e6adbcbcb7 100644
--- a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
+++ b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
@@ -73,7 +73,11 @@ namespace armarx
         workingMemory().addCoreSegment("LinkedData", armem::example::LinkedData::ToAronType());
 
         // We support the "Latest" prediction engine for the entire memory.
+        // TODO(phesch): This should really be one operation.
         workingMemory().addPredictionEngine({"Latest"});
+        workingMemory().addPredictor("Latest",
+                                     [this](const armem::PredictionRequest& request)
+                                     { return this->predictLatest(request); });
 
         // For illustration purposes, we add more segments (without types).
         bool trim = true;
@@ -216,66 +220,44 @@ namespace armarx
     }
 
     // PREDICTING
-
-    armem::prediction::data::PredictionResultSeq
-    ExampleMemory::predict(const armem::prediction::data::PredictionRequestSeq& requests)
-    {
-        armem::prediction::data::PredictionResultSeq result;
-        for (const auto& request : requests)
-        {
-            result.push_back(predictSingle(request));
-        }
-        return result;
-    }
-
-    armem::prediction::data::PredictionResult
-    ExampleMemory::predictSingle(const armem::prediction::data::PredictionRequest& request)
+    armem::PredictionResult
+    ExampleMemory::predictLatest(const armem::PredictionRequest& request)
     {
         armem::PredictionResult result;
-
-        std::string engine = request.settings.predictionEngineID;
-        if (engine.empty() || engine == "Latest")
+        auto memID = request.snapshotID;
+        result.snapshotID = memID;
+
+        armem::client::QueryBuilder builder;
+        builder.latestEntitySnapshot(memID);
+        auto queryResult =
+            query(armarx::toIce<armem::query::data::Input>(builder.buildQueryInput()));
+        if (queryResult.success)
         {
-            auto boID = fromIce<armem::MemoryID>(request.snapshotID);
-            armem::client::QueryBuilder builder;
-            builder.latestEntitySnapshot(boID);
-            auto queryResult =
-                query(armarx::toIce<armem::query::data::Input>(builder.buildQueryInput()));
-            if (queryResult.success)
+            auto readMemory = fromIce<armem::wm::Memory>(queryResult.memory);
+            auto* latest = readMemory.findLatestSnapshot(memID);
+            if (latest != nullptr)
             {
-                auto readMemory = fromIce<armem::wm::Memory>(queryResult.memory);
-                auto* latest = readMemory.findLatestSnapshot(boID);
-                if (latest != nullptr)
-                {
-                    auto instance = boID.hasInstanceIndex()
-                                        ? latest->getInstance(boID)
-                                        : latest->getInstance(latest->getInstanceIndices().at(0));
-                    result.success = true;
-                    result.snapshotID = boID;
-                    result.prediction = instance.data();
-                }
-                else
-                {
-                    result.success = false;
-                    result.errorMessage =
-                        "Could not find entity referenced by MemoryID '" + boID.str() + "'.";
-                }
+                auto instance = memID.hasInstanceIndex()
+                                    ? latest->getInstance(memID)
+                                    : latest->getInstance(latest->getInstanceIndices().at(0));
+                result.success = true;
+                result.prediction = instance.data();
             }
             else
             {
                 result.success = false;
                 result.errorMessage =
-                    "Could not find entity referenced by MemoryID '" + boID.str() + "'.";
+                    "Could not find entity referenced by MemoryID '" + memID.str() + "'.";
             }
         }
         else
         {
             result.success = false;
             result.errorMessage =
-                "This memory does not support the prediction engine '" + engine + "'.";
+                "Could not find entity referenced by MemoryID '" + memID.str() + "'.";
         }
 
-        return result.toIce();
+        return result;
     }
 
     // REMOTE GUI
diff --git a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h
index 76e437bcb6f6db0e31c023eed4386831267c5fc2..b41f1262755f8ddad59eb9dc3c03309766183116 100644
--- a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h
+++ b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.h
@@ -28,6 +28,7 @@
 #include <ArmarXCore/interface/observers/ObserverInterface.h>
 #include <ArmarXGui/libraries/ArmarXGuiComponentPlugins/LightweightRemoteGuiComponentPlugin.h>
 
+#include <RobotAPI/libraries/armem/core/Prediction.h>
 #include <RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h>
 
 
@@ -71,11 +72,6 @@ namespace armarx
         armem::actions::GetActionsOutputSeq getActions(const armem::actions::GetActionsInputSeq& input) override;
         armem::actions::ExecuteActionOutputSeq executeActions(const armem::actions::ExecuteActionInputSeq& input) override;
 
-        // PredictingMemoryInterface interface
-    public:
-        armem::prediction::data::PredictionResultSeq
-        predict(const armem::prediction::data::PredictionRequestSeq& requests) override;
-
 
     protected:
 
@@ -89,8 +85,7 @@ namespace armarx
 
     private:
 
-        armem::prediction::data::PredictionResult
-        predictSingle(const armem::prediction::data::PredictionRequest& request);
+        armem::PredictionResult predictLatest(const armem::PredictionRequest& request);
 
         armarx::DebugObserverInterfacePrx debugObserver;