~continuation:just
       )
    | Some id ->
-       let continuation =
+       let ty',continuation =
         match ty' with
-           None -> Tacticals.id_tac
+           None -> ty,just
          | Some ty' ->
-             Tactics.change ~pattern:(None,[id,Cic.Implicit (Some `Hole)],None)
-              (fun _ metasenv ugraph -> ty',metasenv,ugraph)
+            ty',
+            Tacticals.then_
+             ~start:
+               (Tactics.change
+                 ~with_cast:true
+                 ~pattern:(None,[id,Cic.Implicit (Some `Hole)],None)
+                 (fun _ metasenv ugraph -> ty,metasenv,ugraph))
+             ~continuation:just
        in
         Tacticals.thens
         ~start:
-          (Tactics.cut ty
+          (Tactics.cut ty'
             ~mk_fresh_name_callback:(fun _ _ _  ~typ -> Cic.Name id))
-        ~continuations:[ continuation ; just ]
+        ~continuations:[ Tacticals.id_tac ; continuation ]
 ;;
 
 let bydone ~dbd ~universe t =