diff --git a/src/licPrg.ml b/src/licPrg.ml
index d97f703081b9cc374dd1e026339e46c93ca5725b..11122196806f65ff936633da687354153bd770db 100644
--- a/src/licPrg.ml
+++ b/src/licPrg.ml
@@ -209,8 +209,13 @@ let to_file (oc: out_channel) (this:t) (main_node: Ident.idref option) =
               if Ident.long_of_idref idref = key then raise (Print_me nexp)
             | None -> (
               match nexp.Lic.node_key_eff, nexp.Lic.def_eff with
-                (* only user nodes with a body are valid ec node *)
+                (* only user or extern nodes with a body makes valid ec node *)
                 | _, Lic.BodyLic _ -> raise (Print_me nexp)
+                | (("Lustre",_),[]), Lic.ExternLic -> ()
+                | _, Lic.ExternLic ->
+                  (* we need to declare all extern nodes (do we?) *)
+                  output_string !Global.oc (LicDump.node_of_node_exp_eff nexp);
+                  flush !Global.oc;
                 | _  -> ()
             )
          )
diff --git a/test/lus2lic.log.ref b/test/lus2lic.log.ref
index 7d23f614c2f7d5b7d3d32b62489f2072232d39f1..2493574da27bdb21dc758b8664582cc6a18cc651 100644
--- a/test/lus2lic.log.ref
+++ b/test/lus2lic.log.ref
@@ -1,4 +1,4 @@
-Test Run By jahier on Fri Jan 18 22:54:55 2013
+Test Run By jahier on Sat Jan 19 14:58:11 2013
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -85,6 +85,12 @@ spawn ./lus2lic -ec -o /tmp/dep.ec should_work/dep.lus
 PASS: ./lus2lic {-ec -o /tmp/dep.ec should_work/dep.lus}
 spawn ec2c -o /tmp/dep.c /tmp/dep.ec
 PASS: ec2c {-o /tmp/dep.c /tmp/dep.ec}
+spawn ./lus2lic -o /tmp/ELMU.lic should_work/ELMU.lus
+PASS: ./lus2lic {-o /tmp/ELMU.lic should_work/ELMU.lus}
+spawn ./lus2lic -ec -o /tmp/ELMU.ec should_work/ELMU.lus
+PASS: ./lus2lic {-ec -o /tmp/ELMU.ec should_work/ELMU.lus}
+spawn ec2c -o /tmp/ELMU.c /tmp/ELMU.ec
+PASS: ec2c {-o /tmp/ELMU.c /tmp/ELMU.ec}
 spawn ./lus2lic -o /tmp/testPilote.lic should_work/testPilote.lus
 PASS: ./lus2lic {-o /tmp/testPilote.lic should_work/testPilote.lus}
 spawn ./lus2lic -ec -o /tmp/testPilote.ec should_work/testPilote.lus
@@ -229,6 +235,12 @@ spawn ./lus2lic -ec -o /tmp/nc9.ec should_work/nc9.lus
 PASS: ./lus2lic {-ec -o /tmp/nc9.ec should_work/nc9.lus}
 spawn ec2c -o /tmp/nc9.c /tmp/nc9.ec
 PASS: ec2c {-o /tmp/nc9.c /tmp/nc9.ec}
+spawn ./lus2lic -o /tmp/packageTableau.lic should_work/packageTableau.lus
+PASS: ./lus2lic {-o /tmp/packageTableau.lic should_work/packageTableau.lus}
+spawn ./lus2lic -ec -o /tmp/packageTableau.ec should_work/packageTableau.lus
+PASS: ./lus2lic {-ec -o /tmp/packageTableau.ec should_work/packageTableau.lus}
+spawn ec2c -o /tmp/packageTableau.c /tmp/packageTableau.ec
+PASS: ec2c {-o /tmp/packageTableau.c /tmp/packageTableau.ec}
 spawn ./lus2lic -o /tmp/car-V2.lic should_work/car-V2.lus
 PASS: ./lus2lic {-o /tmp/car-V2.lic should_work/car-V2.lus}
 spawn ./lus2lic -ec -o /tmp/car-V2.ec should_work/car-V2.lus
@@ -343,6 +355,12 @@ spawn ./lus2lic -ec -o /tmp/v1.ec should_work/v1.lus
 PASS: ./lus2lic {-ec -o /tmp/v1.ec should_work/v1.lus}
 spawn ec2c -o /tmp/v1.c /tmp/v1.ec
 PASS: ec2c {-o /tmp/v1.c /tmp/v1.ec}
+spawn ./lus2lic -o /tmp/ply02.lic should_work/ply02.lus
+PASS: ./lus2lic {-o /tmp/ply02.lic should_work/ply02.lus}
+spawn ./lus2lic -ec -o /tmp/ply02.ec should_work/ply02.lus
+PASS: ./lus2lic {-ec -o /tmp/ply02.ec should_work/ply02.lus}
+spawn ec2c -o /tmp/ply02.c /tmp/ply02.ec
+PASS: ec2c {-o /tmp/ply02.c /tmp/ply02.ec}
 spawn ./lus2lic -o /tmp/call04.lic should_work/call04.lus
 PASS: ./lus2lic {-o /tmp/call04.lic should_work/call04.lus}
 spawn ./lus2lic -ec -o /tmp/call04.ec should_work/call04.lus
@@ -595,6 +613,12 @@ spawn ./lus2lic -ec -o /tmp/param_node4.ec should_work/param_node4.lus
 PASS: ./lus2lic {-ec -o /tmp/param_node4.ec should_work/param_node4.lus}
 spawn ec2c -o /tmp/param_node4.c /tmp/param_node4.ec
 PASS: ec2c {-o /tmp/param_node4.c /tmp/param_node4.ec}
+spawn ./lus2lic -o /tmp/bad_call03.lic should_work/bad_call03.lus
+PASS: ./lus2lic {-o /tmp/bad_call03.lic should_work/bad_call03.lus}
+spawn ./lus2lic -ec -o /tmp/bad_call03.ec should_work/bad_call03.lus
+PASS: ./lus2lic {-ec -o /tmp/bad_call03.ec should_work/bad_call03.lus}
+spawn ec2c -o /tmp/bad_call03.c /tmp/bad_call03.ec
+PASS: ec2c {-o /tmp/bad_call03.c /tmp/bad_call03.ec}
 spawn ./lus2lic -o /tmp/onlyroll.lic should_work/onlyroll.lus
 PASS: ./lus2lic {-o /tmp/onlyroll.lic should_work/onlyroll.lus}
 spawn ./lus2lic -ec -o /tmp/onlyroll.ec should_work/onlyroll.lus
@@ -1392,9 +1416,7 @@ PASS: ./lus2lic {-o /tmp/decl.lic should_work/decl.lus}
 spawn ./lus2lic -ec -o /tmp/decl.ec should_work/decl.lus
 PASS: ./lus2lic {-ec -o /tmp/decl.ec should_work/decl.lus}
 spawn ec2c -o /tmp/decl.c /tmp/decl.ec
-EcParse: ec file must contain one node
-syntax errors...
-FAIL: Try ec2c on the result: ec2c {-o /tmp/decl.c /tmp/decl.ec}
+PASS: ec2c {-o /tmp/decl.c /tmp/decl.ec}
 spawn ./lus2lic -o /tmp/bred_lv4.lic should_work/bred_lv4.lus
 PASS: ./lus2lic {-o /tmp/bred_lv4.lic should_work/bred_lv4.lus}
 spawn ./lus2lic -ec -o /tmp/bred_lv4.ec should_work/bred_lv4.lus
@@ -1474,6 +1496,17 @@ spawn ./lus2lic -o /tmp/Gyro.lic should_fail/type/Gyro.lus
 *** syntax error
 
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/Gyro.lic should_fail/type/Gyro.lus}
+spawn ./lus2lic -o /tmp/Gyro-2.lic should_fail/type/Gyro-2.lus
+Warning. in file "/home/jahier/lus2lic/test/should_fail/type/Gyro-2.lus", line 290, col 102 to 102, token ',':
+---> separator mismatch, ';' expected
+Warning. in file "/home/jahier/lus2lic/test/should_fail/type/Gyro-2.lus", line 292, col 138 to 138, token ',':
+---> separator mismatch, ';' expected
+Warning. in file "/home/jahier/lus2lic/test/should_fail/type/Gyro-2.lus", line 325, col 55 to 55, token ',':
+---> separator mismatch, ';' expected
+*** Error in file "/home/jahier/lus2lic/test/should_fail/type/Gyro-2.lus", line 335, col 30 to 36, token 'map_red':
+*** Bad number of (static) arguments: 0 expected, and 2 provided.
+
+XFAIL: Test bad programs (type): lus2lic {-o /tmp/Gyro-2.lic should_fail/type/Gyro-2.lus}
 spawn ./lus2lic -o /tmp/parametric_node4.lic should_fail/type/parametric_node4.lus
 *** Error in file "/home/jahier/lus2lic/test/should_fail/type/parametric_node4.lus", line 4, col 17 to 17, token 'n':
 *** can't eval type: bad array size, int expected but get real
@@ -1581,11 +1614,39 @@ spawn ./lus2lic -o /tmp/x.lic should_fail/semantics/x.lus
    > const ref in file "/home/jahier/lus2lic/test/should_fail/semantics/x.lus", line 6, col 11 to 11, token 't'
 
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/x.lic should_fail/semantics/x.lus}
+spawn ./lus2lic -o /tmp/t.lic should_fail/semantics/t.lus
+*** Error in file "/home/jahier/lus2lic/test/should_fail/semantics/t.lus", line 31, col 7 to 7, token 'A':
+*** bad constant declaration, ident already linked at line:2, col:7 to 7
+
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/t.lic should_fail/semantics/t.lus}
+spawn ./lus2lic -o /tmp/parametric_node4.lic should_fail/semantics/parametric_node4.lus
+*** Error in file "/home/jahier/lus2lic/test/should_fail/semantics/parametric_node4.lus", line 4, col 17 to 17, token 'n':
+*** can't eval type: bad array size, int expected but get real
+
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/parametric_node4.lic should_fail/semantics/parametric_node4.lus}
 spawn ./lus2lic -o /tmp/const2.lic should_fail/semantics/const2.lus
 *** Error in file "/home/jahier/lus2lic/test/should_fail/semantics/const2.lus", line 4, col 18 to 22, token 'false':
 *** syntax error
 
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/const2.lic should_fail/semantics/const2.lus}
+spawn ./lus2lic -o /tmp/sargs.lic should_fail/semantics/sargs.lus
+*** Error in file "/home/jahier/lus2lic/test/should_fail/semantics/sargs.lus", line 7, col 10 to 10, token '+':
+*** type error: 
+*** type 'real * int' was provided whereas
+*** type 'anynum * anynum' was expected
+*** 
+***    real and int are not unifiable
+
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/sargs.lic should_fail/semantics/sargs.lus}
+spawn ./lus2lic -o /tmp/patrick.lic should_fail/semantics/patrick.lus
+*** Error in file "/home/jahier/lus2lic/test/should_fail/semantics/patrick.lus", line 2, col 6 to 12, token 'patrick':
+*** 
+*** "x" (local x:int on base(x,0)) is not defined. 
+*** Defined variables are: 
+  - "s" (output s:int on base(s,0))
+
+
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/patrick.lic should_fail/semantics/patrick.lus}
 spawn ./lus2lic -o /tmp/const.lic should_fail/semantics/const.lus
 *** Error in file "/home/jahier/lus2lic/test/should_fail/semantics/const.lus", line 19, col 42 to 43, token 'c4':
 *** bad field declaration, ident already linked at line:19, col:10 to 11
@@ -1596,7 +1657,7 @@ spawn ./lus2lic -o /tmp/m.lic should_fail/semantics/m.lus
 *** syntax error
 
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/m.lic should_fail/semantics/m.lus}
-testcase ./lus2lic.tests/non-reg.exp completed in 141 seconds
+testcase ./lus2lic.tests/non-reg.exp completed in 155 seconds
 Running ./lus2lic.tests/progression.exp ...
 spawn ./lus2lic -o /tmp/when_enum.out should_work/broken/when_enum.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/when_enum.lus", line 10, col 12 to 15, token 'toto':
@@ -1610,40 +1671,6 @@ FAIL: without any option: ./lus2lic {    -o /tmp/when_enum.out should_work/broke
 spawn ./lus2lic -ec -o /tmp/when_enum.ec should_work/broken/when_enum.lus
 Error. *** Cannot generate V4 style Lustre for programs with enumerated clocks (yet), sorry.
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/when_enum.ec  should_work/broken/when_enum.lus}
-spawn ./lus2lic -o /tmp/parametric_node.out should_work/broken/parametric_node.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/parametric_node.lus", line 4, col 17 to 17, token 'n':
-*** can't eval type: bad array size, int expected but get real
-
-FAIL: without any option: ./lus2lic {    -o /tmp/parametric_node.out should_work/broken/parametric_node.lus}
-spawn ./lus2lic -ec -o /tmp/parametric_node.ec should_work/broken/parametric_node.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/parametric_node.lus", line 4, col 17 to 17, token 'n':
-*** can't eval type: bad array size, int expected but get real
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/parametric_node.ec  should_work/broken/parametric_node.lus}
-spawn ./lus2lic -o /tmp/bad_call02.out should_work/broken/bad_call02.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bad_call02.lus", line 6, col 4 to 4, token '=':
-*** 
-*** clock error: The two following clocks are not unifiable:
-***	 on base
-***	 on c on base
-
-
-FAIL: without any option: ./lus2lic {    -o /tmp/bad_call02.out should_work/broken/bad_call02.lus}
-spawn ./lus2lic -ec -o /tmp/bad_call02.ec should_work/broken/bad_call02.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bad_call02.lus", line 6, col 4 to 4, token '=':
-*** 
-*** clock error: The two following clocks are not unifiable:
-***	 on base
-***	 on c on base
-
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bad_call02.ec  should_work/broken/bad_call02.lus}
-spawn ./lus2lic -o /tmp/packageTableau.out should_work/broken/packageTableau.lus
-Error. No package has been provided
-FAIL: without any option: ./lus2lic {    -o /tmp/packageTableau.out should_work/broken/packageTableau.lus}
-spawn ./lus2lic -ec -o /tmp/packageTableau.ec should_work/broken/packageTableau.lus
-Error. No package has been provided
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/packageTableau.ec  should_work/broken/packageTableau.lus}
 spawn ./lus2lic -o /tmp/condact2.out should_work/broken/condact2.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/condact2.lus", line 5, col 6 to 12, token 'condact':
 *** type error: 
@@ -1658,44 +1685,6 @@ spawn ./lus2lic -ec -o /tmp/condact2.ec should_work/broken/condact2.lus
 ***    bool can't be matched by int
 
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/condact2.ec  should_work/broken/condact2.lus}
-spawn ./lus2lic -o /tmp/const3.out should_work/broken/const3.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/const3.lus", line 2, col 17 to 17, token '/':
-*** 
-*** can't eval constant: reals cannot be evaluated, sorry.
-
-FAIL: without any option: ./lus2lic {    -o /tmp/const3.out should_work/broken/const3.lus}
-spawn ./lus2lic -ec -o /tmp/const3.ec should_work/broken/const3.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/const3.lus", line 2, col 17 to 17, token '/':
-*** 
-*** can't eval constant: reals cannot be evaluated, sorry.
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/const3.ec  should_work/broken/const3.lus}
-spawn ./lus2lic -o /tmp/not_a_constant.out should_work/broken/not_a_constant.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/not_a_constant.lus", line 10, col 23 to 24, token '--':
-*** syntax error
-
-FAIL: without any option: ./lus2lic {    -o /tmp/not_a_constant.out should_work/broken/not_a_constant.lus}
-spawn ./lus2lic -ec -o /tmp/not_a_constant.ec should_work/broken/not_a_constant.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/not_a_constant.lus", line 10, col 23 to 24, token '--':
-*** syntax error
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/not_a_constant.ec  should_work/broken/not_a_constant.lus}
-spawn ./lus2lic -o /tmp/ply02.out should_work/broken/ply02.lus
-PASS: ./lus2lic {    -o /tmp/ply02.out should_work/broken/ply02.lus}
-spawn ./lus2lic -ec -o /tmp/ply02.ec should_work/broken/ply02.lus
-PASS: ./lus2lic {-ec -o /tmp/ply02.ec  should_work/broken/ply02.lus}
-spawn ./lus2lic -o /tmp/bug3.out should_work/broken/bug3.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bug3.lus", line 10, col 3 to 3, token 'x':
-*** 
-*** Variable x is already partly defined (x[1][0].f1).
-
-FAIL: without any option: ./lus2lic {    -o /tmp/bug3.out should_work/broken/bug3.lus}
-spawn ./lus2lic -ec -o /tmp/bug3.ec should_work/broken/bug3.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bug3.lus", line 10, col 3 to 3, token 'x':
-*** 
-*** Variable x is already partly defined (x[1][0].f1).
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bug3.ec  should_work/broken/bug3.lus}
 spawn ./lus2lic -o /tmp/when_not.out should_work/broken/when_not.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/when_not.lus", line 7, col 12 to 17, token 'clock4':
 *** 
@@ -1724,16 +1713,6 @@ spawn ./lus2lic -ec -o /tmp/old_style_and_pack.ec should_work/broken/old_style_a
 *** syntax error
 
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/old_style_and_pack.ec  should_work/broken/old_style_and_pack.lus}
-spawn ./lus2lic -o /tmp/inonout.out should_work/broken/inonout.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/inonout.lus", line 3, col 46 to 46, token 'c':
-*** unknown variable (c)
-
-FAIL: without any option: ./lus2lic {    -o /tmp/inonout.out should_work/broken/inonout.lus}
-spawn ./lus2lic -ec -o /tmp/inonout.ec should_work/broken/inonout.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/inonout.lus", line 3, col 46 to 46, token 'c':
-*** unknown variable (c)
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/inonout.ec  should_work/broken/inonout.lus}
 spawn ./lus2lic -o /tmp/pfs.out should_work/broken/pfs.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/pfs.lus", line 43, col 22 to 22, token '[':
 *** syntax error
@@ -1744,10 +1723,6 @@ spawn ./lus2lic -ec -o /tmp/pfs.ec should_work/broken/pfs.lus
 *** syntax error
 
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/pfs.ec  should_work/broken/pfs.lus}
-spawn ./lus2lic -o /tmp/bad_call03.out should_work/broken/bad_call03.lus
-PASS: ./lus2lic {    -o /tmp/bad_call03.out should_work/broken/bad_call03.lus}
-spawn ./lus2lic -ec -o /tmp/bad_call03.ec should_work/broken/bad_call03.lus
-PASS: ./lus2lic {-ec -o /tmp/bad_call03.ec  should_work/broken/bad_call03.lus}
 spawn ./lus2lic -o /tmp/packages.out should_work/broken/packages.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/packages.lus", line 22, col 27 to 29, token 'int':
 *** syntax error
@@ -1763,56 +1738,6 @@ PASS: ./lus2lic {    -o /tmp/when_node.out should_work/broken/when_node.lus}
 spawn ./lus2lic -ec -o /tmp/when_node.ec should_work/broken/when_node.lus
 Error. *** Cannot generate V4 style Lustre for programs with enumerated clocks (yet), sorry.
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/when_node.ec  should_work/broken/when_node.lus}
-spawn ./lus2lic -o /tmp/testSilus.out should_work/broken/testSilus.lus
-PASS: ./lus2lic {    -o /tmp/testSilus.out should_work/broken/testSilus.lus}
-spawn ./lus2lic -ec -o /tmp/testSilus.ec should_work/broken/testSilus.lus
-UNRESOLVED: Time out: ./lus2lic {-ec -o /tmp/testSilus.ec  should_work/broken/testSilus.lus}
-spawn ./lus2lic -o /tmp/tranche.out should_work/broken/tranche.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/tranche.lus", line 7, col 6 to 6, token 'n':
-*** 
-*** can't eval constant: 
-*** cannot access this extern constant value
-
-FAIL: without any option: ./lus2lic {    -o /tmp/tranche.out should_work/broken/tranche.lus}
-spawn ./lus2lic -ec -o /tmp/tranche.ec should_work/broken/tranche.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/tranche.lus", line 7, col 6 to 6, token 'n':
-*** 
-*** can't eval constant: 
-*** cannot access this extern constant value
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/tranche.ec  should_work/broken/tranche.lus}
-spawn ./lus2lic -o /tmp/packages2.out should_work/broken/packages2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/packages2.lus", line 5, col 8 to 8, token 'n':
-*** provided node for stupid::n is not compatible with its implementation: 
-*** stupid::t1 <> int
-
-FAIL: without any option: ./lus2lic {    -o /tmp/packages2.out should_work/broken/packages2.lus}
-spawn ./lus2lic -ec -o /tmp/packages2.ec should_work/broken/packages2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/packages2.lus", line 5, col 8 to 8, token 'n':
-*** provided node for stupid__n is not compatible with its implementation: 
-*** t1 <> int
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/packages2.ec  should_work/broken/packages2.lus}
-spawn ./lus2lic -o /tmp/Gyro.out should_work/broken/Gyro.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/Gyro.lus", line 11, col 42 to 42, token ',':
-*** syntax error
-
-FAIL: without any option: ./lus2lic {    -o /tmp/Gyro.out should_work/broken/Gyro.lus}
-spawn ./lus2lic -ec -o /tmp/Gyro.ec should_work/broken/Gyro.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/Gyro.lus", line 11, col 42 to 42, token ',':
-*** syntax error
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/Gyro.ec  should_work/broken/Gyro.lus}
-spawn ./lus2lic -o /tmp/import2.out should_work/broken/import2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/import2.lus", line 2, col 1 to 4, token 'node':
-*** syntax error
-
-FAIL: without any option: ./lus2lic {    -o /tmp/import2.out should_work/broken/import2.lus}
-spawn ./lus2lic -ec -o /tmp/import2.ec should_work/broken/import2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/import2.lus", line 2, col 1 to 4, token 'node':
-*** syntax error
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/import2.ec  should_work/broken/import2.lus}
 spawn ./lus2lic -o /tmp/multipar.out should_work/broken/multipar.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/multipar.lus", line 20, col 12 to 12, token 'g':
 *** unknown node: g
@@ -1827,86 +1752,6 @@ spawn ./lus2lic -ec -o /tmp/multipar.ec should_work/broken/multipar.lus
 
 
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/multipar.ec  should_work/broken/multipar.lus}
-spawn ./lus2lic -o /tmp/bad_call01.out should_work/broken/bad_call01.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bad_call01.lus", line 3, col 13 to 16, token 'toto':
-*** Recursion loop detected in node bad_call01::toto
-*** bad_call01::toto depends on itself
- node ref in file "/home/jahier/lus2lic/test/should_work/broken/bad_call01.lus", line 3, col 13 to 16, token 'toto'
-
-FAIL: without any option: ./lus2lic {    -o /tmp/bad_call01.out should_work/broken/bad_call01.lus}
-spawn ./lus2lic -ec -o /tmp/bad_call01.ec should_work/broken/bad_call01.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bad_call01.lus", line 3, col 13 to 16, token 'toto':
-*** Recursion loop detected in node bad_call01__toto
-*** bad_call01__toto depends on itself
- node ref in file "/home/jahier/lus2lic/test/should_work/broken/bad_call01.lus", line 3, col 13 to 16, token 'toto'
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bad_call01.ec  should_work/broken/bad_call01.lus}
-spawn ./lus2lic -o /tmp/clock.out should_work/broken/clock.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/clock.lus", line 23, col 12 to 17, token 'clock4':
-*** 
-*** clock error: The two following clocks are not unifiable:
-***	 on d on c on base
-***	 on u on base
-
-
-FAIL: without any option: ./lus2lic {    -o /tmp/clock.out should_work/broken/clock.lus}
-spawn ./lus2lic -ec -o /tmp/clock.ec should_work/broken/clock.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/clock.lus", line 23, col 12 to 17, token 'clock4':
-*** 
-*** clock error: The two following clocks are not unifiable:
-***	 on d on c on base
-***	 on u on base
-
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/clock.ec  should_work/broken/clock.lus}
-spawn ./lus2lic -o /tmp/x.out should_work/broken/x.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 8, col 7 to 7, token 't':
-*** Recursion loop detected: 
-***   const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 8, col 11 to 11, token 'n'
-   > const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 2, col 11 to 11, token 'm'
-   > const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 4, col 11 to 11, token 'x'
-   > const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 6, col 11 to 11, token 't'
-
-FAIL: without any option: ./lus2lic {    -o /tmp/x.out should_work/broken/x.lus}
-spawn ./lus2lic -ec -o /tmp/x.ec should_work/broken/x.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 8, col 7 to 7, token 't':
-*** Recursion loop detected: 
-***   const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 8, col 11 to 11, token 'n'
-   > const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 2, col 11 to 11, token 'm'
-   > const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 4, col 11 to 11, token 'x'
-   > const ref in file "/home/jahier/lus2lic/test/should_work/broken/x.lus", line 6, col 11 to 11, token 't'
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/x.ec  should_work/broken/x.lus}
-spawn ./lus2lic -o /tmp/record.out should_work/broken/record.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/record.lus", line 7, col 29 to 29, token '{':
-*** syntax error
-
-FAIL: without any option: ./lus2lic {    -o /tmp/record.out should_work/broken/record.lus}
-spawn ./lus2lic -ec -o /tmp/record.ec should_work/broken/record.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/record.lus", line 7, col 29 to 29, token '{':
-*** syntax error
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/record.ec  should_work/broken/record.lus}
-spawn ./lus2lic -o /tmp/t.out should_work/broken/t.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/t.lus", line 31, col 7 to 7, token 'A':
-*** bad constant declaration, ident already linked at line:2, col:7 to 7
-
-FAIL: without any option: ./lus2lic {    -o /tmp/t.out should_work/broken/t.lus}
-spawn ./lus2lic -ec -o /tmp/t.ec should_work/broken/t.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/t.lus", line 31, col 7 to 7, token 'A':
-*** bad constant declaration, ident already linked at line:2, col:7 to 7
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/t.ec  should_work/broken/t.lus}
-spawn ./lus2lic -o /tmp/parametric_node4.out should_work/broken/parametric_node4.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/parametric_node4.lus", line 4, col 17 to 17, token 'n':
-*** can't eval type: bad array size, int expected but get real
-
-FAIL: without any option: ./lus2lic {    -o /tmp/parametric_node4.out should_work/broken/parametric_node4.lus}
-spawn ./lus2lic -ec -o /tmp/parametric_node4.ec should_work/broken/parametric_node4.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/parametric_node4.lus", line 4, col 17 to 17, token 'n':
-*** can't eval type: bad array size, int expected but get real
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/parametric_node4.ec  should_work/broken/parametric_node4.lus}
 spawn ./lus2lic -o /tmp/testSystem.out should_work/broken/testSystem.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/testSystem.lus", line 3, col 6 to 9, token 'capt':
 *** unknown package
@@ -1917,28 +1762,8 @@ spawn ./lus2lic -ec -o /tmp/testSystem.ec should_work/broken/testSystem.lus
 *** unknown package
 
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/testSystem.ec  should_work/broken/testSystem.lus}
-spawn ./lus2lic -o /tmp/ts03.out should_work/broken/ts03.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/ts03.lus", line 11, col 23 to 23, token '+':
-*** Bad static argument nature, a constant was expected
-
-FAIL: without any option: ./lus2lic {    -o /tmp/ts03.out should_work/broken/ts03.lus}
-spawn ./lus2lic -ec -o /tmp/ts03.ec should_work/broken/ts03.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/ts03.lus", line 11, col 23 to 23, token '+':
-*** Bad static argument nature, a constant was expected
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/ts03.ec  should_work/broken/ts03.lus}
-spawn ./lus2lic -o /tmp/const2.out should_work/broken/const2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/const2.lus", line 4, col 18 to 22, token 'false':
-*** syntax error
-
-FAIL: without any option: ./lus2lic {    -o /tmp/const2.out should_work/broken/const2.lus}
-spawn ./lus2lic -ec -o /tmp/const2.ec should_work/broken/const2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/const2.lus", line 4, col 18 to 22, token 'false':
-*** syntax error
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/const2.ec  should_work/broken/const2.lus}
 spawn ./lus2lic -o /tmp/car-orig.out should_work/broken/car-orig.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/car-orig.lus", line 94, col 47 to 47, token '=':
+*** Error in file "/home/jahier/lus2lic/test/should_work/broken/car-orig.lus", line 95, col 41 to 41, token '=':
 *** type error: 
 *** type 'bool * int' was provided whereas
 *** type 'any * any' was expected
@@ -1947,7 +1772,7 @@ spawn ./lus2lic -o /tmp/car-orig.out should_work/broken/car-orig.lus
 
 FAIL: without any option: ./lus2lic {    -o /tmp/car-orig.out should_work/broken/car-orig.lus}
 spawn ./lus2lic -ec -o /tmp/car-orig.ec should_work/broken/car-orig.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/car-orig.lus", line 94, col 47 to 47, token '=':
+*** Error in file "/home/jahier/lus2lic/test/should_work/broken/car-orig.lus", line 95, col 41 to 41, token '=':
 *** type error: 
 *** type 'bool * int' was provided whereas
 *** type 'any * any' was expected
@@ -1955,52 +1780,6 @@ spawn ./lus2lic -ec -o /tmp/car-orig.ec should_work/broken/car-orig.lus
 ***    bool and int are not unifiable
 
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/car-orig.ec  should_work/broken/car-orig.lus}
-spawn ./lus2lic -o /tmp/sargs.out should_work/broken/sargs.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/sargs.lus", line 7, col 10 to 10, token '+':
-*** type error: 
-*** type 'real * int' was provided whereas
-*** type 'anynum * anynum' was expected
-*** 
-***    real and int are not unifiable
-
-FAIL: without any option: ./lus2lic {    -o /tmp/sargs.out should_work/broken/sargs.lus}
-spawn ./lus2lic -ec -o /tmp/sargs.ec should_work/broken/sargs.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/sargs.lus", line 7, col 10 to 10, token '+':
-*** type error: 
-*** type 'real * int' was provided whereas
-*** type 'anynum * anynum' was expected
-*** 
-***    real and int are not unifiable
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/sargs.ec  should_work/broken/sargs.lus}
-spawn ./lus2lic -o /tmp/patrick.out should_work/broken/patrick.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/patrick.lus", line 2, col 6 to 12, token 'patrick':
-*** 
-*** "x" (local x:int on base(x,0)) is not defined. 
-*** Defined variables are: 
-  - "s" (output s:int on base(s,0))
-
-
-FAIL: without any option: ./lus2lic {    -o /tmp/patrick.out should_work/broken/patrick.lus}
-spawn ./lus2lic -ec -o /tmp/patrick.ec should_work/broken/patrick.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/patrick.lus", line 2, col 6 to 12, token 'patrick':
-*** 
-*** "x" (local x:int on base(x,0)) is not defined. 
-*** Defined variables are: 
-  - "s" (output s:int on base(s,0))
-
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/patrick.ec  should_work/broken/patrick.lus}
-spawn ./lus2lic -o /tmp/const.out should_work/broken/const.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/const.lus", line 19, col 42 to 43, token 'c4':
-*** bad field declaration, ident already linked at line:19, col:10 to 11
-
-FAIL: without any option: ./lus2lic {    -o /tmp/const.out should_work/broken/const.lus}
-spawn ./lus2lic -ec -o /tmp/const.ec should_work/broken/const.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/const.lus", line 19, col 42 to 43, token 'c4':
-*** bad field declaration, ident already linked at line:19, col:10 to 11
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/const.ec  should_work/broken/const.lus}
 spawn ./lus2lic -o /tmp/condact.out should_work/broken/condact.lus
 
 *** oops: lus2lic internal error
@@ -2027,68 +1806,6 @@ spawn ./lus2lic -ec -o /tmp/cond01.ec should_work/broken/cond01.lus
 
 *** You migth want to sent a bug report to jahier@imag.fr
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/cond01.ec  should_work/broken/cond01.lus}
-spawn ./lus2lic -o /tmp/ts02.out should_work/broken/ts02.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/ts02.lus", line 6, col 10 to 10, token '+':
-*** type error: 
-*** type 'real * int' was provided whereas
-*** type 'anynum * anynum' was expected
-*** 
-***    real and int are not unifiable
-
-FAIL: without any option: ./lus2lic {    -o /tmp/ts02.out should_work/broken/ts02.lus}
-spawn ./lus2lic -ec -o /tmp/ts02.ec should_work/broken/ts02.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/ts02.lus", line 6, col 10 to 10, token '+':
-*** type error: 
-*** type 'real * int' was provided whereas
-*** type 'anynum * anynum' was expected
-*** 
-***    real and int are not unifiable
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/ts02.ec  should_work/broken/ts02.lus}
-spawn ./lus2lic -o /tmp/main.out should_work/broken/main.lus
-PASS: ./lus2lic {    -o /tmp/main.out should_work/broken/main.lus}
-spawn ./lus2lic -ec -o /tmp/main.ec should_work/broken/main.lus
-UNRESOLVED: Time out: ./lus2lic {-ec -o /tmp/main.ec  should_work/broken/main.lus}
-spawn ./lus2lic -o /tmp/m.out should_work/broken/m.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/m.lus", line 3, col 23 to 23, token ',':
-*** syntax error
-
-FAIL: without any option: ./lus2lic {    -o /tmp/m.out should_work/broken/m.lus}
-spawn ./lus2lic -ec -o /tmp/m.ec should_work/broken/m.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/m.lus", line 3, col 23 to 23, token ',':
-*** syntax error
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/m.ec  should_work/broken/m.lus}
-spawn ./lus2lic -o /tmp/bad_id.out should_work/broken/bad_id.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bad_id.lus", line 3, col 6 to 9, token 'toto':
-*** 
-*** Unknown ident: b
-
-FAIL: without any option: ./lus2lic {    -o /tmp/bad_id.out should_work/broken/bad_id.lus}
-spawn ./lus2lic -ec -o /tmp/bad_id.ec should_work/broken/bad_id.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/bad_id.lus", line 3, col 6 to 9, token 'toto':
-*** 
-*** Unknown ident: b
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bad_id.ec  should_work/broken/bad_id.lus}
-spawn ./lus2lic -o /tmp/car.out should_work/broken/car.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/car.lus", line 94, col 47 to 47, token '=':
-*** type error: 
-*** type 'bool * int' was provided whereas
-*** type 'any * any' was expected
-*** 
-***    bool and int are not unifiable
-
-FAIL: without any option: ./lus2lic {    -o /tmp/car.out should_work/broken/car.lus}
-spawn ./lus2lic -ec -o /tmp/car.ec should_work/broken/car.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/car.lus", line 94, col 47 to 47, token '=':
-*** type error: 
-*** type 'bool * int' was provided whereas
-*** type 'any * any' was expected
-*** 
-***    bool and int are not unifiable
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/car.ec  should_work/broken/car.lus}
 spawn ./lus2lic -o /tmp/merge.out should_work/broken/merge.lus
 *** Error in file "/home/jahier/lus2lic/test/should_work/broken/merge.lus", line 7, col 15 to 17, token 'clk':
 *** syntax error
@@ -2099,16 +1816,6 @@ spawn ./lus2lic -ec -o /tmp/merge.ec should_work/broken/merge.lus
 *** syntax error
 
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/merge.ec  should_work/broken/merge.lus}
-spawn ./lus2lic -o /tmp/clock2.out should_work/broken/clock2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/clock2.lus", line 6, col 22 to 22, token 'a':
-*** the type of a clock cannot be int
-
-FAIL: without any option: ./lus2lic {    -o /tmp/clock2.out should_work/broken/clock2.lus}
-spawn ./lus2lic -ec -o /tmp/clock2.ec should_work/broken/clock2.lus
-*** Error in file "/home/jahier/lus2lic/test/should_work/broken/clock2.lus", line 6, col 22 to 22, token 'a':
-*** the type of a clock cannot be int
-
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/clock2.ec  should_work/broken/clock2.lus}
 spawn ./lus2lic -o /tmp/bad_call03.lic should_fail/type/broken/bad_call03.lus
 XPASS: Test bad programs (type): lus2lic {-o /tmp/bad_call03.lic should_fail/type/broken/bad_call03.lus}
 spawn ./lus2lic -o /tmp/ts03.lic should_fail/type/broken/ts03.lus
@@ -2128,13 +1835,13 @@ spawn ./lus2lic -o /tmp/activation1.lic should_fail/semantics/broken/activation1
 XPASS: Test bad programs (semantics): lus2lic {-o /tmp/activation1.lic should_fail/semantics/broken/activation1.lus}
 spawn ./lus2lic -o /tmp/bug.lic should_fail/semantics/broken/bug.lus
 XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/semantics/broken/bug.lus}
-testcase ./lus2lic.tests/progression.exp completed in 7 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
 
 		=== lus2lic Summary ===
 
-# of expected passes		716
-# of unexpected failures	79
+# of expected passes		723
+# of unexpected failures	24
 # of unexpected successes	8
-# of expected failures		26
-# of unresolved testcases	5
-runtest completed at Fri Jan 18 22:57:23 2013
+# of expected failures		31
+# of unresolved testcases	3
+runtest completed at Sat Jan 19 15:00:46 2013
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index ac71833c4b7a04957b779f82181c42e81066df64..936d3fee9634573c8fa0360d78c4e6f1bd207902 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,4 +1,4 @@
-Test Run By jahier on Fri Jan 18 22:54:55 2013
+Test Run By jahier on Sat Jan 19 14:58:11 2013
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -45,6 +45,9 @@ PASS: ec2c {-o /tmp/mouse2.c /tmp/mouse2.ec}
 PASS: ./lus2lic {-o /tmp/dep.lic should_work/dep.lus}
 PASS: ./lus2lic {-ec -o /tmp/dep.ec should_work/dep.lus}
 PASS: ec2c {-o /tmp/dep.c /tmp/dep.ec}
+PASS: ./lus2lic {-o /tmp/ELMU.lic should_work/ELMU.lus}
+PASS: ./lus2lic {-ec -o /tmp/ELMU.ec should_work/ELMU.lus}
+PASS: ec2c {-o /tmp/ELMU.c /tmp/ELMU.ec}
 PASS: ./lus2lic {-o /tmp/testPilote.lic should_work/testPilote.lus}
 PASS: ./lus2lic {-ec -o /tmp/testPilote.ec should_work/testPilote.lus}
 PASS: ec2c {-o /tmp/testPilote.c /tmp/testPilote.ec}
@@ -117,6 +120,9 @@ PASS: ec2c {-o /tmp/t1.c /tmp/t1.ec}
 PASS: ./lus2lic {-o /tmp/nc9.lic should_work/nc9.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc9.ec should_work/nc9.lus}
 PASS: ec2c {-o /tmp/nc9.c /tmp/nc9.ec}
+PASS: ./lus2lic {-o /tmp/packageTableau.lic should_work/packageTableau.lus}
+PASS: ./lus2lic {-ec -o /tmp/packageTableau.ec should_work/packageTableau.lus}
+PASS: ec2c {-o /tmp/packageTableau.c /tmp/packageTableau.ec}
 PASS: ./lus2lic {-o /tmp/car-V2.lic should_work/car-V2.lus}
 PASS: ./lus2lic {-ec -o /tmp/car-V2.ec should_work/car-V2.lus}
 PASS: ec2c {-o /tmp/car-V2.c /tmp/car-V2.ec}
@@ -174,6 +180,9 @@ PASS: ec2c {-o /tmp/matrice2.c /tmp/matrice2.ec}
 PASS: ./lus2lic {-o /tmp/v1.lic should_work/v1.lus}
 PASS: ./lus2lic {-ec -o /tmp/v1.ec should_work/v1.lus}
 PASS: ec2c {-o /tmp/v1.c /tmp/v1.ec}
+PASS: ./lus2lic {-o /tmp/ply02.lic should_work/ply02.lus}
+PASS: ./lus2lic {-ec -o /tmp/ply02.ec should_work/ply02.lus}
+PASS: ec2c {-o /tmp/ply02.c /tmp/ply02.ec}
 PASS: ./lus2lic {-o /tmp/call04.lic should_work/call04.lus}
 PASS: ./lus2lic {-ec -o /tmp/call04.ec should_work/call04.lus}
 PASS: ec2c {-o /tmp/call04.c /tmp/call04.ec}
@@ -300,6 +309,9 @@ PASS: ec2c {-o /tmp/enum.c /tmp/enum.ec}
 PASS: ./lus2lic {-o /tmp/param_node4.lic should_work/param_node4.lus}
 PASS: ./lus2lic {-ec -o /tmp/param_node4.ec should_work/param_node4.lus}
 PASS: ec2c {-o /tmp/param_node4.c /tmp/param_node4.ec}
+PASS: ./lus2lic {-o /tmp/bad_call03.lic should_work/bad_call03.lus}
+PASS: ./lus2lic {-ec -o /tmp/bad_call03.ec should_work/bad_call03.lus}
+PASS: ec2c {-o /tmp/bad_call03.c /tmp/bad_call03.ec}
 PASS: ./lus2lic {-o /tmp/onlyroll.lic should_work/onlyroll.lus}
 PASS: ./lus2lic {-ec -o /tmp/onlyroll.ec should_work/onlyroll.lus}
 PASS: ec2c {-o /tmp/onlyroll.c /tmp/onlyroll.ec}
@@ -698,7 +710,7 @@ PASS: ./lus2lic {-ec -o /tmp/clock1_2ms.ec should_work/clock1_2ms.lus}
 PASS: ec2c {-o /tmp/clock1_2ms.c /tmp/clock1_2ms.ec}
 PASS: ./lus2lic {-o /tmp/decl.lic should_work/decl.lus}
 PASS: ./lus2lic {-ec -o /tmp/decl.ec should_work/decl.lus}
-FAIL: Try ec2c on the result: ec2c {-o /tmp/decl.c /tmp/decl.ec}
+PASS: ec2c {-o /tmp/decl.c /tmp/decl.ec}
 PASS: ./lus2lic {-o /tmp/bred_lv4.lic should_work/bred_lv4.lus}
 PASS: ./lus2lic {-ec -o /tmp/bred_lv4.ec should_work/bred_lv4.lus}
 PASS: ec2c {-o /tmp/bred_lv4.c /tmp/bred_lv4.ec}
@@ -727,6 +739,7 @@ XFAIL: Test bad programs (type): lus2lic {-o /tmp/parametric_node.lic should_fai
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/packages.lic should_fail/type/packages.lus}
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/packages2.lic should_fail/type/packages2.lus}
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/Gyro.lic should_fail/type/Gyro.lus}
+XFAIL: Test bad programs (type): lus2lic {-o /tmp/Gyro-2.lic should_fail/type/Gyro-2.lus}
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/parametric_node4.lic should_fail/type/parametric_node4.lus}
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/const2.lic should_fail/type/const2.lus}
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/ts02.lic should_fail/type/ts02.lus}
@@ -743,98 +756,40 @@ XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/tranche.lic should_fail/s
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/import2.lic should_fail/semantics/import2.lus}
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/bad_call01.lic should_fail/semantics/bad_call01.lus}
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/x.lic should_fail/semantics/x.lus}
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/t.lic should_fail/semantics/t.lus}
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/parametric_node4.lic should_fail/semantics/parametric_node4.lus}
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/const2.lic should_fail/semantics/const2.lus}
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/sargs.lic should_fail/semantics/sargs.lus}
+XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/patrick.lic should_fail/semantics/patrick.lus}
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/const.lic should_fail/semantics/const.lus}
 XFAIL: Test bad programs (semantics): lus2lic {-o /tmp/m.lic should_fail/semantics/m.lus}
 Running ./lus2lic.tests/progression.exp ...
 FAIL: without any option: ./lus2lic {    -o /tmp/when_enum.out should_work/broken/when_enum.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/when_enum.ec  should_work/broken/when_enum.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/parametric_node.out should_work/broken/parametric_node.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/parametric_node.ec  should_work/broken/parametric_node.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/bad_call02.out should_work/broken/bad_call02.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bad_call02.ec  should_work/broken/bad_call02.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/packageTableau.out should_work/broken/packageTableau.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/packageTableau.ec  should_work/broken/packageTableau.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/condact2.out should_work/broken/condact2.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/condact2.ec  should_work/broken/condact2.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/const3.out should_work/broken/const3.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/const3.ec  should_work/broken/const3.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/not_a_constant.out should_work/broken/not_a_constant.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/not_a_constant.ec  should_work/broken/not_a_constant.lus}
-PASS: ./lus2lic {    -o /tmp/ply02.out should_work/broken/ply02.lus}
-PASS: ./lus2lic {-ec -o /tmp/ply02.ec  should_work/broken/ply02.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/bug3.out should_work/broken/bug3.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bug3.ec  should_work/broken/bug3.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/when_not.out should_work/broken/when_not.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/when_not.ec  should_work/broken/when_not.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/old_style_and_pack.out should_work/broken/old_style_and_pack.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/old_style_and_pack.ec  should_work/broken/old_style_and_pack.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/inonout.out should_work/broken/inonout.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/inonout.ec  should_work/broken/inonout.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/pfs.out should_work/broken/pfs.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/pfs.ec  should_work/broken/pfs.lus}
-PASS: ./lus2lic {    -o /tmp/bad_call03.out should_work/broken/bad_call03.lus}
-PASS: ./lus2lic {-ec -o /tmp/bad_call03.ec  should_work/broken/bad_call03.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/packages.out should_work/broken/packages.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/packages.ec  should_work/broken/packages.lus}
 PASS: ./lus2lic {    -o /tmp/when_node.out should_work/broken/when_node.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/when_node.ec  should_work/broken/when_node.lus}
-PASS: ./lus2lic {    -o /tmp/testSilus.out should_work/broken/testSilus.lus}
-UNRESOLVED: Time out: ./lus2lic {-ec -o /tmp/testSilus.ec  should_work/broken/testSilus.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/tranche.out should_work/broken/tranche.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/tranche.ec  should_work/broken/tranche.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/packages2.out should_work/broken/packages2.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/packages2.ec  should_work/broken/packages2.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/Gyro.out should_work/broken/Gyro.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/Gyro.ec  should_work/broken/Gyro.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/import2.out should_work/broken/import2.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/import2.ec  should_work/broken/import2.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/multipar.out should_work/broken/multipar.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/multipar.ec  should_work/broken/multipar.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/bad_call01.out should_work/broken/bad_call01.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bad_call01.ec  should_work/broken/bad_call01.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/clock.out should_work/broken/clock.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/clock.ec  should_work/broken/clock.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/x.out should_work/broken/x.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/x.ec  should_work/broken/x.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/record.out should_work/broken/record.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/record.ec  should_work/broken/record.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/t.out should_work/broken/t.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/t.ec  should_work/broken/t.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/parametric_node4.out should_work/broken/parametric_node4.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/parametric_node4.ec  should_work/broken/parametric_node4.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/testSystem.out should_work/broken/testSystem.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/testSystem.ec  should_work/broken/testSystem.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/ts03.out should_work/broken/ts03.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/ts03.ec  should_work/broken/ts03.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/const2.out should_work/broken/const2.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/const2.ec  should_work/broken/const2.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/car-orig.out should_work/broken/car-orig.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/car-orig.ec  should_work/broken/car-orig.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/sargs.out should_work/broken/sargs.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/sargs.ec  should_work/broken/sargs.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/patrick.out should_work/broken/patrick.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/patrick.ec  should_work/broken/patrick.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/const.out should_work/broken/const.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/const.ec  should_work/broken/const.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/condact.out should_work/broken/condact.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/condact.ec  should_work/broken/condact.lus}
 PASS: ./lus2lic {    -o /tmp/cond01.out should_work/broken/cond01.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/cond01.ec  should_work/broken/cond01.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/ts02.out should_work/broken/ts02.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/ts02.ec  should_work/broken/ts02.lus}
-PASS: ./lus2lic {    -o /tmp/main.out should_work/broken/main.lus}
-UNRESOLVED: Time out: ./lus2lic {-ec -o /tmp/main.ec  should_work/broken/main.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/m.out should_work/broken/m.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/m.ec  should_work/broken/m.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/bad_id.out should_work/broken/bad_id.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bad_id.ec  should_work/broken/bad_id.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/car.out should_work/broken/car.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/car.ec  should_work/broken/car.lus}
 FAIL: without any option: ./lus2lic {    -o /tmp/merge.out should_work/broken/merge.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/merge.ec  should_work/broken/merge.lus}
-FAIL: without any option: ./lus2lic {    -o /tmp/clock2.out should_work/broken/clock2.lus}
-FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/clock2.ec  should_work/broken/clock2.lus}
 XPASS: Test bad programs (type): lus2lic {-o /tmp/bad_call03.lic should_fail/type/broken/bad_call03.lus}
 XFAIL: Test bad programs (type): lus2lic {-o /tmp/ts03.lic should_fail/type/broken/ts03.lus}
 XPASS: Test bad programs (semantics): lus2lic {-o /tmp/piege.lic should_fail/semantics/broken/piege.lus}
@@ -846,8 +801,8 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman
 
 		=== lus2lic Summary ===
 
-# of expected passes		716
-# of unexpected failures	79
+# of expected passes		723
+# of unexpected failures	24
 # of unexpected successes	8
-# of expected failures		26
-# of unresolved testcases	5
+# of expected failures		31
+# of unresolved testcases	3
diff --git a/test/lus2lic.time b/test/lus2lic.time
index e2f5b97f93db0c0248ac1b63cd07f74ff4378eab..18a682b6bab297b8863a2cc790c4ecdb51aedf38 100644
--- a/test/lus2lic.time
+++ b/test/lus2lic.time
@@ -1,2 +1,2 @@
-testcase ./lus2lic.tests/non-reg.exp completed in 141 seconds
-testcase ./lus2lic.tests/progression.exp completed in 7 seconds
+testcase ./lus2lic.tests/non-reg.exp completed in 155 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/should_work/broken/bug3.lus b/test/should_fail/bug3.lus
similarity index 100%
rename from test/should_work/broken/bug3.lus
rename to test/should_fail/bug3.lus
diff --git a/test/should_work/broken/car.lus b/test/should_fail/car.lus
similarity index 65%
rename from test/should_work/broken/car.lus
rename to test/should_fail/car.lus
index b49f39bf7d20e9a50f29a1da15211506900f7e63..d770bdf58cb5b35fe7c79e632328f25f97fbedbd 100644
--- a/test/should_work/broken/car.lus
+++ b/test/should_fail/car.lus
@@ -54,7 +54,7 @@ tel
 
  node CD(f_ir:int) returns(presence:bool)
  let
-   presence = if(f_ir>100) then 1 else 0;
+   presence = (f_ir>100) ;
 
 -- 1 imply there is no obstacle in front
 --0 imply there is a obstacle in front
@@ -71,8 +71,8 @@ tel
   node STARTPOS(l_gap:bool;shaft_l:int) returns(start:int);
 let
 
-start = 0 -> if(shaft_l = 0 and l_gap =1 ) then 0 
-           else if ((pre(l_gap)=0) and (shaft_l<>0)) then shaft_l
+start = 0 -> if(shaft_l = 0 and l_gap  ) then 0 
+           else if (not (pre(l_gap)) and (shaft_l<>0)) then shaft_l
            else pre(start);  
 
 tel
@@ -84,15 +84,15 @@ node PARKING_LENGHT(shaft_l,start_pos:int) returns(park_lenght:int);
 -------------------------------------------
 node required_back1(shaft_l,start_back:int) returns(done_back1:bool);
   let
-       done_back1 = if(shaft_l -start_back = 20) then 1 else 0;
+       done_back1 = (shaft_l -start_back = 20);
   tel
 
 
 ----------------
 node STARTBACK1_POS(gap_found:bool;shaft_l:int) returns(back1:int);
 let
-    back1 = 0 -> if(shaft_l = 0 and gap_found =1 ) then 0
-                 else if(pre(gap_found) =0 and shaft_l<>0 ) then shaft_l 
+    back1 = 0 -> if(shaft_l = 0 and gap_found  ) then 0
+                 else if(not pre(gap_found) and shaft_l<>0 ) then shaft_l 
                  else pre(back1);
 tel
 
@@ -111,31 +111,31 @@ var dir1,vel1,empty_start_pos,mode,start_back_pos,start_rightturn_pos:int; block
 -- mode =6 : parking(bcking2)
 -- mode =7 :stop(buzzer off)
 let  
-   left_gap = 0 -> gap1(LEFT_IR_VALUE);
+   left_gap = false -> gap1(LEFT_IR_VALUE);
    (dir1,vel1) =  whiteline(RIGHT_WHITELINE_VALUE,MIDDLE_WHITELINE_VALUE,LEFT_WHITELINE_VALUE);
-    blocked =  0 ->CD(FRONT_IR_VALUE); 
+    blocked =  false ->CD(FRONT_IR_VALUE); 
 
     empty_start_pos = 0 -> STARTPOS(left_gap,SHAFT_COUNT_LEFT);
-    enough_gap = 0 -> PARKING_LENGHT(SHAFT_COUNT_LEFT, empty_start_pos);
+    enough_gap = false -> PARKING_LENGHT(SHAFT_COUNT_LEFT, empty_start_pos)>42;-- R1:  j'ai mis 42 au pif pour que ca soit typé...
 
-    start_back_pos  = 0 -> if (enough_gap=1) then STARTBACK1_POS(enough_gap,SHAFT_COUNT_LEFT) else 0;
-    enough_back1 = 0 ->  if (enough_gap=1) then required_back1(SHAFT_COUNT_LEFT, start_back_pos) else 0;
+    start_back_pos  = 0 -> if (enough_gap) then STARTBACK1_POS(enough_gap,SHAFT_COUNT_LEFT) else 0;
+    enough_back1 = false ->  if (enough_gap) then required_back1(SHAFT_COUNT_LEFT, start_back_pos) else false;
 
- --   turn_r_Complete = 0 -> if(enough_back = 1) then TURN_RIGHT(REQ_RIGHT_DEGREE) else 0;
-    start_rightturn_pos = 0 -> if ((pre(mode)=4) and (enough_back1 =1)) then SHAFT_COUNT_LEFT else pre(start_rightturn_pos);
-    turn_r_Complete = 0 -> if ((pre(mode)=5) and (SHAFT_COUNT_LEFT - start_rightturn_pos >= 25)) then 1 else 0;  
+   turn_r_Complete = false -> if(enough_back1) then TURN_RIGHT(REQ_RIGHT_DEGREE) else false;
+   start_rightturn_pos = 0 -> if ((pre(mode)=4) and (enough_back1)) then SHAFT_COUNT_LEFT else pre(start_rightturn_pos);
+   --  turn_r_Complete = false ->  ((pre(mode)=5) and (SHAFT_COUNT_LEFT - start_rightturn_pos >= 25));  
 
-   mode = 1 -> if(pre(mode) = 1 and  blocked = 0 and enough_gap =0 ) then 2  --  waiting mode
-                else if(pre(mode) = 1 and blocked = 1 and enough_gap=0) then 1  -- farward  mode
-                else if(pre(mode) = 2 and blocked = 0  and enough_gap=0 ) then 2    -- waiting mode
-                 else if(pre(mode) = 2 and blocked = 1 and enough_gap=0 ) then 1   --  farward mode
-                  else if(pre(mode) =2 and enough_gap=1) then 3 -- parking mode(buzzer on)
-                  else if(pre(mode) = 1 and enough_gap=1) then 3-- parking mode(buzzer on)
+    mode = 1 -> if(pre(mode) = 1 and  not blocked  and not enough_gap ) then 2  --  waiting mode
+                else if(pre(mode) = 1 and blocked  and not enough_gap) then 1  -- farward  mode
+                else if(pre(mode) = 2 and not blocked  and not enough_gap ) then 2    -- waiting mode
+                 else if(pre(mode) = 2 and blocked and not enough_gap ) then 1   --  farward mode
+                  else if(pre(mode) =2 and enough_gap) then 3 -- parking mode(buzzer on)
+                  else if(pre(mode) = 1 and enough_gap) then 3-- parking mode(buzzer on)
                  else if(pre(mode) = 3) then 4 -- first back by small amount  (parking back)
-                 else if(pre(mode)=4 and enough_back1=0 ) then 4-- not enough backing
-                 else if(pre(mode)=4 and enough_back1=1 ) then 5  -- complete backing process, goes to turn right mode
-                 else if(pre(mode) = 5 and turn_r_Complete = 0 ) then 5-- not completed turning
-                 else if(pre(mode) = 5 and turn_r_Complete = 1) then 6 -- after turn right , go to stop mode
+                 else if(pre(mode)=4 and not enough_back1 ) then 4-- not enough backing
+                 else if(pre(mode)=4 and enough_back1 ) then 5  -- complete backing process, goes to turn right mode
+                 else if(pre(mode) = 5 and not turn_r_Complete ) then 5-- not completed turning
+                 else if(pre(mode) = 5 and turn_r_Complete) then 6 -- after turn right , go to stop mode
                   else 6;
                  
                   
@@ -145,7 +145,7 @@ let
    
        
   (DIRECTION,VELOCITY) = if (mode =1 or mode =3) then (dir1,vel1) else if(mode =4) then (2,vel1) else if(mode = 5) then (3,vel1) else  (0,0);
-    BUZZER   =  if(mode = 3 or mode =4 or mode =5) then 1 else 0 ;  -- buzzer on imply that car is parking mode else off
+    BUZZER   =  (mode = 3 or mode =4 or mode =5) ;  -- buzzer on imply that car is parking mode else off
        
          
  
diff --git a/test/should_work/broken/parametric_node4.lus b/test/should_fail/semantics/parametric_node4.lus
similarity index 100%
rename from test/should_work/broken/parametric_node4.lus
rename to test/should_fail/semantics/parametric_node4.lus
diff --git a/test/should_work/broken/patrick.lus b/test/should_fail/semantics/patrick.lus
similarity index 100%
rename from test/should_work/broken/patrick.lus
rename to test/should_fail/semantics/patrick.lus
diff --git a/test/should_work/broken/sargs.lus b/test/should_fail/semantics/sargs.lus
similarity index 100%
rename from test/should_work/broken/sargs.lus
rename to test/should_fail/semantics/sargs.lus
diff --git a/test/should_work/broken/t.lus b/test/should_fail/semantics/t.lus
similarity index 100%
rename from test/should_work/broken/t.lus
rename to test/should_fail/semantics/t.lus
diff --git a/test/should_work/broken/Gyro.lus b/test/should_fail/type/Gyro-2.lus
similarity index 85%
rename from test/should_work/broken/Gyro.lus
rename to test/should_fail/type/Gyro-2.lus
index f3b8ba3948d315b25a78ac5f7316b72da0fdd7e3..4d776211629ad9b63f28e8c1bebf9e7e1caac281 100644
--- a/test/should_work/broken/Gyro.lus
+++ b/test/should_fail/type/Gyro-2.lus
@@ -8,11 +8,11 @@ const DELTA_TO_GOD_ROLL = 2.0;
 const DELTA_TO_GOD_PITCH = 2.0;
 const DELTA_TO_GOD_YAW = 2.0;
 const CROSS_CHANNEL_TOLERANCE = 1.0;
-type Valid_ChannelT={local_failure : bool,local_value : real};
-type Faulty_ChannelT={valuea : real,valueb : real};
+type Valid_ChannelT={local_failure : bool;local_value : real};
+type Faulty_ChannelT={valuea : real;valueb : real};
 type Faulty_Array=Faulty_ChannelT^4^3;
-type CFF_Eltstruct={indx : int,indx_toChange : int,value : Valid_ChannelT};
-type CFF_struct={indx : int,indx_toChange : int,tabToFill : Valid_ChannelT^3};
+type CFF_Eltstruct={indx : int;indx_toChange : int;value : Valid_ChannelT};
+type CFF_struct={indx : int ; indx_toChange : int;tabToFill : Valid_ChannelT^3};
 
 
 node countFalse(accu_in : real; elt_in : Valid_ChannelT) returns (accu_out : real);
@@ -47,11 +47,6 @@ node sum(accu_in : real; elt_in : real) returns (accu_out : real);
 -- Body : 
 let
    accu_out = (accu_in + elt_in);
-tel
-
-
-node masking(channel : Valid_ChannelT) returns (out : real);
--- Assumes : 
 -- true;
 -- Guarantees : 
 -- true;
@@ -103,8 +98,8 @@ tel
 
 
 node Voter(channels : Valid_ChannelT^4; god : real; delta_to_god : real) returns (vote : real)
-%ASSUME:assumeVoter%
-%GUARANTEE:guaranteeVoter%;
+-- #ASSUME:assumeVoter#
+-- #GUARANTEE:guaranteeVoter#;
 -- Assumes : 
 -- true;
 -- Guarantees : 
@@ -126,10 +121,12 @@ node addOneChannelIter(acc_in : CFF_Eltstruct; elt_in : Valid_ChannelT) returns
 -- true;
 -- Body : 
 let
-   acc_out = {indx = (acc_in.indx + 1),
-indx_toChange = acc_in.indx_toChange,
-value = acc_in.value};
-   elt_out = if((acc_in.indx = acc_in.indx_toChange)) then acc_in.value else elt_in;
+   acc_out = CFF_Eltstruct {
+      indx = (acc_in.indx + 1);
+      indx_toChange = acc_in.indx_toChange;
+      value = acc_in.value
+    };
+  elt_out = if((acc_in.indx = acc_in.indx_toChange)) then acc_in.value else elt_in;
 tel
 
 
@@ -141,9 +138,13 @@ node addOneChannel(indx_toChange : int; channeltToAdd : Valid_ChannelT; tabToFil
 -- Body : 
    var acc_out : CFF_Eltstruct; 
 let
-   acc_out,tabToFillAfter = map_red<<addOneChannelIter;3>>({indx = 0,
-indx_toChange = indx_toChange,
-value = channeltToAdd},tabToFill);
+   acc_out,tabToFillAfter = map_red<<addOneChannelIter;3>>(
+                                                           CFF_Eltstruct
+                                                           {indx = 0;
+                                                           indx_toChange = indx_toChange;
+                                                            value = channeltToAdd
+                                                           },
+                                                           tabToFill);
 tel
 
 
@@ -154,8 +155,8 @@ node CFC_iter(structIn : CFF_struct; currentChannel : Valid_ChannelT) returns (s
 -- true;
 -- Body : 
 let
-   structOut = {indx = (structIn.indx + 1),
-indx_toChange = structIn.indx_toChange,
+   structOut = CFF_Eltstruct{indx = (structIn.indx + 1);
+indx_toChange = structIn.indx_toChange;
 tabToFill = if((structIn.indx_toChange = structIn.indx)) then structIn.tabToFill else addOneChannel(structIn.indx, currentChannel, structIn.tabToFill)};
 tel
 
@@ -168,10 +169,10 @@ node ComputeForeignChannels(currentChannelIndx : int; allChannels : Valid_Channe
 -- Body : 
    var acc_out : CFF_struct; localtabToFill : Valid_ChannelT; 
 let
-  localtabToFill = {local_failure = false,
+  localtabToFill = Valid_ChannelT{local_failure = false;
                     local_value = 0.0};
-  acc_out = red<<CFC_iter;4>>({indx = 0,
-                              indx_toChange = currentChannelIndx,
+  acc_out = red<<CFC_iter;4>>(CFF_Eltstruct{indx = 0;
+                              indx_toChange = currentChannelIndx;
                               tabToFill = localtabToFill^3},allChannels);
   foreignChannels = acc_out.tabToFill;
 tel
@@ -272,8 +273,8 @@ node Channel(previousOutChannel : Faulty_ChannelT^4;
              inChannel : Faulty_ChannelT; 
              delta : real; god : real; delta_to_god : real) 
 returns (nextOutChannel : Faulty_ChannelT^4; outChannel : Valid_ChannelT)
-%ASSUME:assumeChannel%
-%GUARANTEE:guaranteeChannel%;
+-- #ASSUME:assumeChannel#
+-- #GUARANTEE:guaranteeChannel#;
 -- Assumes : 
 -- true;
 -- Guarantees : 
@@ -281,9 +282,9 @@ returns (nextOutChannel : Faulty_ChannelT^4; outChannel : Valid_ChannelT)
 -- Body : 
    var localChannel : Valid_ChannelT; 
 let
-   localChannel = {local_failure = (abs((inChannel.valuea - inChannel.valueb)) > delta),
+   localChannel = Valid_ChannelT{local_failure = (abs((inChannel.valuea - inChannel.valueb)) > delta),
                    local_value = if((abs((inChannel.valuea - inChannel.valueb)) > delta)) then 0.0 else ((inChannel.valuea + inChannel.valueb) / 2.0)};
-   outChannel = {local_failure = (localChannel.local_failure or CrossFailDetect(nbInChannel, localChannel, localChannel^4)),
+   outChannel = Valid_ChannelT{local_failure = (localChannel.local_failure or CrossFailDetect(nbInChannel, localChannel, localChannel^4)),
                  local_value = localChannel.local_value};
    nextOutChannel = previousOutChannel;
 tel
@@ -306,8 +307,8 @@ tel
 
 
 node EvaluateAxis(channels : Faulty_ChannelT^4; delta : real; god : real; delta_to_god : real) returns (AxisValue : real)
-%ASSUME:assumeEvaluateAxis%
-%GUARANTEE:guaranteeEvaluateAxis%;
+-- #ASSUME:assumeEvaluateAxis#
+-- #GUARANTEE:guaranteeEvaluateAxis#;
 -- Assumes : 
 -- var : 
 -- NbToFar : int((NbToFar = red<<TooFar;4>>(0,channels,god^4,delta_to_god^4)) and (NbToFar <= 1));
@@ -316,7 +317,7 @@ node EvaluateAxis(channels : Faulty_ChannelT^4; delta : real; god : real; delta_
 -- Body : 
    var resChannels : Faulty_ChannelT^4; dumbChannel : Faulty_ChannelT^4; initChannels : Valid_ChannelT^4; mapredInit : Faulty_ChannelT^4; 
 let
-  initChannels = { local_failure = false,
+  initChannels = Valid_ChannelT{ local_failure = false,
                    local_value = 0.0	}^4	;
 
 
diff --git a/test/should_work/broken/testSilus.lus b/test/should_work/ELMU.lus
similarity index 100%
rename from test/should_work/broken/testSilus.lus
rename to test/should_work/ELMU.lus
diff --git a/test/should_work/broken/bad_call03.lus b/test/should_work/bad_call03.lus
similarity index 100%
rename from test/should_work/broken/bad_call03.lus
rename to test/should_work/bad_call03.lus
diff --git a/test/should_work/broken/bad_call01.lus b/test/should_work/broken/bad_call01.lus
deleted file mode 100644
index 76ad16b14a1f66d125d6228cebb105ac574de02e..0000000000000000000000000000000000000000
--- a/test/should_work/broken/bad_call01.lus
+++ /dev/null
@@ -1,9 +0,0 @@
-
-node toto = titi;
-node titi = toto;
-
-node bad_call01(x,y : bool) returns (z : bool);
-let
-	z = toto(x,y);
-tel
-
diff --git a/test/should_work/broken/bad_call02.lus b/test/should_work/broken/bad_call02.lus
deleted file mode 100644
index b92dab22c9aa92616790f87eac8a2e3697381c08..0000000000000000000000000000000000000000
--- a/test/should_work/broken/bad_call02.lus
+++ /dev/null
@@ -1,7 +0,0 @@
-
--- clock checking of predefined ops
-
-node bad_call02(a:int; c:bool) returns (x : int);
-let
-	x = a when c;
-tel 
diff --git a/test/should_work/broken/bad_id.lus b/test/should_work/broken/bad_id.lus
deleted file mode 100644
index e8a54da15012e54ebd85a396bf7fa014241ff616..0000000000000000000000000000000000000000
--- a/test/should_work/broken/bad_id.lus
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-node toto(c: bool; x: int) returns (y: int when b);
-let
-
-  y = 1+1+(x when c);
-tel
\ No newline at end of file
diff --git a/test/should_work/broken/car-orig.lus b/test/should_work/broken/car-orig.lus
index b49f39bf7d20e9a50f29a1da15211506900f7e63..0edd7b4dc48d05f1f6b7c3fdfd9424c1053db570 100644
--- a/test/should_work/broken/car-orig.lus
+++ b/test/should_work/broken/car-orig.lus
@@ -91,7 +91,7 @@ node required_back1(shaft_l,start_back:int) returns(done_back1:bool);
 ----------------
 node STARTBACK1_POS(gap_found:bool;shaft_l:int) returns(back1:int);
 let
-    back1 = 0 -> if(shaft_l = 0 and gap_found =1 ) then 0
+    back1 = 0 -> if(shaft_l = 0 and gap_found  ) then 0
                  else if(pre(gap_found) =0 and shaft_l<>0 ) then shaft_l 
                  else pre(back1);
 tel
diff --git a/test/should_work/broken/clock.lus b/test/should_work/broken/clock.lus
deleted file mode 100644
index d6ee72f46b2b04aa488947c95d5ccd2b41c79b2e..0000000000000000000000000000000000000000
--- a/test/should_work/broken/clock.lus
+++ /dev/null
@@ -1,24 +0,0 @@
-
--- Entree sur entree:  ok
-extern node clock2(u: bool; v: bool when u) returns (y: bool );
-
--- Sortie sur sortie:  ok
-extern node clock3(u: bool) returns (x: bool; y: bool when x);
-
-
--- Entree sur entree et sortie sur sortie:  ok
-extern node clock4(u: bool; v: bool when u) returns (x: bool; y: bool when x);
-
--- Noeud principal.
-node clock(a: bool; b: bool) returns (c: bool; d: bool when c);
-var
-  z: bool;
-  x: bool when z;
-  y: bool when x;
-let 
-	--  c = clock2(a, (b or b) when a) or (true->a); 
-	--  d = clock2(a, b when a) when c;
-  y = clock2(a, b when a) when x; -- ok
-  (z, x) = clock3(z);-- ok
-  (c, d) = clock4(a, b when d); -- a la place de clock4(a, b when c)
-tel
diff --git a/test/should_work/broken/clock2.lus b/test/should_work/broken/clock2.lus
deleted file mode 100644
index d2c6fabcd3c929604ac548bbf4a99f5e93d56c45..0000000000000000000000000000000000000000
--- a/test/should_work/broken/clock2.lus
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-node clock(a: int; b: int) returns (c: int when a);
-
-let 
-  c = 1 + 1 + b when a;-- should fail since a cannot be of type int!
-
-tel
diff --git a/test/should_work/broken/cond01.lus b/test/should_work/broken/cond01.lus
index f2865250592b9dc3fbb8dacc0cf32c7ae0ad6f12..81e2ba3d6737b9c7ffa5ef2e9e856a9f60a63334 100644
--- a/test/should_work/broken/cond01.lus
+++ b/test/should_work/broken/cond01.lus
@@ -1,4 +1,5 @@
 
+
 node main(c: bool; x,y:int) returns (o: int);
 let
 	o = condact<<+,0>>(c,x,y);
diff --git a/test/should_work/broken/const.lus b/test/should_work/broken/const.lus
deleted file mode 100644
index 6cec3e1ad18289ae392bde960db23e5387ed55a5..0000000000000000000000000000000000000000
--- a/test/should_work/broken/const.lus
+++ /dev/null
@@ -1,46 +0,0 @@
-type 
-  t1; t2; t3;
-  h = int;
-  h1 = int;
-  h2 = int;
-  h3 = int;
-  t11 = t1^2;
-  t22 = t2^2;
-  t33 = int^c4;
-  arr = int^c4;
-  arr2 = int^c4;
-  arr3 = arr;
-  arr4 = arr;
-  t4  = b^4;
-  t41 = t4;
-  t42 = t4;
-  t43 = t41;
-  t5  = {c1: int; c2: bool^5; c3: t3^3; c4: t3^3};
-  t55 = {c4: bool; c2: bool^5; c3: t3^3; c4: t3^3};
-  t56 = t5;
-  t6  = t1^4;
-  t65 = t1^4;
-  t7  = t8; 
-  t8  = t9;
-  t9  = int;
- a   = t4^(2+3);
-  b   = t6;
-  e = t1;
-  e1 = e;
-  couleur = enum{bleu, vert, rouge};
-  flag = {c1: couleur; c2: couleur; c3: couleur};
-  structure = {c1: int; c2: real; c3: bool};
-
-const 
-  c1, c2, c3: int;
-  ext: int;
-  c4: int = 5+2+3+4;
-  c5 = true;
-  c6 = ext;
-  c7 = bleu;
-  c8 = c5 or c5;
-  --c8 = c4*3+5;
-  c9 = c4+3=7;
-  c10 = not(c5 and c9);   
-
-node node1(a: int) returns (a: int);
diff --git a/test/should_work/broken/const2.lus b/test/should_work/broken/const2.lus
deleted file mode 100644
index 203ff878962de71e49286bbb4b2fbb05fc65c4f5..0000000000000000000000000000000000000000
--- a/test/should_work/broken/const2.lus
+++ /dev/null
@@ -1,19 +0,0 @@
-const
--- Ylv6:  const2 Error : at `->' in file `const2.lus' (l.15/c.24)  : not allowed in constant expression.
-
-  e3 = true when false -> true;
-  M = 3;
-  P= 2;
-  N = M*P;
-  O= M;
-  c10=12;
-
-type
-  t1 = int;
-  t2 = t1^M;
-  t3 = t2^N;
-  t4 = t3^O;
-  t5 = t4^P;
-  t6 = t5^c10;
-  t7 = t6^O;
-  t8 = t7^O;
\ No newline at end of file
diff --git a/test/should_work/broken/const3.lus b/test/should_work/broken/const3.lus
deleted file mode 100644
index 5aeffbe53aeffb7efed1d7d88f9bbcf3f7ec66b9..0000000000000000000000000000000000000000
--- a/test/should_work/broken/const3.lus
+++ /dev/null
@@ -1,2 +0,0 @@
-const pi = 3.1416;
-const right = pi/2.;
diff --git a/test/should_work/broken/import2.lus b/test/should_work/broken/import2.lus
deleted file mode 100644
index 7426551952ca4761e15d7124fdf107704005c067..0000000000000000000000000000000000000000
--- a/test/should_work/broken/import2.lus
+++ /dev/null
@@ -1,6 +0,0 @@
-node imp(x,y: int) returns (z,t: int);
-node import2(a: int) returns (d: int);
-var c: int;
-let
-	(c,d) = imp(a,c);
-tel
diff --git a/test/should_work/broken/inonout.lus b/test/should_work/broken/inonout.lus
deleted file mode 100644
index 3f804ea6f8f4b630f512fe62e45d5e6134053d4c..0000000000000000000000000000000000000000
--- a/test/should_work/broken/inonout.lus
+++ /dev/null
@@ -1,3 +0,0 @@
-
--- we cannot have an input clocked on an output
-extern node inOnOut( a : bool; b : bool when c ) returns (c : bool);
diff --git a/test/should_work/broken/inonout.lus.out b/test/should_work/broken/inonout.lus.out
deleted file mode 100644
index 7285bc607ce0bbc5d6d0d5d43895582367bfa5f3..0000000000000000000000000000000000000000
--- a/test/should_work/broken/inonout.lus.out
+++ /dev/null
@@ -1,5 +0,0 @@
--- This file was generated by lus2lic version (no.280.
---	 /home/jahier/dd/lus2lic/src/lus2lic -o
---		should_work/broken/inonout.lus.out should_work/broken/inonout.lus
--- on peouvou the 9/1/2013 at 9:45:27
-
diff --git a/test/should_work/broken/inonout.out b/test/should_work/broken/inonout.out
deleted file mode 100644
index 2beab6ec6d2b2e8abcd2ddbd040b88d1fd63c9f9..0000000000000000000000000000000000000000
--- a/test/should_work/broken/inonout.out
+++ /dev/null
@@ -1,5 +0,0 @@
--- This file was generated by lus2lic version (no.280.
---	 /home/jahier/dd/lus2lic/src/lus2lic -o should_work/broken/inonout.out
---		should_work/broken/inonout.lus
--- on peouvou the 9/1/2013 at 9:59:57
-
diff --git a/test/should_work/broken/m.lus b/test/should_work/broken/m.lus
deleted file mode 100644
index 15a2b90761d62b63d9207b4dae6ad259917d19a9..0000000000000000000000000000000000000000
--- a/test/should_work/broken/m.lus
+++ /dev/null
@@ -1,29 +0,0 @@
-
-type 
-        tube = {in:int, out:int} ;
-        toto = {titi:tube, tutu:bool} ;
-				
-
-node m(i:int) returns (f:int^2);
-var 
-	yo : int^4^5^6;
-let
-	--f = mcmorel(i);
-	f[0] = yo[0][1][2];
-	f[1] = yo[5][4][3];
-	--yo = 42^4^5^6;
-	yo = i^4^5^6 ;
-	yo[5][4][3] = i ;
-         
-tel
-
-node mcmorel(i:int) returns (t:int^2);
-var
-        yo : toto;
-let
-       -- yo.titi = tube{in=i, out=i+1} ;
-       -- yo.tutu = true ;
-        t[0] = [yo.titi.in, yo.titi.out] -> [pre(t[0])+1,pre(t[1])] ;
-tel
-
-				
diff --git a/test/should_work/broken/main.lus b/test/should_work/broken/main.lus
deleted file mode 100644
index 0c1e7e159afa1f17cffd945cb3f1fb7c4e6e322b..0000000000000000000000000000000000000000
--- a/test/should_work/broken/main.lus
+++ /dev/null
@@ -1,42 +0,0 @@
-include "packageTableau.lus"
-
-package util
- provides node igt(i, j: int) returns (res: bool);
- body
-node igt(i, j: int) returns (res: bool);
-let
-  res = i > j;
-tel
-end
---package intArray is packageTableau(int, 10, equals, gt);
---package intArray is packageTableau(int, 10, Lustre::eq, Lustre::igt);
---package intArray is packageTableau(int, 10, =,  Lustre::igt);
-
-package intArray = 
-  packageTableau(
-                 elementType=int, 
-                 size=10, 
-                 _isEqualTo_=Lustre::eq, 
-                 _isGreaterThan_=util::igt);
-
-package main
-  uses intArray;--, intArray2, intArray3;
-  provides node main(a : int^10) returns (tri : int^10; pos_min, min, pos_max, max: int);
-
-body 
-
-node main(a : int^10) returns ( tri : int^10; 
-                               pos_min, 
-                               min, 
-                               pos_max, 
-                               max: int);
-let
-  min = intArray::getMinimumIn_(a);
-  pos_min = intArray::getRank_ofMinimumIn_(a);
-  max = intArray::getMaximumIn_(a);
-  pos_max = intArray::getRank_ofMaximumIn_(a);
-  tri = intArray::sort_(a);
-tel
-
-
-end
diff --git a/test/should_work/broken/not_a_constant.lus b/test/should_work/broken/not_a_constant.lus
deleted file mode 100644
index cf27b264a7d319e959d3d4638c72bdc76bb656de..0000000000000000000000000000000000000000
--- a/test/should_work/broken/not_a_constant.lus
+++ /dev/null
@@ -1,13 +0,0 @@
-model Int 
-  needs 
-     const n:int;
-  provides   
-     type Int;
-     const zero: Int;
-
-body
-type Int = bool^n;
-const zero = false^n; -- n is not a constant
-
-
-
diff --git a/test/should_work/broken/old_style_and_pack.lus b/test/should_work/broken/old_style_and_pack.lus
index 1b070373375b3ea9e1193275050712482ddeb840..89e3734180cbda0c513441231a64363aacc0e61c 100644
--- a/test/should_work/broken/old_style_and_pack.lus
+++ b/test/should_work/broken/old_style_and_pack.lus
@@ -13,7 +13,7 @@ body
   tel
 end
 
-
+-- mixing v6 packages and v4 implicit package
 node main(x:int) returns (y:int);
   let
     y = toto: : titi(x);
diff --git a/test/should_work/broken/packages2.lus b/test/should_work/broken/packages2.lus
deleted file mode 100644
index 1b2a742d457815717fe72fa3f7a8f752eee9b32d..0000000000000000000000000000000000000000
--- a/test/should_work/broken/packages2.lus
+++ /dev/null
@@ -1,15 +0,0 @@
-package stupid
- provides
-  type t1;
-  type t2;
-  node n(x: t1; y: t2) returns (z: t2);
-
-body
-  type t1;
-  type t2;
-  node n(x: int; y: t2) returns (z: t2);
-  let
-    z=y;
-  tel
-
-end
diff --git a/test/should_work/broken/parametric_node.lus b/test/should_work/broken/parametric_node.lus
deleted file mode 100644
index 7d1daacd641a0cdeb5ca07a923ac9d49eedc25e5..0000000000000000000000000000000000000000
--- a/test/should_work/broken/parametric_node.lus
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-node toto_n<<node f(a, b: int) returns (x: int); const n : int>>(a: int) 
-returns (x: int^n);
-var v : int;
-let
-  v = f(a, 1);
-  x =  v ^ n;
-tel
-
-node toto_3 = toto_n<<Lustre::iplus, 3.0>>;
---                                  ^^^^ bad type here...
diff --git a/test/should_work/broken/record.lus b/test/should_work/broken/record.lus
deleted file mode 100644
index 8fb993765f2a3d0a7da86442d42aeb9f64c59abc..0000000000000000000000000000000000000000
--- a/test/should_work/broken/record.lus
+++ /dev/null
@@ -1,12 +0,0 @@
-type 
-
-  struct1 = {a: int; b: real};
-  struct2 = {a: real; b: struct1};
-
-  -- does not work in ocaml either...
-  struct2bis = {a: real; b: {a: real; b:real}};
-
-node record(a: struct2) returns (b: struct);
-	let
-		b = {a = a.x; b = { a = a.b.y; b = a.b.z } };
-	tel
diff --git a/test/should_work/broken/tranche.lus b/test/should_work/broken/tranche.lus
deleted file mode 100644
index 519482500cd13d6a669158f332afaec1c1109484..0000000000000000000000000000000000000000
--- a/test/should_work/broken/tranche.lus
+++ /dev/null
@@ -1,33 +0,0 @@
-type 
-  t = bool^3^4;
-  t2 = bool^7^8^9^10;
-
-const 
- n : t;
- m = n[3][2];
-
- s :  t2;
- o = s[9][8][7][6]; 
-
-node tranche(a: bool^3) returns (res: bool);
-var 
-  x: bool^3;
-  y: real;
-  z: t;
-  x1 :  bool^3^2;
-
-let
-  y = 1.;
-  x[if(1>2) then -2 else 0] = true;
-  x[1..2] = a[1..2];
-  res = true or false; --if x[1] then x[0] else x[2];
-  z[0][0] = true;
-  z[0][1] = true;
-  z[0][2] = true;
-  z[1][0] = true;
-  z[1][1..2] = x[1..2];
-  z[2..3]= x1;
-  x1[0] = x;
-  x1[1] = x;
-  --x[0] = x1[0][0]; 
-tel
diff --git a/test/should_work/broken/ts02.lus b/test/should_work/broken/ts02.lus
deleted file mode 100644
index d13971cc86c9f0f0ae6874973c7eb4626a9f54b0..0000000000000000000000000000000000000000
--- a/test/should_work/broken/ts02.lus
+++ /dev/null
@@ -1,10 +0,0 @@
-
--- KO, mais pas où il faudrait ...
-
-node ma_macro<<const i : int>>(x: int) returns (y: int);
-let
-   y = i + x;
-tel
-
--- n.b. ko à l'utilisation uniquement
-node main = ma_macro<<32.0>>;
diff --git a/test/should_work/broken/ts03.lus b/test/should_work/broken/ts03.lus
deleted file mode 100644
index f5ab1442cc6ef52826f801ef8276102f2bf2c735..0000000000000000000000000000000000000000
--- a/test/should_work/broken/ts03.lus
+++ /dev/null
@@ -1,11 +0,0 @@
-
--- KO 
-
-node ma_macro<<const i : int>>(x: int) returns (y: int);
-let
-   y = i + x;
-tel
-
---*** Bad static argument nature, a constant was expected
-
-node main = ma_macro<<+>>;
diff --git a/test/should_work/broken/x.lus b/test/should_work/broken/x.lus
deleted file mode 100644
index 6775086d9a4bcc8edfc74b8afe73514677da3fe9..0000000000000000000000000000000000000000
--- a/test/should_work/broken/x.lus
+++ /dev/null
@@ -1,10 +0,0 @@
--- there is a loop !!!
-const n = m * 2;
-
-const m = x + y;
-
-const x = t + 1;
-
-const t = n mod 2;
-
-const y = 42;
diff --git a/test/should_work/decl.lus b/test/should_work/decl.lus
index 4d317c658703b0d93bd42fc4e16c8731079a797b..c02fdaf02ee33faaf3df47a24fe56950d0468453 100644
--- a/test/should_work/decl.lus
+++ b/test/should_work/decl.lus
@@ -27,6 +27,10 @@ extern node decl(a1, b1, c1: t1) returns (d1: bool);
 extern node n2(a1, b1, c1: t4; d1: bool) returns (e1: t5);
 extern function f1(a1, b1, c1: couleur) returns (d1: bool^h) ;
 
+node dummy(y: bool) returns(x: bool);
+let
+  x=true;
+tel
 ------------------------------------
 -- quelques erreurs de declaration : 
 ------------------------------------
diff --git a/test/should_work/broken/packageTableau.lus b/test/should_work/packageTableau.lus
similarity index 93%
rename from test/should_work/broken/packageTableau.lus
rename to test/should_work/packageTableau.lus
index 56f6a143dc8ca3e97ad13669a40af63a048d0d51..d51d779793448de7a42f8cac773f2e51c035ca4e 100644
--- a/test/should_work/broken/packageTableau.lus
+++ b/test/should_work/packageTableau.lus
@@ -367,6 +367,46 @@ let
 tel
 
 end
+package util
+ provides node igt(i, j: int) returns (res: bool);
+ body
+node igt(i, j: int) returns (res: bool);
+let
+  res = i > j;
+tel
+end
+--package intArray is packageTableau(int, 10, equals, gt);
+--package intArray is packageTableau(int, 10, Lustre::eq, Lustre::igt);
+--package intArray is packageTableau(int, 10, =,  Lustre::igt);
+
+package intArray = 
+  packageTableau(
+                 elementType=int, 
+                 size=10, 
+                 _isEqualTo_=Lustre::eq, 
+                 _isGreaterThan_=util::igt);
+
+package main
+  uses intArray;--, intArray2, intArray3;
+  provides node main(a : int^10) returns (tri : int^10; pos_min, min, pos_max, max: int);
+
+body 
+
+node main(a : int^10) returns ( tri : int^10; 
+                               pos_min, 
+                               min, 
+                               pos_max, 
+                               max: int);
+let
+  min = intArray::getMinimumIn_(a);
+  pos_min = intArray::getRank_ofMinimumIn_(a);
+  max = intArray::getMaximumIn_(a);
+  pos_max = intArray::getRank_ofMaximumIn_(a);
+  tri = intArray::sort_(a);
+tel
+
+
+end
 
 
 
diff --git a/test/should_work/broken/ply02.lus b/test/should_work/ply02.lus
similarity index 100%
rename from test/should_work/broken/ply02.lus
rename to test/should_work/ply02.lus
diff --git a/todo.org b/todo.org
index 3780f2092554a59b34ba1250513cf1ca61316356..ea649c36aa25711e08162df34f29d4fad5ea59db 100644
--- a/todo.org
+++ b/todo.org
@@ -99,6 +99,53 @@ le message serait meilleur s'il indiquait la ligne 17 où l'erreur est effectué
 file:src/astInstanciateModel.ml
 file:test/should_fail/type/parametric_node.lus
 
+** TODO pb d'instance de package ???
+   - State "TODO"       from ""           [2013-01-19 Sat 09:43]
+ ./lus2lic {    -o /tmp/packages.out should_work/broken/packages.lus}
+spawn ./lus2lic -ec -o /tmp/packages.ec should_work/broken/packages.lus
+ Error in file "/home/jahier/lus2lic/test/should_work/broken/packages.lus", line 22, col 27 to 29, token 'int':
+ syntax error
+
+file:test/should_work/broken/packages.lus::22
+
+** TODO instanciation de noeuds ne marche pas ?
+   - State "TODO"       from ""           [2013-01-19 Sat 10:02]
+./lus2lic -o /tmp/multipar.out should_work/broken/multipar.lus
+file:test/should_work/broken/multipar.lus::20
+ Error in file "/home/jahier/lus2lic/test/should_work/broken/multipar.lus", line 20, col 12 to 12, token 'g':
+ unknown node: g
+ known nodes are: sil, bok, gup, lis
+
+FAIL: without any option: ./lus2lic {    -o /tmp/multipar.out should_work/broken/multipar.lus}
+
+** TODO autoriser les , dans les structures
+   - State "TODO"       from ""           [2013-01-19 Sat 09:56]
+./lus2lic -o /tmp/Gyro.out should_work/broken/Gyro.lus
+*** Error in file "/home/jahier/lus2lic/test/should_work/broken/Gyro.lus", line 11, col 42 to 42, token ',':
+
+** TODO compat pb with array type def
+   - State "TODO"       from ""           [2013-01-19 Sat 09:40]
+file:test/should_work/broken/pfs.lus::43
+./lus2lic -ec -o /tmp/pfs.ec should_work/broken/pfs.lus
+ Error in file "/home/jahier/lus2lic/test/should_work/broken/pfs.lus", line 43, col 22 to 22, token '[':
+ syntax error
+
+** TODO mixing v6 packages and v4 implicit package does not work
+   - State "TODO"       from ""           [2013-01-19 Sat 09:36]
+ ./lus2lic -o /tmp/old_style_and_pack.out should_work/broken/old_style_and_pack.lus
+Error in file "/home/jahier/lus2lic/test/should_work/broken/old_style_and_pack.lus", line 17, col 1 to 4, token 'node':
+
+file:test/should_work/broken/old_style_and_pack.lus
+** TODO Merge is not working
+
+** TODO Condact is not working
+ file:test/should_work/broken/cond01.lus
+   - State "TODO"       from ""           [2013-01-18 Fri 23:18]
+ ./lus2lic -ec -o /tmp/cond01.ec should_work/broken/cond01.lus
+
+ oops: lus2lic internal error
+	File "objlinux/l2lExpandMetaOp.ml", line 310, column 4
+ when compiling lustre program should_work/broken/cond01.lus
 
 * Pas dur
 
@@ -117,6 +164,10 @@ Pascal a introduit un mecanisme qui shunte LicName -> en discuter avec lui.
 
 
 * A faire
+** TODO try to compile the C code resulting from ec2c at some point
+   - State "TODO"       from ""           [2013-01-18 Fri 23:12]
+in particuler, are nodes using extern nodes generated properly?
+
 ** TODO fix unresolved tests (timeout -> performance bugs)
    - State "TODO"       from ""           [2013-01-11 Fri 11:04]