diff --git a/reading_machine/src/Action.cpp b/reading_machine/src/Action.cpp
index 7bcca61716f38eb6f7ca61ec015ec849a1161500..29081486964db22cb7f77bdc1f21e63ae653150d 100644
--- a/reading_machine/src/Action.cpp
+++ b/reading_machine/src/Action.cpp
@@ -581,10 +581,10 @@ Action Action::attach(Config::Object governorObject, int governorIndex, Config::
 {
   auto apply = [governorObject, governorIndex, dependentObject, dependentIndex](Config & config, Action & a)
   {
-    long lineIndex = config.getRelativeWordIndex(governorObject, governorIndex);
+    long govIndex = config.getRelativeWordIndex(governorObject, governorIndex);
     long depIndex = config.getRelativeWordIndex(dependentObject, dependentIndex);
 
-    addHypothesisRelative(Config::headColName, dependentObject, dependentIndex, std::to_string(lineIndex)).apply(config, a);
+    addHypothesisRelative(Config::headColName, dependentObject, dependentIndex, std::to_string(govIndex)).apply(config, a);
     addToHypothesisRelative(Config::childsColName, governorObject, governorIndex, std::to_string(depIndex)).apply(config, a);
     a.data.emplace_back(std::to_string(config.getLastAttached()));
     config.setLastAttached(depIndex);
@@ -602,6 +602,7 @@ Action Action::attach(Config::Object governorObject, int governorIndex, Config::
   {
     if (!config.hasRelativeWordIndex(governorObject, governorIndex) or !config.hasRelativeWordIndex(dependentObject, dependentIndex))
       return false;
+
     long govLineIndex = config.getRelativeWordIndex(governorObject, governorIndex);
     long depLineIndex = config.getRelativeWordIndex(dependentObject, dependentIndex);
 
@@ -612,6 +613,10 @@ Action Action::attach(Config::Object governorObject, int governorIndex, Config::
     if (config.getAsFeature(Config::sentIdColName, govLineIndex) != config.getAsFeature(Config::sentIdColName, depLineIndex))
       return false;
 
+    // Check if dep is not already attached
+    if (!util::isEmpty(config.getAsFeature(Config::headColName, depLineIndex)))
+      return false;
+
     // Check for cycles
     while (govLineIndex != depLineIndex)
     {