diff --git a/src/main_controller.cpp b/src/main_controller.cpp
index 0219cbcc8dcaf0ab94a407e41c2a86788226e54b..1849c6268177b78c885bbd76cf90906d66d93bd2 100644
--- a/src/main_controller.cpp
+++ b/src/main_controller.cpp
@@ -54,7 +54,7 @@ int main(int argc, char **argv)
   connection->setSendTopic(getParameter(n, "topics/scene", NODE_NAME + "/scene/update"));
   controller.addConnection(std::move(connection));
 
-  auto client_controllers = getPrivateParameter<std::vector<std::string>>("client_controllers");
+  auto client_controllers = getPrivateParameter<std::vector<std::string>>("client_controllers", {"ceti_cell_1", "ceti_cell_2", "ads-cell", "st-cell"});
   auto mqtt_server = getPrivateParameter<std::string>("mqtt_server", "tcp://127.0.0.1:1883");
 
   // create an empty task
@@ -79,6 +79,7 @@ int main(int argc, char **argv)
     auto scene_update_topic = "/" + client + getParameter<std::string>(n, "topics/scene", "/scene/update");
     ROS_INFO_STREAM("Listening to MQTT topic " << scene_update_topic);
     client_connection->listen(scene_update_topic);
+    client_connection->listen(getParameter<std::string>(n, "topics/selection", "selection"));
     controller.addCallback(scene_update_topic, [client, &clients](auto msg)
     {
       ROS_INFO_STREAM("Got an updated scene from client " << client);
@@ -89,7 +90,7 @@ int main(int argc, char **argv)
   auto fallback_path = ros::package::getPath("ccf_immersive_sorting") + "/config/config_scene_virtual-table.json";
   controller.loadScene(getPrivateParameter<std::string>("scene", fallback_path));
 
-  Object *robot = nullptr; // FIXME
+  Object *robot = controller.resolveObject(controller.getRobotName());
   Object *selected_box = nullptr;
   Object *selected_bin = nullptr;
   std::optional<std::string> picked_box{};