diff --git a/CFGBoltzmann.py b/CFGBoltzmann.py
old mode 100644
new mode 100755
diff --git a/cfg_utils.py b/cfg_utils.py
old mode 100644
new mode 100755
diff --git a/combinatorial_LR_parser.py b/combinatorial_LR_parser.py
old mode 100644
new mode 100755
diff --git a/gearbox.py b/gearbox.py
old mode 100644
new mode 100755
diff --git a/one_hot_utils.py b/one_hot_utils.py
old mode 100644
new mode 100755
diff --git a/python_arborist.py b/python_arborist.py
old mode 100644
new mode 100755
index 13f0845bedc92c6beafe619f5e941b4b0ac16a2f..b1d431064896b095af9c7da638cf93c023d92eab
--- a/python_arborist.py
+++ b/python_arborist.py
@@ -76,7 +76,7 @@ class Cirno(Elaboratable):
 
         # State 1 in the paper
         # Bottom of parse stack        Expression
-        [(1, STDMASK, BOTTOM),          (0, STDMASK, EXPRESSION)],
+        [(0, STDMASK, EXPRESSION)],
 
         # state 2 in paper
         # TERM
@@ -236,6 +236,7 @@ class Cirno(Elaboratable):
         self.tapir = msm.tapir
         self.finalized = msm.parse_complete_out
         self.numwritten = msm.last_index_to_smem
+        self.parse_success = msm.parse_success_out
 
         with m.If(resetted == 0):
             m.d.sync += resetted.eq(1)
@@ -271,6 +272,7 @@ def run_the_sim(parse_me):
     m.submodules.baka = nine = Cirno()
     trace = []
     numwritten = []
+    parse_success = [0]
 
 
     def process():
@@ -292,8 +294,10 @@ def run_the_sim(parse_me):
                 yield
                 yield
                 xz = yield nine.numwritten
+                parse_success[0] = yield nine.parse_success
                 numwritten.append(xz)
                 print("NUM WRITTEN INSIDE", numwritten)
+                print("PARSE SUCCESS,", parse_success)
                 break
 
 
@@ -314,9 +318,14 @@ def run_the_sim(parse_me):
 
     for x in trace:
         print(x)
-    print("XXXXXXXXXXXXXXXXXXXXX", numwritten)
+    print("XXXXXXXXXXXXXXXXXXXXX", numwritten, parse_success)
 
-    return (trace, numwritten)
+    if (parse_success[0] == 1):
+        success = True
+    else:
+        success = False
+
+    return (trace, numwritten, success)
 
 top_bit = (1<<16)
 
@@ -458,7 +467,11 @@ def do_an_iteration():
 
     parse_me.append(ENDOFPARSE)
     
-    (trace, numwritten) = run_the_sim(parse_me)
+    (trace, numwritten, success) = run_the_sim(parse_me)
+
+    if (success == False):
+        return
+
     numwritten = numwritten[0] - 1
     print("NUM WRITTEN = ",numwritten)
 
@@ -487,6 +500,6 @@ def do_an_iteration():
         exit(1)
 
 
-for x in range(1024):
+for x in range(131072):
     do_an_iteration()
 
diff --git a/skidbuffer.py b/skidbuffer.py
old mode 100644
new mode 100755
diff --git a/string_lexer.py b/string_lexer.py
old mode 100644
new mode 100755
diff --git a/test_fsm.py b/test_fsm.py
old mode 100644
new mode 100755
diff --git a/test_testing_scheme.py b/test_testing_scheme.py
old mode 100644
new mode 100755