diff --git a/test/k-clustering/4.14.0/fig52_kcl.rif.exp b/test/k-clustering/4.14.0/fig52_kcl.rif.exp
index d8c499fde3357c40a02cb9ef891af8c039f1faf0..3f7fb6895e36e9c885d847623c7d083b780ea825 100644
--- a/test/k-clustering/4.14.0/fig52_kcl.rif.exp
+++ b/test/k-clustering/4.14.0/fig52_kcl.rif.exp
@@ -1,29 +1,29 @@
-# Automatically generated by /home/jahier/.opam/4.14.0/bin/sasa version "v4.6.0" ("73ebb5e")
-# on crevetete the 23/6/2022 at 14:37:03
+# Automatically generated by /home/jahier/.opam/4.14.0/bin/sasa version "v4.7.0" ("1f6fd7d")
+# on crevetete the 25/7/2022 at 17:12:38
 #sasa fig52_kcl.dot -seed 42
 
 #seed 42
 #inputs 
-#outputs "Root_alpha":int "p2_alpha":int "p3_alpha":int "p4_alpha":int "p5_alpha":int "p6_alpha":int "p7_alpha":int "Enab_Root_change_alpha":bool "Enab_p2_change_alpha":bool "Enab_p3_change_alpha":bool "Enab_p4_change_alpha":bool "Enab_p5_change_alpha":bool "Enab_p6_change_alpha":bool "Enab_p7_change_alpha":bool "Root_change_alpha":bool "p2_change_alpha":bool "p3_change_alpha":bool "p4_change_alpha":bool "p5_change_alpha":bool "p6_change_alpha":bool "p7_change_alpha":bool "legitimate":bool potential:real round:bool round_nb:int
+#outputs "Root_isRoot":bool "Root_alpha":int "Root_par":int "p2_isRoot":bool "p2_alpha":int "p2_par":int "p3_isRoot":bool "p3_alpha":int "p3_par":int "p4_isRoot":bool "p4_alpha":int "p4_par":int "p5_isRoot":bool "p5_alpha":int "p5_par":int "p6_isRoot":bool "p6_alpha":int "p6_par":int "p7_isRoot":bool "p7_alpha":int "p7_par":int "Enab_Root_change_alpha":bool "Enab_p2_change_alpha":bool "Enab_p3_change_alpha":bool "Enab_p4_change_alpha":bool "Enab_p5_change_alpha":bool "Enab_p6_change_alpha":bool "Enab_p7_change_alpha":bool "Root_change_alpha":bool "p2_change_alpha":bool "p3_change_alpha":bool "p4_change_alpha":bool "p5_change_alpha":bool "p6_change_alpha":bool "p7_change_alpha":bool "legitimate":bool potential:real round:bool round_nb:int
 
 
 #step 0
-#outs 0 0 0 0 0 0 0 t t t t t f f f t f f t f f f 15. f 0
+#outs t 0 -1 f 0 0 f 0 0 f 0 0 f 0 0 f 0 0 f 0 0 t t t t t f f f t f f t f f f 15. f 0
 
 #step 1
-#outs 0 1 0 0 1 0 0 t f t t f f f t f t t f f f f 8. f 1
+#outs t 0 -1 f 1 0 f 0 0 f 0 0 f 1 0 f 0 0 f 0 0 t f t t f f f t f t t f f f f 8. f 1
 
 #step 2
-#outs 2 1 1 2 1 0 0 f t t f f f f f f t f f f f f 5. t 2
+#outs t 2 -1 f 1 0 f 1 0 f 2 0 f 1 0 f 0 0 f 0 0 f t t f f f f f f t f f f f f 5. t 2
 
 #step 3
-#outs 2 1 3 2 1 0 0 f t f f f f f f t f f f f f f 2. f 2
+#outs t 2 -1 f 1 0 f 3 0 f 2 0 f 1 0 f 0 0 f 0 0 f t f f f f f f t f f f f f f 2. f 2
 
 #step 4
-#outs 2 4 3 2 1 0 0 t f f f f f f t f f f f f f f 1. t 3
+#outs t 2 -1 f 4 0 f 3 0 f 2 0 f 1 0 f 0 0 f 0 0 t f f f f f f t f f f f f f f 1. t 3
 
 #step 5
-#outs 0 4 3 2 1 0 0 f f f f f f f f f f f f f f t 0. t 3
+#outs t 0 -1 f 4 0 f 3 0 f 2 0 f 1 0 f 0 0 f 0 0 f f f f f f f f f f f f f f t 0. t 3
 
 This algo is silent after 8 moves, 5 steps, 3 rounds.
 
diff --git a/test/k-clustering/4.14.0/rtree10.rif.exp b/test/k-clustering/4.14.0/rtree10.rif.exp
index 4b2fe6be3cc8b1491f664415a8102725c19cbbb1..4ac022a6e990829c8c32e2a8f1339d9b70e3e5ef 100644
--- a/test/k-clustering/4.14.0/rtree10.rif.exp
+++ b/test/k-clustering/4.14.0/rtree10.rif.exp
@@ -1,32 +1,32 @@
-# Automatically generated by /home/jahier/.opam/4.14.0/bin/sasa version "v4.6.0" ("73ebb5e")
-# on crevetete the 23/6/2022 at 14:37:04
+# Automatically generated by /home/jahier/.opam/4.14.0/bin/sasa version "v4.7.0" ("1f6fd7d")
+# on crevetete the 25/7/2022 at 17:12:38
 #sasa rtree10.dot -seed 42
 
 #seed 42
 #inputs 
-#outputs "Root_alpha":int "p1_alpha":int "p2_alpha":int "p3_alpha":int "p4_alpha":int "p5_alpha":int "p6_alpha":int "p7_alpha":int "p8_alpha":int "p9_alpha":int "Enab_Root_change_alpha":bool "Enab_p1_change_alpha":bool "Enab_p2_change_alpha":bool "Enab_p3_change_alpha":bool "Enab_p4_change_alpha":bool "Enab_p5_change_alpha":bool "Enab_p6_change_alpha":bool "Enab_p7_change_alpha":bool "Enab_p8_change_alpha":bool "Enab_p9_change_alpha":bool "Root_change_alpha":bool "p1_change_alpha":bool "p2_change_alpha":bool "p3_change_alpha":bool "p4_change_alpha":bool "p5_change_alpha":bool "p6_change_alpha":bool "p7_change_alpha":bool "p8_change_alpha":bool "p9_change_alpha":bool "legitimate":bool potential:real round:bool round_nb:int
+#outputs "Root_isRoot":bool "Root_alpha":int "Root_par":int "p1_isRoot":bool "p1_alpha":int "p1_par":int "p2_isRoot":bool "p2_alpha":int "p2_par":int "p3_isRoot":bool "p3_alpha":int "p3_par":int "p4_isRoot":bool "p4_alpha":int "p4_par":int "p5_isRoot":bool "p5_alpha":int "p5_par":int "p6_isRoot":bool "p6_alpha":int "p6_par":int "p7_isRoot":bool "p7_alpha":int "p7_par":int "p8_isRoot":bool "p8_alpha":int "p8_par":int "p9_isRoot":bool "p9_alpha":int "p9_par":int "Enab_Root_change_alpha":bool "Enab_p1_change_alpha":bool "Enab_p2_change_alpha":bool "Enab_p3_change_alpha":bool "Enab_p4_change_alpha":bool "Enab_p5_change_alpha":bool "Enab_p6_change_alpha":bool "Enab_p7_change_alpha":bool "Enab_p8_change_alpha":bool "Enab_p9_change_alpha":bool "Root_change_alpha":bool "p1_change_alpha":bool "p2_change_alpha":bool "p3_change_alpha":bool "p4_change_alpha":bool "p5_change_alpha":bool "p6_change_alpha":bool "p7_change_alpha":bool "p8_change_alpha":bool "p9_change_alpha":bool "legitimate":bool potential:real round:bool round_nb:int
 
 
 #step 0
-#outs 4 0 3 3 2 0 4 1 1 3 t f f t f f t t t t t f f f f f f f f f f 16. f 0
+#outs t 4 -1 f 0 0 f 3 0 f 3 0 f 2 0 f 0 0 f 4 0 f 1 0 f 1 0 f 3 0 t f f t f f t t t t t f f f f f f f f f f 16. f 0
 
 #step 1
-#outs 1 0 3 3 2 0 4 1 1 3 f f f t f f t t t t f f f f f f t t t f f 15. f 1
+#outs t 1 -1 f 0 0 f 3 0 f 3 0 f 2 0 f 0 0 f 4 0 f 1 0 f 1 0 f 3 0 f f f t f f t t t t f f f f f f t t t f f 15. f 1
 
 #step 2
-#outs 1 0 3 3 2 0 2 0 0 3 t f f t t f t f f t f f f f t f t f f t f 12. f 1
+#outs t 1 -1 f 0 0 f 3 0 f 3 0 f 2 0 f 0 0 f 2 0 f 0 0 f 0 0 f 3 0 t f f t t f t f f t f f f f t f t f f t f 12. f 1
 
 #step 3
-#outs 1 0 3 3 1 0 1 0 0 0 t f t t f f f f f f t f f f f f f f f f f 6. f 1
+#outs t 1 -1 f 0 0 f 3 0 f 3 0 f 1 0 f 0 0 f 1 0 f 0 0 f 0 0 f 0 0 t f t t f f f f f f t f f f f f f f f f f 6. f 1
 
 #step 4
-#outs 2 0 3 3 1 0 1 0 0 0 f f t t f f f f f f f f t f f f f f f f f 5. f 1
+#outs t 2 -1 f 0 0 f 3 0 f 3 0 f 1 0 f 0 0 f 1 0 f 0 0 f 0 0 f 0 0 f f t t f f f f f f f f t f f f f f f f f 5. f 1
 
 #step 5
-#outs 2 0 2 3 1 0 1 0 0 0 f f f t f f f f f f f f f t f f f f f f f 3. f 1
+#outs t 2 -1 f 0 0 f 2 0 f 3 0 f 1 0 f 0 0 f 1 0 f 0 0 f 0 0 f 0 0 f f f t f f f f f f f f f t f f f f f f f 3. f 1
 
 #step 6
-#outs 2 0 2 0 1 0 1 0 0 0 f f f f f f f f f f f f f f f f f f f f t 0. t 1
+#outs t 2 -1 f 0 0 f 2 0 f 0 0 f 1 0 f 0 0 f 1 0 f 0 0 f 0 0 f 0 0 f f f f f f f f f f f f f f f f f f f f t 0. t 1
 
 This algo is silent after 10 moves, 6 steps, 1 round.
 
diff --git a/test/unison/fig41.dot b/test/unison/fig41.dot
index 8a0364268e936df7db67b0fd99123e6ba4b0f9aa..b9f914c7260e68ab34e46df0437d97fa75da7499 100644
--- a/test/unison/fig41.dot
+++ b/test/unison/fig41.dot
@@ -3,14 +3,14 @@ graph fig4_1 {
    
    
 
- p1 [algo="unison.ml" init="clock=7"]
- p2 [algo="unison.ml" init="clock=8"]
- p3 [algo="unison.ml" init="clock=4"]
- p4 [algo="unison.ml" init="clock=3"]
- p5 [algo="unison.ml" init="clock=0"]
- p6 [algo="unison.ml" init="clock=7"]
- p7 [algo="unison.ml" init="clock=2"]
- p8 [algo="unison.ml" init="clock=7"]
+ p1 [algo="unison.ml" init="c=7"]
+ p2 [algo="unison.ml" init="c=8"]
+ p3 [algo="unison.ml" init="c=4"]
+ p4 [algo="unison.ml" init="c=3"]
+ p5 [algo="unison.ml" init="c=0"]
+ p6 [algo="unison.ml" init="c=7"]
+ p7 [algo="unison.ml" init="c=2"]
+ p8 [algo="unison.ml" init="c=7"]
 
  p1 -- p2 -- p3 -- p4 -- p5 -- p3
  p2 -- p7 -- p6 -- p3
diff --git a/test/unison/state_no_fault.ml b/test/unison/state_no_fault.ml
index 2298b66ca4243cdb91c1349975dd10d278df9acf..36fa4acebfa26dcfeaee2fb9346cc74429d557aa 100644
--- a/test/unison/state_no_fault.ml
+++ b/test/unison/state_no_fault.ml
@@ -1,7 +1,14 @@
 
 type t = int
 let to_string = (fun s -> Printf.sprintf "c=%i" s)
-let of_string = None
+
+let (of_string: (string -> t) option) =
+  Some (fun s ->
+      let res = Scanf.sscanf s "c=%d" (fun i -> i ) in
+      res
+    )
+
+
 let copy x = x
 let actions = ["g"]
 let potential = None
diff --git a/test/unison/state_with_fault.ml b/test/unison/state_with_fault.ml
index 63168c904d2650b53982e0d09cf14040ee1c2883..888253f228e95729e6b3491078428ca8a55092f0 100644
--- a/test/unison/state_with_fault.ml
+++ b/test/unison/state_with_fault.ml
@@ -1,7 +1,12 @@
 
 type t = int
 let to_string = (fun s -> Printf.sprintf "c=%i" s)
-let of_string = None
+let (of_string: (string -> t) option) =
+  Some (fun s ->
+      let res = Scanf.sscanf s "c=%d" (fun i -> i ) in
+      res
+    )
+
 let copy x = x
 let actions = ["g"]
 let potential = None