diff --git a/src/edit/src/editor.cpp b/src/edit/src/editor.cpp
index e1f373623682aa2acb9761edd89a0461897ec0bb..e657f0c697f64e56e57c3309645a8042ad96ab1e 100644
--- a/src/edit/src/editor.cpp
+++ b/src/edit/src/editor.cpp
@@ -2557,7 +2557,9 @@ bool Editor::checkConnectModuleValid(const connector_ptr fst_connector, const co
 
     float epsilon = 0.0001f;
     if (rofiworld->reachable(rofiworld->getModuleWithNode(fst_node), rofiworld->getModuleWithNode(snd_node))
-        && !glm::all(glm::epsilonEqual(fst_node->getPositionWorld(), snd_node->getPositionWorld(), epsilon)))
+        && (!glm::all(glm::epsilonEqual(fst_node->getPositionWorld(), snd_node->getPositionWorld(), epsilon))
+            || rofi::Connector::get_mutual_orientation(fst_connector, snd_connector) == rofi::cardinal::Invalid)
+            || rofi::Connector::get_mutual_orientation(fst_connector, snd_connector) != selected_cardinality)
         return false;
 
     return true;
diff --git a/src/filein/src/rofiworld_loader.cpp b/src/filein/src/rofiworld_loader.cpp
index 3b038378e120d5cdb2fbfbf012433d3adb728f7d..e60dcce10e823b2fed41974d3b90d80c80b2fb1e 100644
--- a/src/filein/src/rofiworld_loader.cpp
+++ b/src/filein/src/rofiworld_loader.cpp
@@ -272,6 +272,8 @@ void export_moduleJoint_orientation(boost::json::object &moduleJoint_object, con
         case West:  
             orientation = "West";
             break;
+        default:
+            ASSUMPTION(false);
     }
 
     moduleJoint_object.emplace("orientation", orientation);
diff --git a/src/gui/src/ui.cpp b/src/gui/src/ui.cpp
index 02bb78d9a00b5140e066ab62092b646f85664489..07fca3d0d6a629eba51f4272ff54333676ef0507 100644
--- a/src/gui/src/ui.cpp
+++ b/src/gui/src/ui.cpp
@@ -584,6 +584,9 @@ void module_connection_ui(const osi::Window &window, edit::UIData &data)
             case West:  
                 orientation = "West";
                 break;
+            case Invalid:
+                orientation = "Invalid";
+                break;
         }
         ImGui::Text(orientation.c_str());
         ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.7f, 0.0f, 0.0f, 1.0f));
diff --git a/src/rofi/include/rofi/connector.hpp b/src/rofi/include/rofi/connector.hpp
index 57f2159aeaa236e525e371aadd25af817378d29c..c9308c5f262139cf309b26d19abcdd1aa86e6126 100644
--- a/src/rofi/include/rofi/connector.hpp
+++ b/src/rofi/include/rofi/connector.hpp
@@ -19,7 +19,7 @@ using connector_weak_ptr = std::weak_ptr<rofi::Connector>;
 
     enum class side { x_pos, x_neg, y_pos, y_neg, z_pos, z_neg, undefined };
     enum class connector_type {fixed, open, rotation, shared_rotation, empty};
-    enum cardinal { North, East, South, West };
+    enum cardinal { North, East, South, West, Invalid };
 
 class Connector : public ObjectBase
 {
diff --git a/src/rofi/src/connector.cpp b/src/rofi/src/connector.cpp
index 020d449caf635c66c56bc8657a57afb20767c699..7327354a6e47277e74bd5d548257f5e7ffd92c7e 100644
--- a/src/rofi/src/connector.cpp
+++ b/src/rofi/src/connector.cpp
@@ -77,7 +77,7 @@ bool Connector::shares_module_link(connector_ptr fst_connector, connector_ptr sn
 
 cardinal Connector::get_mutual_orientation(connector_ptr source_connector, connector_ptr destination_connector)
 {
-    ASSUMPTION(Connector::shares_module_link(source_connector, destination_connector));
+    // ASSUMPTION(Connector::shares_module_link(source_connector, destination_connector));
 
     // auto source_north = source_connector->getNode()->getRotationAxisXWorld();
     // auto destination_north = destination_connector->getNode()->getRotationAxisXWorld();
@@ -413,9 +413,8 @@ cardinal degree_to_cardinal(float degree_angle)
         return South;
     if (glm::epsilonEqual(degree_angle, -90.0f, epsilon))
         return West;
-
-    ASSUMPTION(false);
-    return North;
+    
+    return Invalid;
 }
 float cardinal_to_degree(cardinal orientation)
 {