diff --git a/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt b/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt
index da1d938b96fc8e7fe3d2a9cb2c0f25df386a06af..20f30486fd3249168f6f80a9353d6dd78cc7b2ea 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt
+++ b/source/RobotAPI/libraries/ArmarXObjects/CMakeLists.txt
@@ -20,6 +20,7 @@ set(LIB_FILES
     ObjectPoseClient.cpp
     PoseManifoldGaussian.cpp
     ProvidedObjectPose.cpp
+    Scene.cpp
 
     json_conversions.cpp
     ice_conversions.cpp
@@ -40,6 +41,7 @@ set(LIB_HEADERS
     ObjectPoseClient.h
     PoseManifoldGaussian.h
     ProvidedObjectPose.h
+    Scene.h
 
     forward_declarations.h
     json_conversions.h
diff --git a/source/RobotAPI/libraries/ArmarXObjects/Scene.cpp b/source/RobotAPI/libraries/ArmarXObjects/Scene.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1437da55faff8976d7c87ac9f76f9a2adf11432f
--- /dev/null
+++ b/source/RobotAPI/libraries/ArmarXObjects/Scene.cpp
@@ -0,0 +1,44 @@
+#include "Scene.h"
+
+#include <RobotAPI/libraries/ArmarXObjects/ObjectID.h>
+#include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h>
+
+
+namespace armarx::objects
+{
+
+    ObjectID SceneObject::getClassID() const
+    {
+        return ObjectID(className);
+    }
+
+
+    ObjectID SceneObject::getClassID(ObjectFinder& finder) const
+    {
+        ObjectID id = getClassID();
+        if (id.dataset().empty())
+        {
+            if (std::optional<ObjectInfo> info = finder.findObject(id.className()))
+            {
+                return info->id();
+            }
+        }
+        return id;
+    }
+
+
+    ObjectID SceneObject::getObjectID() const
+    {
+        return getClassID().withInstanceName(instanceName);
+    }
+
+
+    ObjectID SceneObject::getObjectID(ObjectFinder& finder) const
+    {
+        return getClassID(finder).withInstanceName(instanceName);
+    }
+
+}
+
+
+
diff --git a/source/RobotAPI/libraries/ArmarXObjects/Scene.h b/source/RobotAPI/libraries/ArmarXObjects/Scene.h
new file mode 100644
index 0000000000000000000000000000000000000000..a4cc41d80b5fccc87b1e9d871808c685ce332401
--- /dev/null
+++ b/source/RobotAPI/libraries/ArmarXObjects/Scene.h
@@ -0,0 +1,59 @@
+/*
+ * 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::ArmarXObjects::ObjectMemory
+ * @author     Rainer Kartmann ( rainer dot kartmann at kit dot edu )
+ * @date       2021
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+#pragma once
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include <Eigen/Core>
+#include <Eigen/Geometry>
+
+#include "forward_declarations.h"
+
+
+namespace armarx::objects
+{
+
+    struct SceneObject
+    {
+        std::string className;
+        std::string instanceName;
+        std::string collection;
+
+        Eigen::Vector3f position = Eigen::Vector3f::Zero();
+        Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity();
+
+        std::map<std::string, float> jointValues;
+
+        ObjectID getClassID() const;
+        ObjectID getClassID(ObjectFinder& finder) const;
+        ObjectID getObjectID() const;
+        ObjectID getObjectID(ObjectFinder& finder) const;
+    };
+
+    struct Scene
+    {
+        std::vector<SceneObject> objects;
+    };
+
+}
diff --git a/source/RobotAPI/libraries/ArmarXObjects/forward_declarations.h b/source/RobotAPI/libraries/ArmarXObjects/forward_declarations.h
index b7175785af42fce4284769d47290b3aae3616614..320305ba22474d6eca649966c7988ad7b3048c0b 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/forward_declarations.h
+++ b/source/RobotAPI/libraries/ArmarXObjects/forward_declarations.h
@@ -27,6 +27,12 @@ namespace armarx::objpose
 
     class ObjectPoseClient;
 }
+namespace armarx::objects
+{
+    struct Scene;
+    struct SceneObject;
+}
+
 
 // Ice Types
 namespace armarx::objpose::data
diff --git a/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp b/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp
index 3888855892a95cecb6ea5fecc55e63763c894f6a..617baca941ebb86be7e3b05ecac1e79efc23490c 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp
@@ -3,8 +3,12 @@
 #include <SimoxUtility/json/eigen_conversion.h>
 #include <SimoxUtility/shapes/json_conversions.h>
 
+#include "ObjectID.h"
+#include "ObjectPose.h"
+#include "Scene.h"
 #include "ice_conversions.h"
 
+
 void armarx::to_json(nlohmann::json& j, const ObjectID& id)
 {
     j["dataset"] = id.dataset();
@@ -71,3 +75,46 @@ void armarx::objpose::from_json(const nlohmann::json& j, ObjectPose& op)
         op.localOOBB = j.at("localOOBB").get<simox::OrientedBoxf>();
     }
 }
+
+
+void armarx::objects::to_json(nlohmann::json& j, const SceneObject& rhs)
+{
+    //     j["instanceID"] = rhs.instanceID;
+    j["class"] = rhs.className;
+    j["instanceName"] = rhs.instanceName;
+    j["collection"] = rhs.collection;
+    j["position"] = rhs.position;
+    j["orientation"] = rhs.orientation;
+    j["jointValues"] = rhs.jointValues;
+}
+
+
+void armarx::objects::from_json(const nlohmann::json& j, SceneObject& rhs)
+{
+    //     j.at("instanceID").get_to(rhs.instanceID);
+    j.at("class").get_to(rhs.className);
+    if (j.count("instanceName"))
+    {
+        j["instanceName"].get_to(rhs.instanceName);
+    }
+    j.at("collection").get_to(rhs.collection);
+    j.at("position").get_to(rhs.position);
+    j.at("orientation").get_to(rhs.orientation);
+    if (j.count("jointValues"))
+    {
+        j.at("jointValues").get_to(rhs.jointValues);
+    }
+}
+
+
+
+void armarx::objects::to_json(nlohmann::json& j, const Scene& rhs)
+{
+    j["objects"] = rhs.objects;
+}
+
+
+void armarx::objects::from_json(const nlohmann::json& j, Scene& rhs)
+{
+    j.at("objects").get_to(rhs.objects);
+}
diff --git a/source/RobotAPI/libraries/ArmarXObjects/json_conversions.h b/source/RobotAPI/libraries/ArmarXObjects/json_conversions.h
index 048e7d933af5913678f17abd7eacbcf76e4e83c1..608ad14424234ef4120f117d511310a42be71bcc 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/json_conversions.h
+++ b/source/RobotAPI/libraries/ArmarXObjects/json_conversions.h
@@ -2,8 +2,8 @@
 
 #include <SimoxUtility/json/json.hpp>
 
-#include "ObjectID.h"
-#include "ObjectPose.h"
+#include "forward_declarations.h"
+
 
 namespace armarx
 {
@@ -16,3 +16,13 @@ namespace armarx::objpose
     void to_json(nlohmann::json& j, const ObjectPose& op);
     void from_json(const nlohmann::json& j, ObjectPose& op);
 }
+
+
+namespace armarx::objects
+{
+    void to_json(nlohmann::json& j, const SceneObject& rhs);
+    void from_json(const nlohmann::json& j, SceneObject& rhs);
+
+    void to_json(nlohmann::json& j, const Scene& rhs);
+    void from_json(const nlohmann::json& j, Scene& rhs);
+}
diff --git a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt
index 74928ae14dc40cc72b49c6a81570525336c48bfa..b0663babe7059ddbc2915869dc49d06a128f03e5 100644
--- a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt
@@ -21,8 +21,6 @@ armarx_add_library(
         aron_conversions.h
         aron_forward_declarations.h
 
-        SceneSnapshot.h
-
         server/class/FloorVis.h
         server/class/Segment.h
 
@@ -50,8 +48,6 @@ armarx_add_library(
     SOURCES
         aron_conversions.cpp
 
-        SceneSnapshot.cpp
-
         client/articulated_object/Reader.cpp
         client/articulated_object/Writer.cpp
         client/articulated_object/ArticulatedObjectReader.cpp
diff --git a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp
deleted file mode 100644
index d3ece87d9746198af2f5b9acc5b81cce38d189aa..0000000000000000000000000000000000000000
--- a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-#include "SceneSnapshot.h"
-
-#include <SimoxUtility/json.h>
-
-#include <RobotAPI/libraries/ArmarXObjects/ObjectID.h>
-#include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h>
-
-// #include <RobotAPI/libraries/armem/core/json_conversions.h>
-
-
-namespace armarx::armem::obj
-{
-
-    ObjectID SceneSnapshot::Object::getClassID() const
-    {
-        return ObjectID(className);
-    }
-
-
-    ObjectID SceneSnapshot::Object::getClassID(ObjectFinder& finder) const
-    {
-        ObjectID id = getClassID();
-        if (id.dataset().empty())
-        {
-            if (std::optional<ObjectInfo> info = finder.findObject(id.className()))
-            {
-                return info->id();
-            }
-        }
-        return id;
-    }
-
-
-    ObjectID SceneSnapshot::Object::getObjectID() const
-    {
-        return getClassID().withInstanceName(instanceName);
-    }
-
-
-    ObjectID SceneSnapshot::Object::getObjectID(ObjectFinder& finder) const
-    {
-        return getClassID(finder).withInstanceName(instanceName);
-    }
-
-}
-
-
-void armarx::armem::obj::to_json(nlohmann::json& j, const SceneSnapshot::Object& rhs)
-{
-    //     j["instanceID"] = rhs.instanceID;
-    j["class"] = rhs.className;
-    j["instanceName"] = rhs.instanceName;
-    j["collection"] = rhs.collection;
-    j["position"] = rhs.position;
-    j["orientation"] = rhs.orientation;
-    j["jointValues"] = rhs.jointValues;
-}
-
-
-void armarx::armem::obj::from_json(const nlohmann::json& j, SceneSnapshot::Object& rhs)
-{
-    //     j.at("instanceID").get_to(rhs.instanceID);
-    j.at("class").get_to(rhs.className);
-    if (j.count("instanceName"))
-    {
-        j["instanceName"].get_to(rhs.instanceName);
-    }
-    j.at("collection").get_to(rhs.collection);
-    j.at("position").get_to(rhs.position);
-    j.at("orientation").get_to(rhs.orientation);
-    if (j.count("jointValues"))
-    {
-        j.at("jointValues").get_to(rhs.jointValues);
-    }
-}
-
-
-
-void armarx::armem::obj::to_json(nlohmann::json& j, const SceneSnapshot& rhs)
-{
-    j["objects"] = rhs.objects;
-}
-
-
-void armarx::armem::obj::from_json(const nlohmann::json& j, SceneSnapshot& rhs)
-{
-    j.at("objects").get_to(rhs.objects);
-}
-
-
diff --git a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h b/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h
deleted file mode 100644
index 3e24156490544ebc537372a0d204c052ae8b2428..0000000000000000000000000000000000000000
--- a/source/RobotAPI/libraries/armem_objects/SceneSnapshot.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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::ArmarXObjects::ObjectMemory
- * @author     Rainer Kartmann ( rainer dot kartmann at kit dot edu )
- * @date       2021
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-#pragma once
-
-#include <SimoxUtility/json/json.hpp>
-
-#include <Eigen/Geometry>
-
-
-namespace armarx
-{
-    class ObjectID;
-    class ObjectFinder;
-}
-namespace armarx::armem::obj
-{
-
-    struct SceneSnapshot
-    {
-        struct Object
-        {
-            std::string className;
-            std::string instanceName;
-            std::string collection;
-
-            Eigen::Vector3f position = Eigen::Vector3f::Zero();
-            Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity();
-
-            std::map<std::string, float> jointValues;
-
-            ObjectID getClassID() const;
-            ObjectID getClassID(ObjectFinder& finder) const;
-            ObjectID getObjectID() const;
-            ObjectID getObjectID(ObjectFinder& finder) const;
-        };
-        std::vector<Object> objects;
-    };
-
-    void to_json(nlohmann::json& j, const SceneSnapshot::Object& rhs);
-    void from_json(const nlohmann::json& j, SceneSnapshot::Object& rhs);
-
-    void to_json(nlohmann::json& j, const SceneSnapshot& rhs);
-    void from_json(const nlohmann::json& j, SceneSnapshot& rhs);
-
-}