diff --git a/source/armarx/navigation/server/execution/ExecutorInterface.h b/source/armarx/navigation/server/execution/ExecutorInterface.h
index e0ba451ebd0080e4a0f951e8e414e16beb5dc98e..c4a38f29de96c727e12f5ef2e0fe1f2c92cfd04c 100644
--- a/source/armarx/navigation/server/execution/ExecutorInterface.h
+++ b/source/armarx/navigation/server/execution/ExecutorInterface.h
@@ -2,7 +2,7 @@
 
 namespace armarx::navigation::core
 {
-    struct Twist;
+    class Trajectory;
 } // namespace armarx::navigation::core
 
 namespace armarx::navigation::server
@@ -17,7 +17,8 @@ namespace armarx::navigation::server
     public:
         virtual ~ExecutorInterface() = default;
 
-        virtual void move(const core::Twist& twist) = 0;
+        virtual void execute(const core::Trajectory& trajectory) = 0;
+        virtual void stop() = 0;
     };
 
 } // namespace armarx::navigation::server
diff --git a/source/armarx/navigation/server/execution/PlatformControllerExecutor.cpp b/source/armarx/navigation/server/execution/PlatformControllerExecutor.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..90acc53bc116ecb63ddf20b9a18441b9545a2398
--- /dev/null
+++ b/source/armarx/navigation/server/execution/PlatformControllerExecutor.cpp
@@ -0,0 +1,36 @@
+#include "PlatformControllerExecutor.h"
+
+#include <armarx/control/client/ComponentPlugin.h>
+#include <armarx/control/common/type.h>
+#include <armarx/navigation/common/controller_types.h>
+#include <armarx/navigation/platform_controller/aron/PlatformTrajectoryControllerConfig.aron.generated.h>
+
+
+
+namespace armarx::navigation::server
+{
+
+    PlatformControllerExecutor::PlatformControllerExecutor(
+        ControllerComponentPlugin& controllerComponentPlugin) :
+        controllerPlugin(controllerComponentPlugin)
+    {
+        controllerComponentPlugin.getRobotUnitPlugin().getRobotUnit()->loadLibFromPackage(
+            "armarx_navigation", "libarmarx_navigation_platform_controller.so");
+
+
+        auto builder = controllerPlugin.createControllerBuilder<
+            armarx::navigation::common::ControllerType::PlatformTrajectory>();
+
+        ctrl.emplace(builder.create().value());
+
+        ARMARX_CHECK(ctrl.has_value());
+    }
+
+    PlatformControllerExecutor::~PlatformControllerExecutor() = default;
+
+
+    void
+    PlatformControllerExecutor::execute(const core::Trajectory& trajectory)
+    {
+    }
+} // namespace armarx::navigation::server
diff --git a/source/armarx/navigation/server/execution/PlatformControllerExecutor.h b/source/armarx/navigation/server/execution/PlatformControllerExecutor.h
new file mode 100644
index 0000000000000000000000000000000000000000..1b2ec239553a3b0c397f47bd962355cd46fe84ff
--- /dev/null
+++ b/source/armarx/navigation/server/execution/PlatformControllerExecutor.h
@@ -0,0 +1,48 @@
+#pragma once
+
+#include <RobotAPI/interface/units/RobotUnit/RobotUnitInterface.h>
+
+#include <armarx/control/client/ComponentPlugin.h>
+#include <armarx/navigation/common/controller_types.h>
+#include <armarx/navigation/core/types.h>
+#include <armarx/navigation/platform_controller/aron/PlatformTrajectoryControllerConfig.aron.generated.h>
+#include <armarx/navigation/platform_controller/controller_descriptions.h>
+#include <armarx/navigation/server/execution/ExecutorInterface.h>
+
+namespace armarx::control::client
+{
+    class ComponentPlugin;
+}
+
+namespace armarx::navigation::server
+{
+
+    /**
+     * @brief The PlatformUnitExecutor class
+     *
+     * TODO: Should be renamed to whatever the new unit will be called which takes Mat4f
+     * as input instead of X/Y/Yaw, so that we have a generic interface.
+     */
+    class PlatformControllerExecutor : virtual public ExecutorInterface
+    {
+
+    public:
+        using ControllerComponentPlugin = armarx::control::client::ComponentPlugin;
+
+        PlatformControllerExecutor(ControllerComponentPlugin& controllerComponentPlugin);
+        ~PlatformControllerExecutor() override;
+
+        void execute(const core::Trajectory& trajectory) override;
+        void stop() override{
+            // FIXME implement
+        };
+
+    private:
+        std::optional<armarx::control::client::ControllerWrapper<
+            armarx::navigation::common::ControllerType::PlatformTrajectory>>
+            ctrl;
+
+        ControllerComponentPlugin& controllerPlugin;
+    };
+
+} // namespace armarx::navigation::server