diff --git a/reading_machine/include/Config.hpp b/reading_machine/include/Config.hpp
index daaeae1187c76b2db6e492e48001b0283ad3b84e..b18bc88bbc5d03e1f99f0ef425c7e25886c41bb9 100644
--- a/reading_machine/include/Config.hpp
+++ b/reading_machine/include/Config.hpp
@@ -32,6 +32,7 @@ class Config
 
   std::vector<String> lines;
   std::set<std::string> predicted;
+  int lastPoppedStack{-1};
 
   protected :
 
@@ -109,6 +110,7 @@ class Config
   std::vector<long> extractContext(int leftBorder, int rightBorder, Dict & dict) const;
   void addPredicted(const std::set<std::string> & predicted);
   bool isPredicted(const std::string & colName) const;
+  int getLastPoppedStack() const;
 };
 
 #endif
diff --git a/reading_machine/include/TransitionSet.hpp b/reading_machine/include/TransitionSet.hpp
index 4263ba47434f8114952d13abb9bac955db6a6b8e..2daaa2ea986d619994fce97e61bcd37131445ccd 100644
--- a/reading_machine/include/TransitionSet.hpp
+++ b/reading_machine/include/TransitionSet.hpp
@@ -11,7 +11,6 @@ class TransitionSet
   private :
 
   std::vector<Transition> transitions;
-  std::optional<std::size_t> defaultAction;
 
   public :
 
diff --git a/reading_machine/src/Action.cpp b/reading_machine/src/Action.cpp
index 427ec98be9017d9d12e13015c0a93e4f494072ff..b24d547362765b7c4ec2f8e0927ff7050da9d750 100644
--- a/reading_machine/src/Action.cpp
+++ b/reading_machine/src/Action.cpp
@@ -139,9 +139,12 @@ Action Action::pushWordIndexOnStack()
     config.popStack();
   };
 
-  auto appliable = [](const Config &, const Action &)
+  auto appliable = [](const Config & config, const Action &)
   {
-    return true;
+    if (config.hasStack(0) and config.getStack(0) == config.getWordIndex())
+      return false;
+
+    return (int)config.getWordIndex() != config.getLastPoppedStack();
   };
 
   return {Type::Push, apply, undo, appliable}; 
diff --git a/reading_machine/src/Config.cpp b/reading_machine/src/Config.cpp
index 49ad5095402d4d3f1b488a26be578224c04a911e..286386a0e1496c329ec1b9697124d9ef097a13b0 100644
--- a/reading_machine/src/Config.cpp
+++ b/reading_machine/src/Config.cpp
@@ -309,6 +309,7 @@ void Config::addToStack(std::size_t index)
 
 void Config::popStack()
 {
+  lastPoppedStack = getStack(0);
   stack.pop_back();
 }
 
@@ -491,3 +492,8 @@ bool Config::isPredicted(const std::string & colName) const
   return predicted.count(colName);
 }
 
+int Config::getLastPoppedStack() const
+{
+  return lastPoppedStack;
+}
+