diff --git a/theories/examples/graphs_queue_impl.v b/theories/examples/graphs_queue_impl.v
index d78b8a6e931fe43c30b9f082c6dc9b5905848dde..e4b0f198a461a3a35daffe79577328e40c8d4dda 100644
--- a/theories/examples/graphs_queue_impl.v
+++ b/theories/examples/graphs_queue_impl.v
@@ -60,7 +60,7 @@ End iwpApply.
 
 Declare ML Module "MetaCoqPlugin".
 
-Tactic Notation "iwpApply" "with" open_constr(texan) "intros" "(" simple_intropattern(i1) ")" open_constr(i2) "using" open_constr(lem) "with" open_constr(lem_goals):=
+Tactic Notation "iwpApply" "with" open_constr(texan) "using" open_constr(lem) :=
   let Σ_evar := fresh "__remove_Σ" in
   let TT_evar := fresh "__remove_TT" in
   let Q_evar := fresh "__remove_Q" in
@@ -83,7 +83,10 @@ Tactic Notation "iwpApply" "with" open_constr(texan) "intros" "(" simple_intropa
   let to_val_evar := to_val_evar' in
   iApply (texan_apply_iwp_tele (TT:=TT_evar) (Q:=Q_evar) (to_val:=to_val_evar) with texan); [
     |
-    iIntros ( i1 ); iIntros i2;
+    let Ψ := fresh in
+    (* we can use "Pre" and "Post" because we know that we start with an empty context. *)
+    iIntros ( Ψ ); iIntros "Pre Post";
+
     let H := iFresh in
     iPoseProof (lem) as H;
     (*   (* [solve_ndisj|done|solve_ndisj|by left|by right|by right|..]. *) *)
@@ -105,8 +108,9 @@ Tactic Notation "iwpApply" "with" open_constr(texan) "intros" "(" simple_intropa
           unify Q_evar (tele_app (TT:=TT) Q);
           unify to_val_evar (tele_app (TT:=TT) to_val)
       end;
-      iApply (H with lem_goals);
-      try iClear H
+      iEval (cbn) in "Post";
+      iApply (H with "Pre Post");
+      iClear H
       (* iSpecialize (H with lem_goals); [..|iApply H] *)
     ]
     |..].
@@ -596,11 +600,8 @@ Proof.
   (* invoking iRC11 Texan triple for new *)
   iwp_bind (new [ #2])%E.
 
-  iwpApply with "oV sV" intros (Ψ) "_ POST" using wp_new with "[] [POST]";
+  iwpApply with "oV sV"  using wp_new;
     [done|done|lia|done|..].
-  { iIntros "!>" (l) "Hl". iApply "POST". by iFrame "Hl". }
-  { done. }
-
   iIntros "!>" (n 𝓥1 Le1) "sV1 oV1 P1". iCurViewUp Le1.
   iDestruct "P1" as "[[H†|%] Hn]"; [|done].
   rewrite own_loc_na_vec_cons own_loc_na_vec_singleton.
@@ -619,9 +620,8 @@ Proof.
 
   (* repeat loop to find tail *)
   iwp_bind (repeat: _)%E.
-  iwpApply with "oV3 sV3 Queue" intros (Ψ) "Q Post" using find_tail_repeat_spec with "Q [-]";
+  iwpApply with "oV3 sV3 Queue" using find_tail_repeat_spec;
   [done|..].
-  { iIntros "!>" (l) "P". iApply "Post". iExact "P". }
 
   iIntros "!>" (l' 𝓥4 Le4) "sV4 oV4 P". iCurViewUp Le4.
   iDestruct "P" as (γt' γ' t') "oL'".
@@ -663,20 +663,15 @@ Proof.
         own γg (ghost_emap_master (<[enqId := (Enq v, V)]> emap)) ∗
         VMap_master γq (<[γt := enqId]> M) ⎤)%I.
 
-  iwpApply with "oV4 sV4 [-H† HClose Toks]" intros (Ψ) "Pre Post" using
+  iwpApply with "oV4 sV4 [-H† HClose Toks]" using
                 (GPS_iPP_CAS_int_simple (msqueLN l' γt') (Link γq γg γt') _ _ _
                                         (l' >> 0) #0 0 #n t' Null
                                         P' Q
                                         (λ t1 s1, Link γq γg γt' false (l' >> link) γ' t1 s1 #0)
                                         (λ t1 s1, Link γq γg γt' true (l' >> link) γ' t1 s1 #0)
-                                        (λ _ _ _, True)%I γ')
-    with "Pre [Post]";
+                                        (λ _ _ _, True)%I γ');
   [done|..];
   [solve_ndisj|done|solve_ndisj|by left|by right|by right|..].
-  { (* iRC11 proofmode *)
-    iNext. iIntros (b t0 s0 v0) "PP". iApply "Post".
-    iExact "PP".
-  }
   { iSplitL "oL'"; [by iFrame|].
     iSplitL ""; last iSplitL ""; last by iFrame.
     { iRCRevert "".
@@ -830,11 +825,9 @@ Proof.
     iDestruct "Queue" as "[oH oT]".
     iDestruct "oT" as (tl vl γl) "oT".
     iwp_bind (_ <-ʳᵉˡ _)%E.
-    iwpApply with "oV5 sV5 []" intros (Ψ) "Pre Post" using
-                  (GPS_iPP_Write (msqueQN q) (Tail γq γg) _ _ _ _ (() : unitProtocol) _ #n)
-                  with "Pre [-]";
+    iwpApply with "oV5 sV5 []" using
+                  (GPS_iPP_Write (msqueQN q) (Tail γq γg) _ _ _ _ (() : unitProtocol) _ #n);
     [done|solve_ndisj|done|done|by right|done|..].
-    { iIntros "!>" (?) "Q". by iApply "Post". }
     { iFrame "oT". simpl. iRCRevert "PPn".
       iIntros "#PPn !>" (tl2 ?) "LL !>".
       iExists n. iSplit; [done|]. rewrite (shift_0 n).
@@ -861,10 +854,9 @@ Proof.
     iIntros "!>". iwp_case.
     (* free the node *)
     iwp_bind (delete _)%E.
-    iwpApply with "oV5 sV5 [H† oN oD]" intros (Ψ) "Pre POST" using
-                  (wp_delete _ tid 2 _ [ #0; #v]) with "Pre [-]";
+    iwpApply with "oV5 sV5 [H† oN oD]" using
+                  (wp_delete _ tid 2 _ [ #0; #v]);
       [done|done|done|..].
-    { iIntros "!> _". by iApply "POST". }
     { rewrite own_loc_na_vec_cons own_loc_na_vec_singleton. iFrame "oN oD".
       iLeft. by iFrame. }
 
@@ -951,11 +943,9 @@ Proof.
   iDestruct "oH" as (th vh γh) "PPh".
   iwp_bind (!ᵃᶜ #(q >> 0))%E.
   iwpApply with
-      "oTV sV" intros (Ψ) "Pre Post" using
-      (GPS_iPP_Read (msqueQN q) _ (Head γq γg false (q >> head) γh))
-         with "Pre [Post]";
+      "oTV sV" using
+      (GPS_iPP_Read (msqueQN q) _ (Head γq γg false (q >> head) γh));
   [done|solve_ndisj|done|done|by right|..].
-  { iNext. iIntros (t1 s1 v1) "PP". iApply "Post". iFrame "PP". }
   { iFrame "PPh". iRCRevert "".
     (* iRC11 proofmode *)
     iIntros "!>" (t' [] v' Lt') "!>". iSplit; iIntros "oH !>".
@@ -969,10 +959,9 @@ Proof.
 
   (* read node's link *)
   iwp_bind (!ᵃᶜ #(s >> 0))%E.
-  iwpApply with "oTV sV" intros (Ψ) "Pre Post" using
-                (GPS_iPP_Read (msqueLN s γt) _ (Link γq γg γt false (s >> link) γ'))
-              with "Pre [Post]"; [done|solve_ndisj|done|done|by right|..].
-  { iNext. iIntros (t2 s2 v2) "PP". iApply "Post". iFrame "PP". }
+  iwpApply with "oTV sV" using
+                (GPS_iPP_Read (msqueLN s γt) _ (Link γq γg γt false (s >> link) γ'));
+    [done|solve_ndisj|done|done|by right|..].
   { iFrame "PPs". iRCRevert "".
     (* iRC11 proofmode *)
     iIntros "!>" (????) "!>". iSplit; iIntros "L !>";iApply (Link_dup with "L"). }
@@ -1013,17 +1002,15 @@ Proof.
     (λ _ _, ∃ v : lit, (s2 >> data) ↦{1} #v ∗
             ∃ γt', (∃ eid Ve, VMap_snapv γq γt' eid ∗ EMap_snap γg eid (Enq v) Ve) ∗
             TokGRv γt')%I.
-  iwpApply with "oTV sV" intros (Ψ) "Pre Post" using
+  iwpApply with "oTV sV" using
                 (GPS_iPP_CAS_live_loc (msqueQN q) (Head γq γg) _ _ _ (q >> 0%nat) _
                                       s #s2 th () True%I True%I Q
                                       (λ t0 s0, Head γq γg false (q >> head) γh t0 s0 #s)%I
                                       (λ t0 s0, Head γq γg true  (q >> head) γh t0 s0 #s)%I
                                       (λ _ _ _, True)%I γh _ _ (Ei ∖ ↑msqueQN q ∖ ↑msqueLN s γt)
-                                      (λ l', Ei ∖ ↑msqueQN q ∖ ↑(nroot.@"msqueueLN".@l')))
-    with "Pre [Post]";
+                                      (λ l', Ei ∖ ↑msqueQN q ∖ ↑(nroot.@"msqueueLN".@l')));
     [done|solve_ndisj|done|done|solve_ndisj|intros; solve_ndisj
       |by left|by right|by right|..].
-  { iNext. iIntros (b t0 s0 v0) "PP". iApply "Post". iExact "PP". }
   { iSplitL ""; [iFrame "PPh"|].
     iSplitL ""; [done|].
     iSplitR ""; [|iSplitL ""].