diff --git a/Transition.py b/Transition.py
index b977cc0a58691111cd9f3596c1e17fc9290af74a..01ed81e7b08fae5a4455ce3604fb74501e31b9cf 100644
--- a/Transition.py
+++ b/Transition.py
@@ -15,7 +15,7 @@ class Transition :
     if len(splited) == 3 :
       self.colName = splited[1]
       self.argument = splited[2]
-    if not self.name in ["SHIFT","REDUCE","LEFT","RIGHT","BACK","NOBACK","NOBACKAB","EOS","TAG"] :
+    if not self.name in ["SHIFT","REDUCE","LEFT","RIGHT","BACK","NOBACK","NOBACKAB","NOBACKBB","EOS","TAG"] :
       raise(Exception("'%s' is not a valid transition type."%name))
 
   def __str__(self) :
@@ -81,6 +81,8 @@ class Transition :
     if self.name == "TAG" :
       return isEmpty(config.getAsFeature(config.wordIndex, self.colName)) or config.getAsFeature(config.wordIndex, self.colName) == Dicts.Dicts.erased
     if self.name == "NOBACK" :
+      return True
+    if self.name == "NOBACKBB" :
       return config.nbUndone == 0
     if self.name == "NOBACKAB" :
       return config.nbUndone != 0
diff --git a/main.py b/main.py
index 56517aee74e5875530ecb4d43b1436261c2376a0..dfb3fc82be256c36775a21474573ed8797b98f82 100755
--- a/main.py
+++ b/main.py
@@ -134,10 +134,10 @@ if __name__ == "__main__" :
     tmpDicts = Dicts()
     tmpDicts.readConllu(args.corpus, ["UPOS"], 0)
     tagActions = ["TAG UPOS %s"%p for p in tmpDicts.getElementsOf("UPOS") if "__" not in p and not isEmpty(p)]
-    transitionSets = [[Transition(elem) for elem in tagActions if len(elem) > 0], [Transition(elem) for elem in ["SHIFT","REDUCE","LEFT","RIGHT"] if len(elem) > 0], [Transition("NOBACK"),Transition("NOBACKAB"),Transition("BACK 2")], [Transition(elem) for elem in tagActions if len(elem) > 0], [Transition(elem) for elem in ["SHIFT","REDUCE","LEFT","RIGHT"] if len(elem) > 0]]
+    transitionSets = [[Transition(elem) for elem in tagActions if len(elem) > 0], [Transition(elem) for elem in ["SHIFT","REDUCE","LEFT","RIGHT"] if len(elem) > 0], [Transition("NOBACKBB"),Transition("NOBACKAB"),Transition("BACK 2")], [Transition(elem) for elem in tagActions if len(elem) > 0], [Transition(elem) for elem in ["SHIFT","REDUCE","LEFT","RIGHT"] if len(elem) > 0]]
     args.predictedStr = "HEAD,UPOS"
     args.states = ["tagger", "parser", "backer", "taggerReco", "parserReco"]
-    strategy = [{"TAG" : (0,1)}, {"RIGHT" : (1,2), "SHIFT" : (1,2), "LEFT" : (0,1), "REDUCE" : (0,1)}, {"NOBACK" : (0,0), "NOBACKAB" : (0,3)}, {"TAG" : (0,4)}, {"RIGHT" : (1,2), "SHIFT" : (1,2), "LEFT" : (0,4), "REDUCE" : (0,4)}]
+    strategy = [{"TAG" : (0,1)}, {"RIGHT" : (1,2), "SHIFT" : (1,2), "LEFT" : (0,1), "REDUCE" : (0,1)}, {"NOBACKBB" : (0,0), "NOBACKAB" : (0,3)}, {"TAG" : (0,4)}, {"RIGHT" : (1,2), "SHIFT" : (1,2), "LEFT" : (0,4), "REDUCE" : (0,4)}]
     probas = [[list(map(float, args.probaRandom.split(','))), list(map(float, args.probaOracle.split(',')))],
               [list(map(float, args.probaRandom.split(','))), list(map(float, args.probaOracle.split(',')))],
               [list(map(float, args.probaStateBack.split('-')[0].split(','))), list(map(float, args.probaStateBack.split('-')[1].split(',')))],