diff --git a/barrier/heap_lang.v b/barrier/heap_lang.v
index 9dfcbf9cdb31369556aeb987da4654ca2275a1b2..bf647cb23d828d6f53e1f92d675a9d3bd62085b8 100644
--- a/barrier/heap_lang.v
+++ b/barrier/heap_lang.v
@@ -406,19 +406,26 @@ Section Language.
   Definition ectx_step e1 σ1 e2 σ2 (ef: option expr) :=
     exists K e1' e2', e1 = fill K e1' /\ e2 = fill K e2' /\ prim_step e1' σ1 e2' σ2 ef.
 
-  Instance heap_lang : Language expr value state := Build_Language v2e e2v atomic ectx_step.
-  Proof.
-    - exact v2v.
-    - exact e2e.
-    - intros e1 σ1 e2 σ2 ef (K & e1' & e2' & He1 & He2 & Hstep). subst e1 e2.
-      eapply fill_not_value. eapply reducible_not_value. do 4 eexists; eassumption.
-    - exact atomic_not_value.
-    - intros ? ? ? ? ? Hatomic (K & e1' & e2' & Heq1 & Heq2 & Hstep).
-      subst. move: (Hatomic). rewrite (atomic_fill e1' K). (* RJ: this is kind of annoying. *)
-      + rewrite !fill_empty. eauto using atomic_step.
-      + assumption.
-      + clear Hatomic. eapply reducible_not_value. do 4 eexists; eassumption.
-  Defined.
+  Program Instance heap_lang : Language expr value state := {|
+    of_val := v2e;
+    to_val := e2v;
+    language.atomic := atomic;
+    language.prim_step := ectx_step;
+    to_of_val := v2v;
+    of_to_val := e2e;
+    language.atomic_not_value := atomic_not_value
+  |}.
+  Next Obligation.
+    intros e1 σ1 e2 σ2 ef (K & e1' & e2' & He1 & He2 & Hstep). subst e1 e2.
+    eapply fill_not_value. eapply reducible_not_value. do 4 eexists; eassumption.
+  Qed.
+  Next Obligation.
+    intros ? ? ? ? ? Hatomic (K & e1' & e2' & Heq1 & Heq2 & Hstep).
+    subst. move: (Hatomic). rewrite (atomic_fill e1' K).
+    - rewrite !fill_empty. eauto using atomic_step.
+    - assumption.
+    - clear Hatomic. eapply reducible_not_value. do 4 eexists; eassumption.
+  Qed.
 
   (** We can have bind with arbitrary evaluation contexts **)
   Lemma fill_is_ctx K: is_ctx (fill K).
diff --git a/iris/language.v b/iris/language.v
index 09c9aee60741e217cb7bb73cf17f86bf8dca1bce..b3aa860f254bf8a0c7183223058e5d463688657b 100644
--- a/iris/language.v
+++ b/iris/language.v
@@ -14,7 +14,6 @@ Class Language (E V St : Type) := {
     prim_step e1 σ1 e2 σ2 ef →
     is_Some (to_val e2)
 }.
-Arguments Build_Language {_ _ _} _ _ _ _ {_ _ _ _ _}.
 
 Section language.
   Context `{Language E V St}.