diff --git a/src/astTab.ml b/src/astTab.ml
index 3a1144733c03ceef1b9a7a59c1dadd4d765806c1..69de1778267d2534339657f4f528b73b0d11ce15 100644
--- a/src/astTab.ml
+++ b/src/astTab.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 26/02/2015 (at 11:20) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/07/2015 (at 17:52) by Erwan Jahier> *)
 
 (** 
     Table des infos sources : une couche au dessus de AstV6 pour mieux
@@ -98,7 +98,7 @@ let (pack_body_env: t -> Lv6Id.pack_name -> AstTabSymbol.t) =
     try  
       (Hashtbl.find this.st_pack_mng_tab p).pm_body_stab
     with Not_found -> 
-      print_string ("*** Can not find package '" ^ 
+      print_string ("*** Error: can not find package '" ^ 
 		                 (Lv6Id.pack_name_to_string p) ^ "' in the following packages: ");
       Hashtbl.iter 
 	     (fun pn pm -> print_string ("\n***\t '"^(Lv6Id.pack_name_to_string pn)^ "'"))
diff --git a/src/compile.ml b/src/compile.ml
index 6bd2f14d1140af80bcad595475d6505834e48f47..0b220216c1021c348341ecb6a2335971378ec145 100644
--- a/src/compile.ml
+++ b/src/compile.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 03/03/2015 (at 14:30) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/07/2015 (at 17:53) by Erwan Jahier> *)
 
 open Lxm
 open Lv6errors
@@ -258,7 +258,7 @@ let (get_source_list : Lv6MainArgs.t -> string list -> AstV6.pack_or_model list)
         let name = 
           try Filename.chop_extension (Filename.basename first_file) 
           with _ -> 
-		      print_string ("*** '"^first_file^"': bad file name.\n"); exit 1
+		      print_string ("*** Error: '"^first_file^"' is a bad file name.\n"); exit 1
         in
         let pi = AstV6.give_pack_this_name (Lv6Id.pack_name_of_string name) unpacked_merged in
         let p = NSPack (Lxm.flagit pi (Lxm.dummy name)) in
diff --git a/src/genOcamlGlue.ml b/src/genOcamlGlue.ml
index d9987d744d9613b2a0f07ad632e582e24eafe13f..241b4f28299401d4f96eee49053fc86e47ade351 100644
--- a/src/genOcamlGlue.ml
+++ b/src/genOcamlGlue.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 18/06/2015 (at 15:10) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/07/2015 (at 17:53) by Erwan Jahier> *)
 
 (* generate ocaml glue code that makes it possible to call lus2lic
    from ocaml with the current set of arguments (with Lus2licRun.make).
@@ -11,7 +11,7 @@ let (f: string array -> Lv6MainArgs.t -> unit) =
         let file = List.hd opt.infiles in
         try (Filename.chop_extension (Filename.basename file))^ ".ml"
         with _ -> 
-		    print_string ("*** '"^file^"': bad file name.\n"); exit 2
+		    print_string ("*** Error: '"^file^"'is a bad file name.\n"); exit 2
     in
     let cma_file = (Filename.chop_extension outfile) ^".cma" in
     let remove_me = ["-exec"; "-ocaml";"-o";opt.outfile] in
diff --git a/src/lic2soc.ml b/src/lic2soc.ml
index 82bf69ae5bc9025e7c4b91f875644b240d5e99c4..b3bafe4a9d2ab17a982c60a744ad74573fcae3fb 100644
--- a/src/lic2soc.ml
+++ b/src/lic2soc.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 08/04/2015 (at 14:36) by Erwan Jahier> *)
+(** Time-stamp: <modified the 10/07/2015 (at 14:09) by Erwan Jahier> *)
 
 (* XXX ce module est mal écrit. A reprendre. (R1) *)
  
@@ -50,7 +50,9 @@ let rec lic_to_data_type: (Lic.type_ -> Data.t) =
     Data.Struct(id, List.map trans_field fl)
   )
   | Lic.Array_type_eff(ty,i) -> Data.Array(lic_to_data_type ty,i)
-  | Lic.Abstract_type_eff (id, t) -> Data.Alias(Lv6Id.string_of_long id,lic_to_data_type t)
+  | Lic.Abstract_type_eff (id, t) -> 
+     Data.Alias(Lv6Id.string_of_long id,lic_to_data_type t) 
+
   | Lic.TypeVar Lic.Any -> Data.Alpha 0
   | Lic.TypeVar Lic.AnyNum -> 
     (* For some reasons, L2lRmPoly did not manage to resolve all the overloeding.
@@ -534,8 +536,8 @@ let rec (actions_of_expression_acc: Lxm.t -> Soc.tbl ->
                 in 
                 let (clk:Lic.clock) = On((cc_long, clk_id, clk_type),clkclk) in
                 let ctx, actions, _, mems, deps = acc in
-                let ctx, actions2, inputs, mems2, deps2 = 
-                  actions_of_expression cc_flg.src soc_tbl ctx clk lpl ve 
+                let ctx, actions2, inputs, mems2, deps2 =
+                  actions_of_expression cc_flg.src soc_tbl ctx clk lpl ve
                 in
                 let mems = mems@mems2 in
                 let deps = ActionsDeps.concat deps deps2 in
@@ -703,6 +705,7 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
   fun prog mnk ->
     let rec (process_node : Lic.node_key -> Soc.tbl -> Soc.key * Soc.tbl) =
       fun nk soc_tbl -> 
+        info ("Lic2soc.process_node "^(Lic.string_of_node_key nk)^"\n");
         let node = 
           match LicPrg.find_node prog nk with
             | None  -> 
@@ -796,7 +799,7 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
     (** Produit des soc de noeuds. *)
     and (soc_of_node: LicPrg.t -> Lic.node_exp -> Soc.tbl -> (ctx * Soc.t * Soc.tbl) option) =
       fun licprg node soc_tbl ->
-        info "Lic2soc.soc_of_node...\n";
+        info ("Lic2soc.soc_of_node..."^(Lic.string_of_node_key node.node_key_eff)^"\n");
         let io_list = node.Lic.inlist_eff @ node.Lic.outlist_eff in 
         let io_type = List.map (fun vi -> lic_to_data_type vi.var_type_eff) io_list in
         let soc_key = make_soc_key_of_node_key node.Lic.node_key_eff None io_type in
@@ -816,15 +819,15 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
             in
             (* Construction des dépendances entre les expressions *)
             info "Lic2soc.soc_of_node: computing dependencies...\n";
-            let all_deps = 
-              ActionsDeps.build_data_deps_from_actions lic_to_data_type deps actions 
+            let all_deps =
+              ActionsDeps.build_data_deps_from_actions lic_to_data_type deps actions
             in
             Verbose.exe ~flag:dbg
               (fun () -> print_string (ActionsDeps.to_string all_deps); flush stdout);
             info "SortActions.f: sorting actions...\n";
             let gaol = SortActions.f actions all_deps lxm in
             info "Lic2soc.soc_of_node: actions sorted. \n";
-            let (locals: Soc.var list) = 
+            let (locals: Soc.var list) =
               match node.Lic.loclist_eff with
                 | None -> []
                 | Some l ->  List.map (lic_to_soc_var) l 
@@ -843,6 +846,7 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
         in
         let (soc_of_metaop: Lic.node_key -> Soc.tbl -> (ctx * Soc.t * Soc.tbl) option) =
           fun nk soc_tbl ->
+            info "Lic2soc.soc_of_metaop...\n";
             match snd (fst nk), List.sort compare (snd nk) with
               | ("map"|"red"|"fill"|"fillred"|"fold"),[
                 ConstStaticArgLic(_,Int_const_eff(c)); NodeStaticArgLic(_,iter_node)] 
diff --git a/src/lv6MainArgs.ml b/src/lv6MainArgs.ml
index 2e752082f8fc3fdb8f8be706f80862366b53e969..0b0bee6dfbc2f0ed40d4d41fe6bcaa8f5b75b14c 100644
--- a/src/lv6MainArgs.ml
+++ b/src/lv6MainArgs.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 29/05/2015 (at 17:28) by Erwan Jahier> *)
+(* Time-stamp: <modified the 09/07/2015 (at 16:43) by Erwan Jahier> *)
 (*
 Le manager d'argument adapté de celui de lutin, plus joli
 N.B. solution un peu batarde : les options sont stockées, comme avant, dans Global,
@@ -333,20 +333,20 @@ let mkoptab (opt:t) : unit = (
     mkopt opt
       ["-lv4"; "--lustre-v4"]
       (Arg.Unit (fun _ -> set_v4_options opt))
-      ["Use Lustre V4 syntax (automatically impose '-ei -ee -esa')"]
+      ["generate Lustre V4 code (automatically impose '-ei -ee -esa')"]
     ;
     mkopt opt ~doc_level:Dev
       ["-kcg"; "--generate-scade-lustre"]
       (Arg.Unit (fun _ -> 
-	opt.expand_arrays <- true; (* XXX remove me ! *)
-	global_opt.kcg <- true
+	     opt.expand_arrays <- true; (* XXX remove me ! *)
+	     global_opt.kcg <- true
        ))
-      [" Generate lustre code that is compatible with the lustre of scade"]
+      [" Generate Lustre code that is compatible with the lustre of scade"]
     ;
     mkopt opt
       ["-ec"; "--expanded-code"]
       (Arg.Unit (fun _ -> set_ec_options opt))
-      ["Generate ec (actually just an alias for '-en -lv4 --no-prefix')"]
+      ["Generate ec programs (actually just an alias for '-en -lv4 --no-prefix')"]
     ;
     mkopt opt ~doc_level:Advanced
       ["-np"; "--no-prefix"]
diff --git a/src/main.ml b/src/main.ml
index 1ad41422b8ac59b6a6f0a0355e2a4ffa6bfe19f6..f37d8dfcfb33d854e4af7550a1a3c68b8a2b8656 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/07/2015 (at 17:55) by Erwan Jahier> *)
 
 open Verbose
 open AstV6
@@ -27,7 +27,7 @@ let find_a_node opt =
   let name = 
     try Filename.chop_extension (Filename.basename first_file) 
     with _ -> 
-		print_string ("*** '"^first_file^"': bad file name.\n"); exit 1
+		print_string ("*** Error: '"^first_file^"' is a bad file name.\n"); exit 1
   in
   name
 
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index d234d7be80f02d05902bf1b6def592e814d79fae..9cf28b381e93d310873a5abc303c8d345eb02e19 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,5 +1,5 @@
 ==> lus2lic0.sum <==
-Test Run By jahier on Tue Jul  7 14:33:09 
+Test Run By jahier on Fri Jul 10 14:09:55 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic0 tests ===
@@ -64,7 +64,7 @@ XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/lecte
 XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/s.lus
 
 ==> lus2lic1.sum <==
-Test Run By jahier on Tue Jul  7 14:33:13 
+Test Run By jahier on Fri Jul 10 14:09:53 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic1 tests ===
@@ -99,7 +99,6 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c Gyroscope.lus  {}
 PASS: ./lus2lic  {-2c Gyroscope2.lus -n Gyroscope2}
 PASS: gcc -o Gyroscope2.exec Gyroscope2_Gyroscope2.c Gyroscope2_Gyroscope2_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c Gyroscope2.lus  {}
-PASS: ./lus2lic  {-2c Int.lus -n Int}
 PASS: ./lus2lic  {-2c aa.lus -n aa}
 PASS: gcc -o aa.exec aa_aa.c aa_aa_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c aa.lus  {}
@@ -304,7 +303,6 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c long_et_stupide_nom
 PASS: ./lus2lic  {-2c lucky.lus -n lucky}
 PASS: gcc -o lucky.exec lucky_lucky.c lucky_lucky_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c lucky.lus  {}
-PASS: ./lus2lic  {-2c lustre.lus -n lustre}
 PASS: ./lus2lic  {-2c lustre_test1_ok.lus -n lustre_test1_ok}
 PASS: gcc -o lustre_test1_ok.exec lustre_test1_ok_lustre_test1_ok.c lustre_test1_ok_lustre_test1_ok_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c lustre_test1_ok.lus  {}
@@ -367,8 +365,6 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c mm22.lus  {}
 PASS: ./lus2lic  {-2c mm3.lus -n mm3}
 PASS: gcc -o mm3.exec mm3_mm3.c mm3_mm3_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c mm3.lus  {}
-PASS: ./lus2lic  {-2c model.lus -n model}
-PASS: ./lus2lic  {-2c model2.lus -n model2}
 PASS: ./lus2lic  {-2c modelInst.lus -n modelInst}
 PASS: ./lus2lic  {-2c modes3x2_v2.lus -n modes3x2_v2}
 PASS: gcc -o modes3x2_v2.exec modes3x2_v2_modes3x2_v2.c modes3x2_v2_modes3x2_v2_loop.c 
@@ -400,7 +396,7 @@ PASS: gcc -o multipar.exec multipar_multipar.c multipar_multipar_loop.c
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c multipar.lus  {}
 
 ==> lus2lic2.sum <==
-Test Run By jahier on Tue Jul  7 14:33:15 
+Test Run By jahier on Fri Jul 10 14:10:43 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic2 tests ===
@@ -477,7 +473,7 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c nc9.lus  {}
 PASS: ./lus2lic  {-2c nested.lus -n nested}
 PASS: gcc -o nested.exec nested_nested.c nested_nested_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c nested.lus  {}
-PASS: ./lus2lic  {-2c newpacks.lus -n newpacks}
+FAIL: Generate c code  : ./lus2lic  {-2c newpacks.lus -n newpacks}
 PASS: ./lus2lic  {-2c noAlarm.lus -n noAlarm}
 PASS: gcc -o noAlarm.exec noAlarm_noAlarm.c noAlarm_noAlarm_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c noAlarm.lus  {}
@@ -517,11 +513,11 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c over3.lus  {}
 PASS: ./lus2lic  {-2c overload.lus -n overload}
 PASS: gcc -o overload.exec overload_overload.c overload_overload_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c overload.lus  {}
-PASS: ./lus2lic  {-2c p.lus -n p}
+FAIL: Generate c code  : ./lus2lic  {-2c p.lus -n p}
 PASS: ./lus2lic  {-2c pack1.lus -n pack1}
 PASS: ./lus2lic  {-2c packageTableau.lus -n packageTableau}
 PASS: ./lus2lic  {-2c packed_cst.lus -n packed_cst}
-PASS: ./lus2lic  {-2c packs.lus -n packs}
+FAIL: Generate c code  : ./lus2lic  {-2c packs.lus -n packs}
 PASS: ./lus2lic  {-2c param_node.lus -n param_node}
 PASS: gcc -o param_node.exec param_node_param_node.c param_node_param_node_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c param_node.lus  {}
@@ -537,7 +533,7 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c param_node4.lus  {}
 PASS: ./lus2lic  {-2c param_struct.lus -n param_struct}
 PASS: gcc -o param_struct.exec param_struct_param_struct.c param_struct_param_struct_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c param_struct.lus  {}
-PASS: ./lus2lic  {-2c pilote-1.0.lus -n pilote-1.0}
+FAIL: Generate c code  : ./lus2lic  --expand-nodes {-2c pilote.lus -n pilote}
 PASS: ./lus2lic  {-2c pipeline.lus -n pipeline}
 PASS: gcc -o pipeline.exec pipeline_pipeline.c pipeline_pipeline_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c pipeline.lus  {}
@@ -585,7 +581,7 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c rediter.lus  {}
 PASS: ./lus2lic  {-2c redoptest.lus -n redoptest}
 PASS: gcc -o redoptest.exec redoptest_redoptest.c redoptest_redoptest_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c redoptest.lus  {}
-PASS: ./lus2lic  {-2c remplissage-1.0.lus -n remplissage-1.0}
+PASS: ./lus2lic  {-2c remplissage.lus -n remplissage}
 PASS: ./lus2lic  {-2c rs.lus -n rs}
 PASS: gcc -o rs.exec rs_rs.c rs_rs_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c rs.lus  {}
@@ -636,6 +632,7 @@ PASS: gcc -o testCA.exec testCA_testCA.c testCA_testCA_loop.c
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c testCA.lus  {}
 PASS: ./lus2lic  {-2c testCapt.lus -n testCapt}
 PASS: ./lus2lic  {-2c testPilote.lus -n testPilote}
+FAIL: Generate c code  : ./lus2lic  {-2c test_Int.lus -n test_Int}
 PASS: ./lus2lic  {-2c test_arrow.lus -n test_arrow}
 PASS: gcc -o test_arrow.exec test_arrow_test_arrow.c test_arrow_test_arrow_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_arrow.lus  {}
@@ -656,12 +653,14 @@ PASS: ./lus2lic  {-2c test_enum.lus -n test_enum}
 PASS: gcc -o test_enum.exec test_enum_test_enum.c test_enum_test_enum_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_enum.lus  {}
 PASS: ./lus2lic  {-2c test_extern.lus -n test_extern}
+PASS: ./lus2lic  {-2c test_lustre.lus -n test_lustre}
 PASS: ./lus2lic  {-2c test_map.lus -n test_map}
 PASS: gcc -o test_map.exec test_map_test_map.c test_map_test_map_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_map.lus  {}
 PASS: ./lus2lic  {-2c test_merge.lus -n test_merge}
 PASS: gcc -o test_merge.exec test_merge_test_merge.c test_merge_test_merge_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_merge.lus  {}
+PASS: ./lus2lic  {-2c test_model.lus -n test_model}
 PASS: ./lus2lic  {-2c test_node_expand.lus -n test_node_expand}
 PASS: gcc -o test_node_expand.exec test_node_expand_test_node_expand.c test_node_expand_test_node_expand_loop.c 
 FAIL: Try to compare lus2lic -exec and -2c: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_node_expand.lus  {}
@@ -734,7 +733,7 @@ PASS: gcc -o zzz2.exec zzz2_zzz2.c zzz2_zzz2_loop.c
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c zzz2.lus  {}
 
 ==> lus2lic3.sum <==
-Test Run By jahier on Tue Jul  7 14:33:17 
+Test Run By jahier on Fri Jul 10 14:09:57 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic3 tests ===
@@ -778,9 +777,6 @@ PASS: ./lus2lic {-o Gyroscope2.lic Gyroscope2.lus}
 PASS: ./lus2lic {-ec -o Gyroscope2.ec Gyroscope2.lus}
 PASS: ./myec2c {-o Gyroscope2.c Gyroscope2.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node Gyroscope2.lus {}
-PASS: ./lus2lic {-o Int.lic Int.lus}
-PASS: ./lus2lic {-ec -o Int.ec Int.lus}
-PASS: ./myec2c {-o Int.c Int.ec}
 PASS: ./lus2lic {-o aa.lic aa.lus}
 PASS: ./lus2lic {-ec -o aa.ec aa.lus}
 PASS: ./myec2c {-o aa.c aa.ec}
@@ -972,6 +968,9 @@ PASS: ./lus2lic {-o cst.lic cst.lus}
 PASS: ./lus2lic {-ec -o cst.ec cst.lus}
 PASS: ./myec2c {-o cst.c cst.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node cst.lus {}
+FAIL: without any option: ./lus2lic {-o dadic_x5_a.lic dadic_x5_a.lus}
+FAIL: without any option: ./lus2lic {-o dadic_x5_b.lic dadic_x5_b.lus}
+FAIL: without any option: ./lus2lic {-o dadic_x5_c.lic dadic_x5_c.lus}
 PASS: ./lus2lic {-o deSimone.lic deSimone.lus}
 PASS: ./lus2lic {-ec -o deSimone.ec deSimone.lus}
 PASS: ./myec2c {-o deSimone.c deSimone.ec}
@@ -1090,9 +1089,6 @@ PASS: ./lus2lic {-o lucky.lic lucky.lus}
 PASS: ./lus2lic {-ec -o lucky.ec lucky.lus}
 PASS: ./myec2c {-o lucky.c lucky.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node lucky.lus {}
-PASS: ./lus2lic {-o lustre.lic lustre.lus}
-PASS: ./lus2lic {-ec -o lustre.ec lustre.lus}
-PASS: ./myec2c {-o lustre.c lustre.ec}
 PASS: ./lus2lic {-o lustre_test1_ok.lic lustre_test1_ok.lus}
 PASS: ./lus2lic {-ec -o lustre_test1_ok.ec lustre_test1_ok.lus}
 PASS: ./myec2c {-o lustre_test1_ok.c lustre_test1_ok.ec}
@@ -1178,12 +1174,6 @@ PASS: ./lus2lic {-o mm3.lic mm3.lus}
 PASS: ./lus2lic {-ec -o mm3.ec mm3.lus}
 PASS: ./myec2c {-o mm3.c mm3.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node mm3.lus {}
-PASS: ./lus2lic {-o model.lic model.lus}
-PASS: ./lus2lic {-ec -o model.ec model.lus}
-PASS: ./myec2c {-o model.c model.ec}
-PASS: ./lus2lic {-o model2.lic model2.lus}
-PASS: ./lus2lic {-ec -o model2.ec model2.lus}
-PASS: ./myec2c {-o model2.c model2.ec}
 PASS: ./lus2lic {-o modelInst.lic modelInst.lus}
 PASS: ./lus2lic {-ec -o modelInst.ec modelInst.lus}
 PASS: ./myec2c {-o modelInst.c modelInst.ec}
@@ -1245,7 +1235,7 @@ PASS: ./myec2c {-o multipar.c multipar.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {}
 
 ==> lus2lic4.sum <==
-Test Run By jahier on Tue Jul  7 14:33:11 
+Test Run By jahier on Fri Jul 10 14:09:53 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic4 tests ===
@@ -1434,9 +1424,9 @@ PASS: ./lus2lic {-o param_struct.lic param_struct.lus}
 PASS: ./lus2lic {-ec -o param_struct.ec param_struct.lus}
 PASS: ./myec2c {-o param_struct.c param_struct.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node param_struct.lus {}
-PASS: ./lus2lic {-o pilote-1.0.lic pilote-1.0.lus}
-PASS: ./lus2lic {-ec -o pilote-1.0.ec pilote-1.0.lus}
-PASS: ./myec2c {-o pilote-1.0.c pilote-1.0.ec}
+PASS: ./lus2lic {-o pilote.lic pilote.lus}
+PASS: ./lus2lic {-ec -o pilote.ec pilote.lus}
+PASS: ./myec2c {-o pilote.c pilote.ec}
 PASS: ./lus2lic {-o pipeline.lic pipeline.lus}
 PASS: ./lus2lic {-ec -o pipeline.ec pipeline.lus}
 PASS: ./myec2c {-o pipeline.c pipeline.ec}
@@ -1504,9 +1494,9 @@ PASS: ./lus2lic {-o redoptest.lic redoptest.lus}
 PASS: ./lus2lic {-ec -o redoptest.ec redoptest.lus}
 PASS: ./myec2c {-o redoptest.c redoptest.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node redoptest.lus {}
-PASS: ./lus2lic {-o remplissage-1.0.lic remplissage-1.0.lus}
-PASS: ./lus2lic {-ec -o remplissage-1.0.ec remplissage-1.0.lus}
-PASS: ./myec2c {-o remplissage-1.0.c remplissage-1.0.ec}
+PASS: ./lus2lic {-o remplissage.lic remplissage.lus}
+PASS: ./lus2lic {-ec -o remplissage.ec remplissage.lus}
+PASS: ./myec2c {-o remplissage.c remplissage.ec}
 PASS: ./lus2lic {-o rs.lic rs.lus}
 PASS: ./lus2lic {-ec -o rs.ec rs.lus}
 PASS: ./myec2c {-o rs.c rs.ec}
@@ -1582,6 +1572,9 @@ PASS: ./myec2c {-o testCapt.c testCapt.ec}
 PASS: ./lus2lic {-o testPilote.lic testPilote.lus}
 PASS: ./lus2lic {-ec -o testPilote.ec testPilote.lus}
 PASS: ./myec2c {-o testPilote.c testPilote.ec}
+PASS: ./lus2lic {-o test_Int.lic test_Int.lus}
+PASS: ./lus2lic {-ec -o test_Int.ec test_Int.lus}
+PASS: ./myec2c {-o test_Int.c test_Int.ec}
 PASS: ./lus2lic {-o test_arrow.lic test_arrow.lus}
 PASS: ./lus2lic {-ec -o test_arrow.ec test_arrow.lus}
 PASS: ./myec2c {-o test_arrow.c test_arrow.ec}
@@ -1611,12 +1604,19 @@ PASS: ./myec2c {-o test_enum.c test_enum.ec}
 PASS: ./lus2lic {-o test_extern.lic test_extern.lus}
 PASS: ./lus2lic {-ec -o test_extern.ec test_extern.lus}
 PASS: ./myec2c {-o test_extern.c test_extern.ec}
+PASS: ./lus2lic {-o test_lustre.lic test_lustre.lus}
+PASS: ./lus2lic {-ec -o test_lustre.ec test_lustre.lus}
+PASS: ./myec2c {-o test_lustre.c test_lustre.ec}
 PASS: ./lus2lic {-o test_map.lic test_map.lus}
 PASS: ./lus2lic {-ec -o test_map.ec test_map.lus}
 PASS: ./myec2c {-o test_map.c test_map.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node test_map.lus {}
 PASS: ./lus2lic {-o test_merge.lic test_merge.lus}
 PASS: ./lus2lic {-ec -o test_merge.ec test_merge.lus}
+PASS: ./lus2lic {-o test_model.lic test_model.lus}
+PASS: ./lus2lic {-ec -o test_model.ec test_model.lus}
+PASS: ./myec2c {-o test_model.c test_model.ec}
+FAIL: without any option: ./lus2lic {-o test_model2.lic test_model2.lus}
 PASS: ./lus2lic {-o test_node_expand.lic test_node_expand.lus}
 PASS: ./lus2lic {-ec -o test_node_expand.ec test_node_expand.lus}
 PASS: ./myec2c {-o test_node_expand.c test_node_expand.ec}
@@ -1723,37 +1723,37 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 
 		=== lus2lic1 Summary ===
 
-# of expected passes		319
+# of expected passes		315
 # of unexpected failures	5
 
 ==> lus2lic2.sum <==
 
 		=== lus2lic2 Summary ===
 
-# of expected passes		319
-# of unexpected failures	3
+# of expected passes		317
+# of unexpected failures	8
 
 ==> lus2lic3.sum <==
 
 		=== lus2lic3 Summary ===
 
-# of expected passes		491
-# of unexpected failures	8
+# of expected passes		479
+# of unexpected failures	11
 
 ==> lus2lic4.sum <==
 
 		=== lus2lic4 Summary ===
 
-# of expected passes		453
-# of unexpected failures	4
+# of expected passes		462
+# of unexpected failures	5
 ===============================
-# Total number of failures: 20
-lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds
-lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 21 seconds
-lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 48 seconds
-lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 17 seconds
-lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 51 seconds
+# Total number of failures: 29
+lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 0 seconds
+lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 17 seconds
+lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 50 seconds
+lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 15 seconds
+lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 48 seconds
 * Ref time: 
 * Quick time (-j 4):
-0.04user 0.02system 0:54.36elapsed 0%CPU (0avgtext+0avgdata 5040maxresident)k
-64inputs+0outputs (0major+5554minor)pagefaults 0swaps
+0.05user 0.02system 1:40.88elapsed 0%CPU (0avgtext+0avgdata 5032maxresident)k
+0inputs+0outputs (0major+5545minor)pagefaults 0swaps
diff --git a/test/should_work/Condact.lus b/test/should_work/Condact.lus
index 2d9a362583605badecda7fe5ba111e42f93245f8..f6a4698b51a8131d45457cb9ba971c8a0f4eee3d 100644
--- a/test/should_work/Condact.lus
+++ b/test/should_work/Condact.lus
@@ -9,9 +9,9 @@
 ------------------------------------- 
 
 package Util 
-   provides node carre(e: int) returns (s: int);
+   provides function carre(e: int) returns (s: int);
 body
-  node carre(e: int) returns (s: int);
+  function carre(e: int) returns (s: int);
     let
       s = e*e;
     tel
@@ -39,7 +39,7 @@ end
 
     
 
-package Main
+package Condact
 uses TestCondact;
 provides 
   node Condact(c: bool; d: t2; x: t1) returns (y: t2);
diff --git a/test/should_work/model.lus b/test/should_work/model.lus
deleted file mode 100644
index 1a054a3f4a5e41f0bfd86f04963c9013f5836ef4..0000000000000000000000000000000000000000
--- a/test/should_work/model.lus
+++ /dev/null
@@ -1,28 +0,0 @@
-
-model m
-needs 
-  type elementType;
-  node _isEqualTo_(e1 : elementType; e2 : elementType) returns (x : bool);
-provides
-  node est_egal(e1 : elementType; e2 : elementType) returns (x : bool);
-body
-
-
-node est_egal = _isEqualTo_;
-
-end
-
-
-package u
-provides
-   node egal(i1:int; i2:int) returns (o:bool);
-body
-   node egal(i1:int; i2:int) returns (o:bool);
-  let
-  o = (i1 = i2);
-  tel
-
-end
-
-
-package p = m(elementType=int, _isEqualTo_=u::egal);
diff --git a/test/should_work/modelInst.lus b/test/should_work/modelInst.lus
index 49ee39f5dac21f9519e43922d7d9672e87531253..89c3c4ee75e77febc820fa1be04b19794ab708bf 100644
--- a/test/should_work/modelInst.lus
+++ b/test/should_work/modelInst.lus
@@ -23,16 +23,16 @@ package Pint = m1( t=int );
 package Pbool = m1( t=bool );
 package Preal = m1( t=real );
   
-package main
+package modelInst
   uses Pint;
-  provides node main(i: int; ray : real) returns (oint: int; obool: bool; oreal: real);
+  provides node modelInst(i: int; ray : real) returns (oint: int; obool: bool; oreal: real);
 
   body
 	
   
 const pi = 3.14159;
       
-node main(i: int; ray : real) returns (oint: int; obool: bool; oreal: real);
+node modelInst(i: int; ray : real) returns (oint: int; obool: bool; oreal: real);
 let
   oint = Pint::n(0, i);
   obool = Pbool::n(true, i < 50);
diff --git a/test/should_work/newpacks.lus b/test/should_work/newpacks.lus
index f5f99be4e18fb78b6352e8c9d791af4a0baadf1c..6716f27e4f3e04341e5c6168041257f0d1266494 100644
--- a/test/should_work/newpacks.lus
+++ b/test/should_work/newpacks.lus
@@ -52,10 +52,10 @@ end
 ---------------------------
 -- le package principal
 --------------------------
-package mainPack
+package newpacks
         uses inter;
         provides 
-                node preced(in: inter::selType) returns (out: inter::selType); 
+        node newpacks(in: inter::selType) returns (out: inter::selType); 
 body
   
      type  T = int^N;
@@ -63,7 +63,7 @@ body
            N : int = -2 * inter::n;
  
        -- node preced(in: bool) returns (out: bool);
-        node preced(in: inter::selType) returns (out: inter::selType);
+        node newpacks(in: inter::selType) returns (out: inter::selType);
         	var out2 : inter::selType;
 				let
                 out, out2 =  inter::preced( in );
diff --git a/test/should_work/p.lus b/test/should_work/p.lus
index f321c5de8c09594c485f6f708518a8a60e9d8cb6..180ec113140f75582310a4f37117b68a9cd39249 100644
--- a/test/should_work/p.lus
+++ b/test/should_work/p.lus
@@ -58,10 +58,10 @@ end
 ---------------------------
 -- le package principal
 --------------------------
-package mainPack
+package p
         uses inter;
         provides 
-                node preced(in: inter::selType) returns (out: inter::selType); 
+                node p(in: inter::selType) returns (out: inter::selType); 
 body
   
      type  T = int^N;
@@ -69,7 +69,7 @@ body
            N : int = -2 * inter::n;
  
        -- node preced(in: bool) returns (out: bool);
-        node preced(in: inter::selType) returns (out: inter::selType);
+        node p(in: inter::selType) returns (out: inter::selType);
         	var out2 : inter::selType;
 				let
                 out, out2 =  inter::preced( in );
diff --git a/test/should_work/packageTableau.lus b/test/should_work/packageTableau.lus
index d51d779793448de7a42f8cac773f2e51c035ca4e..2234068874f3260d1ccff13136570ee4bcfd92ec 100644
--- a/test/should_work/packageTableau.lus
+++ b/test/should_work/packageTableau.lus
@@ -1,4 +1,4 @@
-model packageTableau
+model packageTableauModel
 needs 
   type elementType;
   const size : int; -- on doit supposer que size>0;
@@ -375,24 +375,23 @@ 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(
+  packageTableauModel(
                  elementType=int, 
                  size=10, 
                  _isEqualTo_=Lustre::eq, 
                  _isGreaterThan_=util::igt);
 
-package main
+package packageTableau
   uses intArray;--, intArray2, intArray3;
-  provides node main(a : int^10) returns (tri : int^10; pos_min, min, pos_max, max: int);
+  provides node packageTableau(a : int^10) returns (tri : int^10; pos_min, min, pos_max, max: int);
 
 body 
 
-node main(a : int^10) returns ( tri : int^10; 
+node packageTableau(a : int^10) returns ( tri : int^10; 
                                pos_min, 
                                min, 
                                pos_max, 
diff --git a/test/should_work/packed_cst.lus b/test/should_work/packed_cst.lus
index 8bb5206529ef90dee30f1e082caed9743229b7e2..18e59da0cbf90f52628f0ebc335294f34bb6930f 100644
--- a/test/should_work/packed_cst.lus
+++ b/test/should_work/packed_cst.lus
@@ -1,15 +1,15 @@
 
-package cst
+package packed_cst
 
 provides
-  node cst(x:int) returns (y:int);
+  function packed_cst(x:int) returns (y:int);
 
 body
   const i : int =1 ;
   const j : int =1 ;
   const k : int =1 ;
 
-  node cst(x:int) returns (y:int);
+  function packed_cst(x:int) returns (y:int);
   var z,t: int;
   let
     z = i+j;
diff --git a/test/should_work/packs.lus b/test/should_work/packs.lus
index 411a8fe1aa8e71ce6792540ee8cc180b1a25352d..077eda798dfc956895f3dc5f8693d4f50f9c7439 100644
--- a/test/should_work/packs.lus
+++ b/test/should_work/packs.lus
@@ -48,8 +48,11 @@ end
 -- le package principal
 --------------------------
 
-package mainPack
+package packs
 uses inter;
+provides
+	node packs(in: selType) returns (out: selType);
+
 body
 
 	type couleurs = enum { bleu, rose, jaune };
@@ -59,7 +62,7 @@ body
 		N : int = -2 * inter::n;
  
 	-- node preced(in: bool) returns (out: bool);
-	node preced(in: selType) returns (out: selType);
+	node packs(in: selType) returns (out: selType);
 		var out2 : inter::selType;
 		let
 			out, out2 =  inter::preced( in );
diff --git a/test/should_work/pilote-1.0.lus b/test/should_work/pilote.lus
similarity index 99%
rename from test/should_work/pilote-1.0.lus
rename to test/should_work/pilote.lus
index 1a81d5caf3ddfa0a86dc9629495479e245978686..6e4665790566c713bcd2888f8abe4a6532d4e274 100644
--- a/test/should_work/pilote-1.0.lus
+++ b/test/should_work/pilote.lus
@@ -1,3 +1,4 @@
+-- nonreg: --expand-nodes
 -- 22 jan 2009 
 package util
 
@@ -268,11 +269,12 @@ tel
 
 
 end
-package pilote
+
+package  pilote
 uses util;
 
 provides 
-node system(in : bool) returns (v : bool;
+node pilote(in : bool) returns (v : bool;
          dataBoiteCP_IN, dataBoiteCP_OUT : int;
          piloteData, readData : int;
          getMem : bool;
@@ -288,7 +290,7 @@ node system(in : bool) returns (v : bool;
 
 body
 
-node system (in : bool) 
+node pilote (in : bool) 
 returns (v : bool;
          dataBoiteCP_IN, dataBoiteCP_OUT : int;
          piloteData, readData : int;
@@ -337,7 +339,7 @@ let
 
   (semMemTakeP, putMem, dataBoiteCP_GET, piloteData, localErasedDataFromPilote, 
    erasePiloteEvent, copyPiloteEvent, localCopiedDataFromPilote) 
-       = pilote(Hpilote, semMemAutP, dataBoiteCP_OUT);
+       = pilote2(Hpilote, semMemAutP, dataBoiteCP_OUT);
 
   (semMemGive, readData, localErasedDataFromMem, localCopiedDataFromMem, 
          eraseMemEvent, copyMemEvent) = mem(getMem, putMem, piloteData);
@@ -591,7 +593,7 @@ let
 tel
 
 
-node pilote(Hpilote, semAutP : bool; 
+node pilote2(Hpilote, semAutP : bool; 
             dataBoiteCP : int) 
 returns (semMemTakeP, putMemP, dataGET : bool; 
          piloteData : int;
diff --git a/test/should_work/polymorphic_pack.lus b/test/should_work/polymorphic_pack.lus
index a4c1d24da0d57790aac51779457fbacdf36a0795..8efbf02c3c58db18d4f9e49c032f61c2d57b5d1a 100644
--- a/test/should_work/polymorphic_pack.lus
+++ b/test/should_work/polymorphic_pack.lus
@@ -4,14 +4,14 @@ needs
    type t;
    node n(x,y:t) returns (z:t);
 provides 
-   node map2(x, y: t^size) returns (z:t^size);
+   node polymorphic_pack(x, y: t^size) returns (z:t^size);
 body
-   node map2(x, y: t^size) returns (z:t^size);
+   node polymorphic_pack(x, y: t^size) returns (z:t^size);
    let
      z = map<<n, size>>(x, y);
    tel
 end
 
-package p = iter(size=3, t=int, n=+);
+package polymorphic_pack = iter(size=3, t=int, n=Lustre::iplus);
 
  
\ No newline at end of file
diff --git a/test/should_work/remplissage-1.0.lus b/test/should_work/remplissage.lus
similarity index 97%
rename from test/should_work/remplissage-1.0.lus
rename to test/should_work/remplissage.lus
index 9b41bfdcbdd0842b923ae5e8e8bd03b8f45026a0..483cbbb95670d68b2b7076acbb6e80d8794aba37 100644
--- a/test/should_work/remplissage-1.0.lus
+++ b/test/should_work/remplissage.lus
@@ -1,8 +1,8 @@
-package util
+package remplissage
 
 provides
 
-node observer(dataBoiteCP_IN, 
+node remplissage(dataBoiteCP_IN, 
               localDataFromRead, 
               localErasedDataFromBoiteCP, 
               localCopyedDataFromBoiteCP, 
@@ -25,7 +25,7 @@ body
 
 type accChangeTab = {numEvent : int; cpt : int; indice : int};
 
-node change_tab2(tabIn : int^10;
+function change_tab2(tabIn : int^10;
                 indiceIn : int;
                 num_event : int)
 returns (tabOut : int^10);
@@ -37,7 +37,7 @@ tel
 
 
 
-node change_elt2(accIn : accChangeTab; 
+function change_elt2(accIn : accChangeTab; 
                  --num_event : int; 
                  --cptOut : int; 
                  --indiceIn : int; 
@@ -71,7 +71,7 @@ type accObserver = {nbCopy : int^10;
                     indice : int};
 
 
-node observer(dataBoiteCP_IN, 
+node remplissage(dataBoiteCP_IN, 
               localDataFromRead, 
               localErasedDataFromBoiteCP, 
               localCopyedDataFromBoiteCP, 
@@ -189,7 +189,7 @@ let
 tel
 
 
-node Niter(accIn : accObserver;
+function Niter(accIn : accObserver;
            --{tabIn : int^10; 
            -- indice : int;
            --}; 
diff --git a/test/should_work/testBoite.lus b/test/should_work/testBoite.lus
index 38feb2c7674433b261f31f986dc659938b1ee6e0..beb50ee170002625f25dcb2f1dff30570a499b1b 100644
--- a/test/should_work/testBoite.lus
+++ b/test/should_work/testBoite.lus
@@ -1,10 +1,10 @@
-package boite
+package testBoite
 
 
 
 provides
 
-node boite(dataGET, 
+node testBoite(dataGET, 
            dataPUT : bool; 
            dataIN : int when dataPUT)
 --returns (dataOUT : int when dataGET);
@@ -19,7 +19,7 @@ returns (--localData_clock : bool;
 
 body
 
-node boite(dataGET, 
+node testBoite(dataGET, 
            dataPUT : bool; 
            dataIN : int when dataPUT)
 returns (dataOUT : int when dataGET);
diff --git a/test/should_work/Int.lus b/test/should_work/test_Int.lus
similarity index 61%
rename from test/should_work/Int.lus
rename to test/should_work/test_Int.lus
index fdc9b4dc49bf546ecc59c39fcbac3b55d0a05724..1095a9b5e988bfa837451a36c1a2ded95fe2e17e 100644
--- a/test/should_work/Int.lus
+++ b/test/should_work/test_Int.lus
@@ -1,18 +1,18 @@
-model Int 
+model IntM 
  needs 
    const n:int;
 
  provides
-   type Int;
-   const zero: Int ;
-   function incr (x: Int) returns (incr: Int);
-   function add (x,y: Int) returns (sum: Int);
+   type t;
+   const zero: t ;
+   function incr (x: t) returns (incr: t);
+   function add (x,y: t) returns (sum: t);
 --   function fulladd(ci, x, y: bool) returns (s, co: bool);
 
  body
-   type Int = bool^n;
+   type t = bool^n;
    const zero = false^n;
-   function incr (x: Int) returns (incr: Int);
+   function incr (x: t) returns (incr: t);
       var co: bool;
      let
        (co, incr) = fillred<<fulladd,n>>(true,x,zero);
@@ -24,7 +24,7 @@ model Int
 	co = (ci and x) or (x and y) or (y and ci);
      tel
 
-   function add (x,y: Int) returns (sum: Int);
+   function add (x,y: t) returns (sum: t);
      var co: bool;
      let
 	(co, sum) =  fillred<<fulladd,n>>(false,x,y);
@@ -36,14 +36,13 @@ end
 --  instances
 -----------------------
 
-package Int8 is Int(n=8);
+package Int8 is IntM(n=8);
 
-package mainPack
-uses Int8;
+package test_Int uses Int8;
 provides
- node Nat(evt, reset: bool) returns (nat: Int8::Int);
+ node test_Int(evt, reset: bool) returns (nat: Int8::t);
 body
- node Nat(evt, reset: bool) returns (nat: Int8::Int);
+ node test_Int(evt, reset: bool) returns (nat: Int8::t);
  let
   nat =  if true -> reset then Int8::zero else 
           if evt then Int8::incr(pre(nat))
diff --git a/test/should_work/test_clash.lus b/test/should_work/test_clash.lus
index e66094afccd426d7294b2e74007142b92aea5142..7a1ac072f79c22e013fb787dbc5eb7f77de937d9 100644
--- a/test/should_work/test_clash.lus
+++ b/test/should_work/test_clash.lus
@@ -1,22 +1,22 @@
 -- 
 
 
-package test
+package test_clash
 provides 
   const c : bool;
   type t ;
-  node toto(x: bool) returns (y: bool);
+  function test_clash(x: bool) returns (y: bool);
 body
 
 const c = true;
 type t = bool;
 
-  node toto(x: bool) returns (y: bool);
+  function test_clash(x: bool) returns (y: bool);
   let
   y = tutu(x) and c;
   tel 
 
-  node tutu(x: t) returns (y: t);
+  function tutu(x: t) returns (y: t);
   let
   y = x;
   tel 
diff --git a/test/should_work/lustre.lus b/test/should_work/test_lustre.lus
similarity index 91%
rename from test/should_work/lustre.lus
rename to test/should_work/test_lustre.lus
index 7ba864038f67b5245e8d7e9dda0770a233615c79..e3ec7bec00703ca3cb37043c65b1a56ba3f6c819 100644
--- a/test/should_work/lustre.lus
+++ b/test/should_work/test_lustre.lus
@@ -51,3 +51,11 @@ body
 
 end
 
+package test_lustre
+  provides 
+   function test_lustre(x: real) returns (z: real); 
+body        
+   function test_lustre(x: real) returns (z: real); let z = Lustre::Ruminus(x); tel
+
+end
+
diff --git a/test/should_work/test_model.lus b/test/should_work/test_model.lus
new file mode 100644
index 0000000000000000000000000000000000000000..3cad6f1eef97f8e539a9fef979c2864cb0f0c0ed
--- /dev/null
+++ b/test/should_work/test_model.lus
@@ -0,0 +1,36 @@
+
+model m
+needs 
+  type elementType;
+  function _isEqualTo_(e1 : elementType; e2 : elementType) returns (x : bool);
+provides
+  function est_egal(e1 : elementType; e2 : elementType) returns (x : bool);
+body
+
+
+function est_egal = _isEqualTo_;
+
+end
+
+
+package u
+provides
+   function egal(i1:int; i2:int) returns (o:bool);
+body
+   function egal(i1:int; i2:int) returns (o:bool);
+  let
+  o = (i1 = i2);
+  tel
+
+end
+
+
+package p = m(elementType=int, _isEqualTo_=u::egal);
+
+package test_model
+provides
+   function test_model (e1,e2:int) returns (x:bool);
+  body
+   function test_model (e1,e2:int) returns (x:bool) = p::est_egal;
+
+  end
diff --git a/test/should_work/model2.lus b/test/should_work/test_model2.lus
similarity index 75%
rename from test/should_work/model2.lus
rename to test/should_work/test_model2.lus
index 82350efadc972c1e11bcfe4fb741816f698f3e36..27d6f71cd4093fb671d3a5ffd5ff7f7f800fa957 100644
--- a/test/should_work/model2.lus
+++ b/test/should_work/test_model2.lus
@@ -28,4 +28,12 @@ end
 
  package p = m(elementType=int, elementTypeBis=int, _isEqualTo_ = u::egal);
 
-package p2 = m(elementType=int, elementTypeBis=int, _isEqualTo_= Lustre::eq);
\ No newline at end of file
+package p2 = m(elementType=int, elementTypeBis=int, _isEqualTo_= Lustre::eq);
+
+package test_model2
+provides
+   function test_model2 (e1,e2:int) returns (x:bool);
+  body
+   function test_model2 (e1,e2:int) returns (x:bool) = p2::est_egal;
+
+  end
diff --git a/test/site.exp b/test/site.exp
index 7d6d8fa954b8f0828ec637be5940a6c5d6955038..8b8421c403cd541df53b5aa034ef92d2c2c83d12 100644
--- a/test/site.exp
+++ b/test/site.exp
@@ -1,4 +1,4 @@
-# Time-stamp: <modified the 01/07/2015 (at 14:24) by Erwan Jahier> 
+# Time-stamp: <modified the 08/07/2015 (at 17:52) by Erwan Jahier> 
 # 
 # (nonreg-)test harness main file
 
@@ -24,7 +24,7 @@ proc should_work { test_name command_line args } {
         send_user "starting $command_line\n"
     }
     # Running the program.
-    eval spawn $command_line {*}$args
+    eval spawn $command_line {*}$args  
     set pid [exp_pid]
     puts "PID: $pid ($command_line $args)"
     expect {
diff --git a/utils/lustre.el b/utils/lustre.el
index 71460910104779436fdd950805be85694fc735be..8692a03736816575ce6de5962da0d1e67a7624e8 100644
--- a/utils/lustre.el
+++ b/utils/lustre.el
@@ -217,7 +217,7 @@
 	     (ids-in-btw (pref suf) (concat pref sep (ids-before suf))))
       `(
 					; identifiers
-	(,(ids-in-btw "\\([(;^]\\|\\<var\\|const\\>\\)" ":")	. ,var)
+	(,(ids-in-btw "\\([(;^]\\|\\<var\\|const\\|package\\|model\\|provides\\|body\\|uses\\>\\)" ":")	. ,var)
 	;; NB: needed in some cases, such as long lists of formal arguments...:
 	(,(ids-before ":")					. ,var)
 
@@ -227,6 +227,7 @@
 		  (regexp-opt '("/" "*" "#" "=" "+" "-" "*" "<" ">")) "\\|"
 		  (regexp-opt '("node" "const" "function" "include" "let"
 				"returns" "tel" "type" "var" "if" "with"
+            "package" "model" "body" "uses" "provides"
 				"then" "else" "and" "or" "xor" "assert" "with" "struct"
 				"pre" "not" "when" 
 				"current") 'words))		0 ,kw t)