diff --git a/generator/js_of_ast.ml b/generator/js_of_ast.ml
index 10d52f864e22750960c19c3c2027060c79407692..b8eeaf097f009d9c57025ef04eff9e742b0041e9 100644
--- a/generator/js_of_ast.ml
+++ b/generator/js_of_ast.ml
@@ -231,9 +231,8 @@ and not_already_created mod_name =
  * Main part
  *)
 
-let rec js_of_structure ?(mod_gen=[]) old_env s =
-  let new_env = s.str_final_env in
-  show_list_f (fun strct -> js_of_structure_item ~mod_gen new_env strct) "@,@," s.str_items
+let rec js_of_structure ?(mod_gen=[]) s =
+  show_list_f (fun strct -> js_of_structure_item ~mod_gen strct) "@,@," s.str_items
 
 and parse_modules ?(mod_gen=[]) = function
   | [] -> []
@@ -245,17 +244,16 @@ and parse_modules ?(mod_gen=[]) = function
       | None -> failwith ("Could not read and typecheck " ^ inputfile)
       | Some (parsetree1, (typedtree1, _)) -> parsetree1, typedtree1
       in
-   let pre = js_of_structure ~mod_gen:(name :: mod_gen) Env.empty typedtree1 in
+   let pre = js_of_structure ~mod_gen:(name :: mod_gen) typedtree1 in
    Printf.sprintf "%s = {\n%s\n}" name pre :: parse_modules ~mod_gen xs
 
 and show_value_binding ?(mod_gen=[]) vb =
   js_of_let_pattern ~mod_gen vb.vb_pat vb.vb_expr
 
-and js_of_structure_item ?(mod_gen=[]) old_env s =
-  let new_env = s.str_env in
+and js_of_structure_item ?(mod_gen=[]) s =
   let loc = s.str_loc in
   match s.str_desc with
-  | Tstr_eval (e, _)     -> Printf.sprintf "%s" @@ js_of_expression ~mod_gen new_env e
+  | Tstr_eval (e, _)     -> Printf.sprintf "%s" @@ js_of_expression ~mod_gen e
   | Tstr_value (_, vb_l) -> String.concat "@,@," @@ List.map (fun vb -> show_value_binding ~mod_gen vb) @@ vb_l
   | Tstr_type tl -> "" (* Types have no representation in JS, but the OCaml type checker uses them *)
   | Tstr_open       od -> 
@@ -286,9 +284,9 @@ and js_of_structure_item ?(mod_gen=[]) old_env s =
   | Tstr_include    _  -> out_of_scope loc "includes"
   | Tstr_attribute  attrs -> out_of_scope loc "attributes"
 
-and js_of_branch ?(mod_gen=[]) old_env b obj =
+and js_of_branch ?(mod_gen=[]) b obj =
   let spat, binders = js_of_pattern ~mod_gen b.c_lhs obj in
-  let se = js_of_expression ~mod_gen old_env b.c_rhs in
+  let se = js_of_expression ~mod_gen b.c_rhs in
   if binders = "" then ppf_branch spat binders se
   else
     let typ = match List.rev (Str.split (Str.regexp " ") spat) with
@@ -296,15 +294,14 @@ and js_of_branch ?(mod_gen=[]) old_env b obj =
       | x :: xs -> String.sub x 0 (String.length x)
     in L.log_line (ppf_branch spat binders se) (L.Add (binders, typ))
     
-and js_of_expression ?(mod_gen=[]) old_env e =
+and js_of_expression ?(mod_gen=[]) e =
   let locn = e.exp_loc in
-  let new_env = e.exp_env in
   match e.exp_desc with
   | Texp_ident (_, loc,  _)           -> js_of_longident loc
   | Texp_constant c                   -> js_of_constant c
   | Texp_let   (_, vb_l, e)           ->
     let sd = String.concat lin1 @@ List.map (fun vb -> show_value_binding ~mod_gen vb) @@ vb_l in
-    let se = js_of_expression ~mod_gen new_env e
+    let se = js_of_expression ~mod_gen e
     in ppf_let_in sd se
   | Texp_function (_, c :: [], Total) ->
     let rec explore pats e = match e.exp_desc with
@@ -312,25 +309,25 @@ and js_of_expression ?(mod_gen=[]) old_env e =
         let p, e = c.c_lhs, c.c_rhs
         in explore (p :: pats) e
       | _                                 ->
-        String.concat ", " @@ List.map ident_of_pat @@ List.rev @@ pats, js_of_expression ~mod_gen new_env e in
+        String.concat ", " @@ List.map ident_of_pat @@ List.rev @@ pats, js_of_expression ~mod_gen e in
     let args, body = explore [c.c_lhs] c.c_rhs
     in ppf_function args body
   | Texp_apply (f, exp_l)                 ->
      let sl' = exp_l
                |> List.map (fun (_, eo, _) -> match eo with None -> out_of_scope locn "optional apply arguments" | Some ei -> ei) in
      let sl = exp_l
-              |> List.map (fun (_, eo, _) -> match eo with None -> out_of_scope locn "optional apply arguments" | Some ei -> js_of_expression ~mod_gen new_env ei) in
-    let se = js_of_expression ~mod_gen new_env f in
+              |> List.map (fun (_, eo, _) -> match eo with None -> out_of_scope locn "optional apply arguments" | Some ei -> js_of_expression ~mod_gen ei) in
+    let se = js_of_expression ~mod_gen f in
     if is_infix f sl' && List.length exp_l = 2
     then ppf_apply_infix se (List.hd sl) (List.hd (List.tl sl))
     else ppf_apply se (String.concat ", " sl)
 
   | Texp_match (exp, l, [], Total) ->
-     let se = js_of_expression ~mod_gen new_env exp in
-     let sb = String.concat "@," (List.map (fun x -> js_of_branch ~mod_gen old_env x se) l) in
+     let se = js_of_expression ~mod_gen exp in
+     let sb = String.concat "@," (List.map (fun x -> js_of_branch ~mod_gen x se) l) in
      ppf_match se sb
 
-  | Texp_tuple (tl) -> ppf_tuple @@ show_list_f (fun exp -> js_of_expression ~mod_gen new_env exp) ", " tl
+  | Texp_tuple (tl) -> ppf_tuple @@ show_list_f (fun exp -> js_of_expression ~mod_gen exp) ", " tl
 
   | Texp_construct (loc, cd, el) ->
     let name = cd.cstr_name in
@@ -339,20 +336,20 @@ and js_of_expression ?(mod_gen=[]) old_env e =
       else ppf_single_cstrs name
     else (* Constructor has parameters *)
       let fields = extract_attrs cd.cstr_attributes in
-      let expr_strs = List.map (fun exp -> js_of_expression ~mod_gen new_env exp) el in
+      let expr_strs = List.map (fun exp -> js_of_expression ~mod_gen exp) el in
       let expand_constructor_list = List.map2 ppf_cstr in
       let expanded_constructors = expand_constructor_list fields expr_strs in
       ppf_multiple_cstrs name (show_list ", " expanded_constructors)
 
-  | Texp_array      (exp_l)           -> ppf_array @@ show_list_f (fun exp -> js_of_expression ~mod_gen new_env exp) ", " exp_l
-  | Texp_ifthenelse (e1, e2, None)    -> ppf_ifthen (js_of_expression ~mod_gen new_env e1) (js_of_expression ~mod_gen new_env e2)
-  | Texp_ifthenelse (e1, e2, Some e3) -> ppf_ifthenelse (js_of_expression ~mod_gen new_env e1) (js_of_expression ~mod_gen new_env e2) (js_of_expression ~mod_gen new_env e3)
-  | Texp_sequence   (e1, e2)          -> ppf_sequence (js_of_expression ~mod_gen new_env e1) (js_of_expression ~mod_gen new_env e2)
-  | Texp_while      (cd, body)        -> ppf_while (js_of_expression ~mod_gen new_env cd) (js_of_expression ~mod_gen new_env body)
-  | Texp_for        (id, _, st, ed, fl, body) -> ppf_for (Ident.name id) (js_of_expression ~mod_gen new_env st) (js_of_expression ~mod_gen new_env ed) fl (js_of_expression ~mod_gen new_env body)
-  | Texp_record     (llde,_)          -> ppf_record (List.map (fun (_, lbl, exp) -> (lbl.lbl_name, js_of_expression ~mod_gen new_env exp)) llde)
+  | Texp_array      (exp_l)           -> ppf_array @@ show_list_f (fun exp -> js_of_expression ~mod_gen exp) ", " exp_l
+  | Texp_ifthenelse (e1, e2, None)    -> ppf_ifthen (js_of_expression ~mod_gen e1) (js_of_expression ~mod_gen e2)
+  | Texp_ifthenelse (e1, e2, Some e3) -> ppf_ifthenelse (js_of_expression ~mod_gen e1) (js_of_expression ~mod_gen e2) (js_of_expression ~mod_gen e3)
+  | Texp_sequence   (e1, e2)          -> ppf_sequence (js_of_expression ~mod_gen e1) (js_of_expression ~mod_gen e2)
+  | Texp_while      (cd, body)        -> ppf_while (js_of_expression ~mod_gen cd) (js_of_expression ~mod_gen body)
+  | Texp_for        (id, _, st, ed, fl, body) -> ppf_for (Ident.name id) (js_of_expression ~mod_gen st) (js_of_expression ~mod_gen ed) fl (js_of_expression ~mod_gen body)
+  | Texp_record     (llde,_)          -> ppf_record (List.map (fun (_, lbl, exp) -> (lbl.lbl_name, js_of_expression ~mod_gen exp)) llde)
   | Texp_field      (exp, _, lbl)     ->
-    ppf_field_access (js_of_expression ~mod_gen new_env exp) lbl.lbl_name
+    ppf_field_access (js_of_expression ~mod_gen exp) lbl.lbl_name
 
   | Texp_match      (_,_,_, Partial)  -> out_of_scope locn "partial matching"
   | Texp_match      (_,_,_,_)         -> out_of_scope locn "matching with exception branches"
@@ -389,8 +386,7 @@ and ident_of_pat pat = match pat.pat_desc with
   | _ -> error ~loc:pat.pat_loc "functions can't deconstruct values"
     
 and js_of_let_pattern ?(mod_gen=[]) pat expr =
-  let new_env = pat.pat_env in
-  let sexpr = js_of_expression ~mod_gen new_env expr in
+  let sexpr = js_of_expression ~mod_gen expr in
   match pat.pat_desc with
   | Tpat_var (id, _) -> ppf_decl ~mod_gen (Ident.name id) sexpr
   | Tpat_tuple (pat_l)
@@ -428,7 +424,7 @@ and js_of_pattern ?(mod_gen=[]) pat obj =
   | Tpat_lazy _ -> out_of_scope locn "lazy-pattern"
 
 let to_javascript typedtree =
-  let pre_res = js_of_structure Env.empty typedtree in
+  let pre_res = js_of_structure typedtree in
   let mod_code = String.concat "\n\n" (List.map L.strip_log_info !module_code) in
   let logged, unlogged, pre = L.logged_output (mod_code ^ "\n" ^ pre_res),
                               L.unlogged_output (mod_code ^ "\n" ^ pre_res),