diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml
index 4c70e7912aa6f3fc37ee63b1e160179b3874ed1b..64bd16cb8239e8272bed82fc0653977951537875 100644
--- a/src/kernel_internals/typing/cabs2cil.ml
+++ b/src/kernel_internals/typing/cabs2cil.ml
@@ -3923,7 +3923,7 @@ struct
   let anonCompFieldName = anonCompFieldName
   let conditionalConversion = logicConditionalConversion
   let find_macro _ = raise Not_found
-  let find_var ?label ~var =
+  let find_var ?label var =
     let find_from_curr_env test =
       (* logic has always access to the ghost variables. *)
       match Datatype.String.Hashtbl.find ghost_env var with
diff --git a/src/kernel_services/analysis/logic_interp.ml b/src/kernel_services/analysis/logic_interp.ml
index 98cf45da1bd0c70c4b39f8ff3fc5e3d6fc8b56f0..7dedd4c4c7adbd6fca8949d7c940a91decff2608 100644
--- a/src/kernel_services/analysis/logic_interp.ml
+++ b/src/kernel_services/analysis/logic_interp.ml
@@ -27,7 +27,7 @@ open Cil_datatype
 exception Error of Cil_types.location * string
 exception Unbound of string
 
-let find_var kf kinstr ?label ~var =
+let find_var kf kinstr ?label var =
   let vi =
     try
       let vi = Globals.Vars.find_from_astinfo var (VLocal kf) in
@@ -89,7 +89,7 @@ end) =
 
       let find_macro _ = raise Not_found
 
-      let find_var ?label ~var = find_var X.kf X.kinstr ?label ~var
+      let find_var ?label var = find_var X.kf X.kinstr ?label var
 
       let find_enum_tag x =
         try
diff --git a/src/kernel_services/analysis/wto_statement.ml b/src/kernel_services/analysis/wto_statement.ml
index bfa182f5e12a8603b8a2989ba244fd5a4bae7a21..b69dd555d6df1d8677820742661f3347b329d35e 100644
--- a/src/kernel_services/analysis/wto_statement.ml
+++ b/src/kernel_services/analysis/wto_statement.ml
@@ -39,7 +39,7 @@ let build_wto kf =
   let init = Kernel_function.find_first_stmt kf
   and succs = fun stmt -> List.rev stmt.succs
   in
-  Scheduler.partition ?pref:None ~init ~succs
+  Scheduler.partition ~pref:(fun _ _ -> 0) ~init ~succs
 
 
 (* ********************************************************************** *)
diff --git a/src/kernel_services/ast_queries/logic_typing.ml b/src/kernel_services/ast_queries/logic_typing.ml
index 250e409acf6a0d98e05f474c6cea24cec0d44f40..b317c5daf7a72cf8413c5e366010e7b51aacaaad 100644
--- a/src/kernel_services/ast_queries/logic_typing.ml
+++ b/src/kernel_services/ast_queries/logic_typing.ml
@@ -488,7 +488,7 @@ type typing_context = {
   anonCompFieldName : string;
   conditionalConversion : typ -> typ -> typ;
   find_macro : string -> lexpr;
-  find_var : ?label:string -> var:string -> logic_var;
+  find_var : ?label:string -> string -> logic_var;
   find_enum_tag : string -> exp * typ;
   find_comp_field: compinfo -> string -> offset;
   find_type : type_namespace -> string -> typ;
@@ -670,7 +670,7 @@ module Make
        val anonCompFieldName : string
        val conditionalConversion : typ -> typ -> typ
        val find_macro : string -> lexpr
-       val find_var : ?label:string -> var:string -> logic_var
+       val find_var : ?label:string -> string -> logic_var
        val find_enum_tag : string -> exp * typ
        val find_comp_field: compinfo -> string -> offset
        val find_type : type_namespace -> string -> typ
@@ -2615,7 +2615,7 @@ struct
         with Not_found ->
         try
           let label = Lenv.string_of_current_label env in
-          let info = ctxt.find_var ?label ~var:x in
+          let info = ctxt.find_var ?label x in
           (match info.lv_origin with
            | Some lv ->
              check_current_label loc env;
diff --git a/src/kernel_services/ast_queries/logic_typing.mli b/src/kernel_services/ast_queries/logic_typing.mli
index e1c613d9e297cac4e1fdc8a18ab8a31489934bf3..109b45d7f1b47375d2ed4b23d9c505c1cfb7d036 100644
--- a/src/kernel_services/ast_queries/logic_typing.mli
+++ b/src/kernel_services/ast_queries/logic_typing.mli
@@ -97,7 +97,7 @@ type typing_context = {
   anonCompFieldName : string;
   conditionalConversion : typ -> typ -> typ;
   find_macro : string -> Logic_ptree.lexpr;
-  find_var : ?label:string -> var:string -> logic_var;
+  find_var : ?label:string -> string -> logic_var;
   (** the label argument is a C label (obeying the restrictions
       of which label can be present in a \at). If present, the scope for
       searching local C variables is the one of the statement with
@@ -262,7 +262,7 @@ module Make
        val anonCompFieldName : string
        val conditionalConversion : typ -> typ -> typ
        val find_macro : string -> Logic_ptree.lexpr
-       val find_var : ?label:string -> var:string -> logic_var
+       val find_var : ?label:string -> string -> logic_var
        (** see corresponding field in {!Logic_typing.typing_context}. *)
        val find_enum_tag : string -> exp * typ
        val find_type : type_namespace -> string -> typ
diff --git a/src/libraries/utils/wto.ml b/src/libraries/utils/wto.ml
index ec3583f300351100430761003f5348622c2220e2..5c6ed3e9801f96d8fb047afd2ad8ca49cc1f8acd 100644
--- a/src/libraries/utils/wto.ml
+++ b/src/libraries/utils/wto.ml
@@ -187,10 +187,9 @@ module Make(N:sig
           let element = Stack.pop state.stack in
           DFN.remove state.dfn element;
           if not (N.equal element vertex) then begin
-            let best_head = match pref with
-              (** the strict is important because we are conservative *)
-              | Some cmp when cmp best_head element < 0 -> element
-              | _ -> best_head
+            (** the strict is important because we are conservative *)
+            let best_head =
+              if pref best_head element < 0 then element else best_head
             in
             reset_SCC best_head
           end
@@ -223,7 +222,7 @@ module Make(N:sig
 
   type pref = N.t -> N.t -> int
 
-  let partition ?pref ~init ~succs =
+  let partition ~pref ~init ~succs =
     let state = {dfn = DFN.create 17; num = 0; succs;
                  stack = Stack.create () } in
     let loop,component = visit ~pref state init [] in
diff --git a/src/libraries/utils/wto.mli b/src/libraries/utils/wto.mli
index 004312ad709592fbdc8c8e98b139f2a098da10f1..6a12f1a3f847e361a9692454ed3b326f1eea29d3 100644
--- a/src/libraries/utils/wto.mli
+++ b/src/libraries/utils/wto.mli
@@ -53,11 +53,14 @@ module Make(Node:sig
   end):sig
 
   type pref = Node.t -> Node.t -> int
-  (** partial order of preference for the choice of the head of a loop *)
+  (** Partial order of preference for the choice of the head of a loop.
+      [pref current_head new_candidate] must return < 0 if [new_candidate]
+      is preferred to [current_head].
+      Use "(fun _ _ -> 0)" for no specific preference. *)
 
   (** Implements Bourdoncle "Efficient chaotic iteration strategies with
   widenings" algorithm to compute a WTO. *)
-  val partition: ?pref:pref -> init:Node.t -> succs:(Node.t -> Node.t list) -> Node.t partition
+  val partition: pref:pref -> init:Node.t -> succs:(Node.t -> Node.t list) -> Node.t partition
 
   val pretty_partition: Format.formatter -> Node.t partition -> unit
   val pretty_component: Format.formatter -> Node.t component -> unit
diff --git a/src/plugins/aorai/data_for_aorai.ml b/src/plugins/aorai/data_for_aorai.ml
index b1423f97bef4baa66534e326e85340364dd9ef14..abc05400af319157f5bf72762e44972d831f463b 100644
--- a/src/plugins/aorai/data_for_aorai.ml
+++ b/src/plugins/aorai/data_for_aorai.ml
@@ -697,7 +697,7 @@ struct
   let conditionalConversion = Cabs2cil.logicConditionalConversion
   let is_loop () = false
   let find_macro _ = raise Not_found
-  let find_var ?label:_ ~var:_ = raise Not_found
+  let find_var ?label:_ _ = raise Not_found
   let find_enum_tag _ = raise Not_found
   (*let find_comp_type ~kind:_ _ = raise Not_found*)
   let find_comp_field info s =
diff --git a/src/plugins/gui/design.ml b/src/plugins/gui/design.ml
index c5a986d5802ee1663188d80d51817a05a251fdc8..21ade2a5af1b660f194cea1f3c85eb7717069438 100644
--- a/src/plugins/gui/design.ml
+++ b/src/plugins/gui/design.ml
@@ -1034,7 +1034,7 @@ class main_window () : main_window_extension_points =
         let m =
           new Menu_manager.menu_manager
             ~packing:(toplevel_vbox#pack ~expand:false ~fill:false ~from:`START)
-            ~host:(self :> Gtk_helper.host)
+            (self :> Gtk_helper.host)
         in
         menu_manager <- Some m;
         m
diff --git a/src/plugins/gui/menu_manager.ml b/src/plugins/gui/menu_manager.ml
index 5d835aabd1c60aef79cff1ad0118f5bf3cae62e9..af195e70150242030b612ab071b8f9d148251690 100644
--- a/src/plugins/gui/menu_manager.ml
+++ b/src/plugins/gui/menu_manager.ml
@@ -112,7 +112,7 @@ let add_submenu container ~pos label =
 external set_menu :  Obj.t -> unit = "ige_mac_menu_set_menu_bar"
 *)
 
-class menu_manager ?packing ~host:(_:Gtk_helper.host) =
+class menu_manager ?packing (_:Gtk_helper.host) =
   let menubar = GMenu.menu_bar ?packing () in
   (*  let () = set_menu (Obj.field (Obj.repr ((menubar)#as_widget)) 1) in *)
   let factory = new GMenu.factory menubar in
diff --git a/src/plugins/gui/menu_manager.mli b/src/plugins/gui/menu_manager.mli
index dba70f9279ccb6d55cb566d59e26cdfce42eee12..22f5cba0dc5ead35416e58d45365f8cdd02f23dc 100644
--- a/src/plugins/gui/menu_manager.mli
+++ b/src/plugins/gui/menu_manager.mli
@@ -113,7 +113,7 @@ end
 
 (** How to handle a Frama-C menu. 
     @since Boron-20100401 *)
-class menu_manager: ?packing:(GObj.widget -> unit) -> host:Gtk_helper.host ->
+class menu_manager: ?packing:(GObj.widget -> unit) -> Gtk_helper.host ->
   object
 
     (** {2 API for plug-ins} *)
diff --git a/src/plugins/wp/Auto.mli b/src/plugins/wp/Auto.mli
index 6b5234198a8d8392f8666e32b77c33cfaf0047fa..669b50df4c8a7b94c115fc5cb6c7eb4cbad5d972 100644
--- a/src/plugins/wp/Auto.mli
+++ b/src/plugins/wp/Auto.mli
@@ -35,7 +35,7 @@ val contrapose : ?priority:float -> selection -> strategy
 val compound : ?priority:float -> selection -> strategy
 val cut : ?priority:float -> ?modus:bool -> selection -> strategy
 val filter : ?priority:float -> ?anti:bool -> unit -> strategy
-val havoc : ?priority:float -> havoc:selection -> strategy
+val havoc : ?priority:float -> selection -> strategy
 val separated : ?priority:float -> selection -> strategy
 val instance : ?priority:float -> selection -> selection list -> strategy
 val lemma : ?priority:float -> ?at:selection -> string -> selection list -> strategy
diff --git a/src/plugins/wp/ProverWhy3.ml b/src/plugins/wp/ProverWhy3.ml
index 54e5d9d0cbf24f3a2768a07a0f1a8a0dccca85a8..ed48014f5628c551088149998f0db4c2bee9e168 100644
--- a/src/plugins/wp/ProverWhy3.ml
+++ b/src/plugins/wp/ProverWhy3.ml
@@ -1088,7 +1088,7 @@ let prove_goal ~id ~title ~name ?axioms t =
   end;
   th, decl
 
-let prove_prop ?axioms ~pid ~prop =
+let prove_prop ?axioms ~pid prop =
   let id = WpPropId.get_propid pid in
   let title = Pretty_utils.to_string WpPropId.pretty pid in
   let name = "WP" in
@@ -1105,13 +1105,13 @@ let task_of_wpo wpo =
       let axioms = v.Wpo.VC_Annot.axioms in
       let prop = Wpo.GOAL.compute_proof v.Wpo.VC_Annot.goal in
       (* Format.printf "Goal: %a@." Lang.F.pp_pred prop; *)
-      prove_prop ~pid ~prop ?axioms
+      prove_prop ~pid prop ?axioms
   | Wpo.GoalLemma v ->
       let lemma = v.Wpo.VC_Lemma.lemma in
       let depends = v.Wpo.VC_Lemma.depends in
       let prop = Lang.F.p_forall lemma.l_forall lemma.l_lemma in
       let axioms = Some(lemma.l_cluster,depends) in
-      prove_prop ~pid ~prop ?axioms
+      prove_prop ~pid prop ?axioms
 
 (* -------------------------------------------------------------------------- *)
 (* --- Prover Task                                                        --- *)
diff --git a/src/plugins/wp/StmtSemantics.ml b/src/plugins/wp/StmtSemantics.ml
index f5236949e0ae9c9826c14289b87253d90caf0a88..5466a629e8d5f07e5029164aa35342820fc18558 100644
--- a/src/plugins/wp/StmtSemantics.ml
+++ b/src/plugins/wp/StmtSemantics.ml
@@ -597,7 +597,7 @@ struct
     let next = (a.return_point,Vertex.Set.empty) in
     let wto =
       WTO.partition
-        ?pref:None (* natural loop keep the heads *)
+        ~pref:(fun _ _ -> 0) (* natural loops keep their heads *)
         ~succs:(UnrollUnnatural.G.succ g)
         ~init:here in
 
diff --git a/src/plugins/wp/TacHavoc.ml b/src/plugins/wp/TacHavoc.ml
index f363cf4ecc86d90c71fd51c3eb131165fef1c002..294c706e6b6342ef1337ccebff69b54da3620fc3 100644
--- a/src/plugins/wp/TacHavoc.ml
+++ b/src/plugins/wp/TacHavoc.ml
@@ -196,7 +196,7 @@ class validity =
 module Havoc =
 struct
   let tactical = Tactical.export (new havoc)
-  let strategy ?(priority=1.0) ~havoc =
+  let strategy ?(priority=1.0) havoc =
     Strategy.{
       priority ;
       tactical ;
diff --git a/src/plugins/wp/TacHavoc.mli b/src/plugins/wp/TacHavoc.mli
index 0942b43ac08e40faf0cfa83bc9f542affb988a3c..de44ed3601eaeba6c3757cf35397db333d725339 100644
--- a/src/plugins/wp/TacHavoc.mli
+++ b/src/plugins/wp/TacHavoc.mli
@@ -29,7 +29,7 @@ module Havoc :
 sig
   val tactical : tactical
   val strategy :
-    ?priority:float -> havoc:selection -> strategy
+    ?priority:float -> selection -> strategy
 end
 
 module Separated :