diff --git a/src/edit/include/edit/editor.hpp b/src/edit/include/edit/editor.hpp
index e49af0c8e8b1540ce0490d5f5ae12a06ff849c7b..99055875e1bf935f29d45f347fba12b8172e818c 100644
--- a/src/edit/include/edit/editor.hpp
+++ b/src/edit/include/edit/editor.hpp
@@ -55,6 +55,7 @@ public:
     bool save_rofiworld_prompt = false;
     bool save_rofiworld_visible = false;
     bool save_rofiworld_error = false;
+    bool export_rofiworld_use_selected_space_joint = false;
     char name_buffer[256] = {0};
     int module_id = 0;
     int add_module_list_index = -1;
@@ -578,7 +579,8 @@ private:
     bool detectCollision(bool something_changed, rofiworld_ptr rofiworld);
 
     /* ROFIWORLD EXPORT */
-    void pickSpaceJoints(rofiworld_ptr rofiworld, bool automatic);
+    void pickSpaceJoints(rofiworld_ptr rofiworld, module_ptr initial_module);
+    void pickSpaceJoint(rofiworld_ptr rofiworld, module_ptr module, std::set<module_ptr> &found_modules);
     connector_ptr pickSpaceJointUniversal(const module_ptr module);
     connector_ptr pickSpaceJointGeneric(const module_ptr module);
 };
diff --git a/src/edit/src/editor.cpp b/src/edit/src/editor.cpp
index a15fc86595033fa416e47be7dac6b85532fa304b..63b81f6090ce50e9b1c9d61d9c33701cb75684ae 100644
--- a/src/edit/src/editor.cpp
+++ b/src/edit/src/editor.cpp
@@ -133,9 +133,9 @@ void Editor::manageUISaveRofiWorld()
             ui.save_rofiworld_prompt = false;
             ui.save_rofiworld_error = false;
             ui.export_file_prompt = false;
-            pickSpaceJoints(rofiworld, true);
+            pickSpaceJoints(rofiworld, ui.export_rofiworld_use_selected_space_joint ? selected_module : nullptr);
             export_rofiworld(rofiworld, selected_space_joints, ui.name_buffer);
-            // addToModules(std::string(ui.name_buffer), std::string(module_type_buffer));
+            // addToRofiWorlds(...);
         }
     }
 
@@ -143,7 +143,7 @@ void Editor::manageUISaveRofiWorld()
     {
         exported = true;
         ui.export_file_prompt = false;
-        pickSpaceJoints(rofiworld, true);
+        pickSpaceJoints(rofiworld, ui.export_rofiworld_use_selected_space_joint ? selected_module : nullptr);
         export_rofiworld(rofiworld, selected_space_joints, ui.name_buffer);
     }
 
@@ -2922,33 +2922,37 @@ bool Editor::detectCollision(bool something_changed, rofiworld_ptr rofiworld)
 
 /* ROFIWORLD EXPORT */
 
-void Editor::pickSpaceJoints(rofiworld_ptr rofiworld, bool automatic)
+void Editor::pickSpaceJoints(rofiworld_ptr rofiworld, module_ptr initial_module)
 {
-    if (automatic)
-    {
-        std::set<module_ptr> found_modules;
-        for (const auto [module, id] : rofiworld->getModulesMap())
-        {
-            if (found_modules.contains(module))
-                continue;
+    std::set<module_ptr> found_modules;
 
-            std::set<module_ptr> reachable_modules;
+    if (initial_module)
+        pickSpaceJoint(rofiworld, initial_module, found_modules);
 
-            connector_ptr connector = nullptr;
+    for (const auto [module, id] : rofiworld->getModulesMap())
+    {
+        if (found_modules.contains(module))
+            continue;
 
-            if (module->getType() == "universal")
-                connector = pickSpaceJointUniversal(module);
-            else
-                connector = pickSpaceJointGeneric(module);
+        pickSpaceJoint(rofiworld, module, found_modules);
+    }
+}
 
-            reachable_modules = rofiworld->reachableModules(connector);
-            selected_space_joints.emplace_back(connector);
+void Editor::pickSpaceJoint(rofiworld_ptr rofiworld, module_ptr module, std::set<module_ptr> &found_modules)
+{
+    std::set<module_ptr> reachable_modules;
 
+    connector_ptr connector = nullptr;
 
-            found_modules.insert(reachable_modules.begin(), reachable_modules.end()); 
-        }
-    }
+    if (module->getType() == "universal")
+        connector = pickSpaceJointUniversal(module);
+    else
+        connector = pickSpaceJointGeneric(module);
+
+    reachable_modules = rofiworld->reachableModules(connector);
+    selected_space_joints.emplace_back(connector);
 
+    found_modules.insert(reachable_modules.begin(), reachable_modules.end()); 
 }
 
 connector_ptr Editor::pickSpaceJointUniversal(const module_ptr module)
diff --git a/src/gui/src/ui.cpp b/src/gui/src/ui.cpp
index fd8eb6ff9f762ea8ad7e49625094795aac4b66b2..6b61ec4c373c241885397508225848b911780e34 100644
--- a/src/gui/src/ui.cpp
+++ b/src/gui/src/ui.cpp
@@ -765,7 +765,7 @@ void module_rotation_ui(const osi::Window &window, edit::UIData &data)
 
     float size_x = static_cast<float>(window.size().x);
     float size_y = static_cast<float>(window.size().y);
-    ImGui::SetNextWindowPos(ImVec2(size_x, size_y - 40.0f), ImGuiCond_Appearing, ImVec2(1.0f, 1.0f));
+    ImGui::SetNextWindowPos(ImVec2(size_x, size_y - 40.0f), ImGuiCond_Always, ImVec2(1.0f, 1.0f));
 
     ImGui::Begin("Module Rotation##ModuleRotationMenu", NULL, ImGuiWindowFlags_NoMove 
                                                               | ImGuiWindowFlags_NoResize 
@@ -990,7 +990,7 @@ void export_module_file_ui(const osi::Window &window, edit::UIData &data)
 void export_rofiworld_file_ui(const osi::Window &window, edit::UIData &data)
 {
     if (!ImGui::Begin("Export RofiWorld Configuration", &data.export_file_visible, 
-                      ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize))
+                      ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize))
     {
         ImGui::End();
         return;
@@ -1004,7 +1004,7 @@ void export_rofiworld_file_ui(const osi::Window &window, edit::UIData &data)
                      | ImGuiInputTextFlags_AlwaysOverwrite);
 
 
-    // NECO SE SPACE JOINTS
+    ImGui::Checkbox("Selected Module as spaceJoint##spaceJointCheckBox", &data.export_rofiworld_use_selected_space_joint);
 
     if (ImGui::Button("Submit")) {
         data.export_file_prompt = true;
@@ -1030,7 +1030,7 @@ void rotation_settings(const osi::Window &window, edit::UIData &data)
 
     float size_x = static_cast<float>(window.size().x);
     float size_y = static_cast<float>(window.size().y);
-    ImGui::SetNextWindowPos(ImVec2(size_x, size_y - 40.0f), ImGuiCond_Appearing, ImVec2(1.0f, 1.0f));
+    ImGui::SetNextWindowPos(ImVec2(size_x, size_y - 40.0f), ImGuiCond_Always, ImVec2(1.0f, 1.0f));
 
     ImGui::Begin("Rotation Limits", NULL, ImGuiWindowFlags_NoMove 
                                           | ImGuiWindowFlags_NoResize