diff --git a/algebra/sts.v b/algebra/sts.v
index c01748aef6b387ebc79f17d0d2589d1a6ca0e42b..fd6046d1f67c83aa4ba2cd17b504b04a8caa066f 100644
--- a/algebra/sts.v
+++ b/algebra/sts.v
@@ -430,66 +430,51 @@ Arguments STS {_} _.
 Arguments prim_step {_} _ _.
 Notation states sts := (set (state sts)).
 
-Canonical sts_notok (sts : stsT) : sts.stsT :=
-  sts.STS (token:=Empty_set) (@prim_step sts) (λ _, ∅).
+Definition stsT_token := Empty_set.
+Definition stsT_tok {sts : stsT} (_ : state sts) : set stsT_token := ∅.
 
-Section sts.
-Context {sts : stsT}.
-Implicit Types s : state sts.
-Implicit Types S : states sts.
+Canonical Structure sts_notok (sts : stsT) : sts.stsT :=
+  sts.STS (@prim_step sts) stsT_tok.
+Coercion sts_notok.sts_notok : sts_notok.stsT >-> sts.stsT.
 
-Notation prim_steps := (rtc prim_step).
+Section sts.
+  Context {sts : stsT}.
+  Implicit Types s : state sts.
+  Implicit Types S : states sts.
 
-Lemma sts_step s1 s2 :
-  prim_step s1 s2 → sts.step (s1, ∅) (s2, ∅).
-Proof.
-  intros. split; set_solver.
-Qed.
+  Notation prim_steps := (rtc prim_step).
 
-Lemma sts_steps s1 s2 :
-  prim_steps s1 s2 → sts.steps (s1, ∅) (s2, ∅).
-Proof.
-  induction 1; eauto using sts_step, rtc_refl, rtc_l.
-Qed.
+  Lemma sts_step s1 s2 : prim_step s1 s2 → sts.step (s1, ∅) (s2, ∅).
+  Proof. intros. split; set_solver. Qed.
 
-Lemma frame_prim_step T s1 s2 :
-  sts.frame_step T s1 s2 → prim_step s1 s2.
-Proof.
-  inversion 1 as [??? Hstep]. inversion_clear Hstep. done.
-Qed.
+  Lemma sts_steps s1 s2 : prim_steps s1 s2 → sts.steps (s1, ∅) (s2, ∅).
+  Proof. induction 1; eauto using sts_step, rtc_refl, rtc_l. Qed.
 
-Lemma prim_frame_step T s1 s2 :
-  prim_step s1 s2 → sts.frame_step T s1 s2.
-Proof.
-  intros Hstep. apply sts.Frame_step with ∅ ∅; first set_solver.
-  by apply sts_step.
-Qed.
+  Lemma frame_prim_step T s1 s2 : sts.frame_step T s1 s2 → prim_step s1 s2.
+  Proof. inversion 1 as [??? Hstep]. by inversion_clear Hstep. Qed.
 
-Lemma mk_closed S :
-  (∀ s1 s2, s1 ∈ S → prim_step s1 s2 → s2 ∈ S) → sts.closed S ∅.
-Proof.
-  intros ?. constructor; first by set_solver.
-  intros ????. eauto using frame_prim_step.
-Qed.
+  Lemma prim_frame_step T s1 s2 : prim_step s1 s2 → sts.frame_step T s1 s2.
+  Proof.
+    intros Hstep. apply sts.Frame_step with ∅ ∅; first set_solver.
+    by apply sts_step.
+  Qed.
 
+  Lemma mk_closed S :
+    (∀ s1 s2, s1 ∈ S → prim_step s1 s2 → s2 ∈ S) → sts.closed S ∅.
+  Proof. intros ?. constructor; [by set_solver|eauto using frame_prim_step]. Qed.
 End sts.
-Notation steps := (rtc prim_step).
 End sts_notok.
 
-Coercion sts_notok.sts_notok : sts_notok.stsT >-> sts.stsT.
 Notation sts_notokT := sts_notok.stsT.
 Notation STS_NoTok := sts_notok.STS.
 
 Section sts_notokRA.
-Import sts_notok.
-Context {sts : sts_notokT}.
-Implicit Types s : state sts.
-Implicit Types S : states sts.
-
-Lemma sts_notok_update_auth s1 s2 :
-  rtc prim_step s1 s2 → sts_auth s1 ∅ ~~> sts_auth s2 ∅.
-Proof.
-  intros. by apply sts_update_auth, sts_steps.
-Qed.
-
+  Context {sts : sts_notokT}.
+  Import sts_notok.
+  Implicit Types s : state sts.
+  Implicit Types S : states sts.
+
+  Lemma sts_notok_update_auth s1 s2 :
+    rtc prim_step s1 s2 → sts_auth s1 ∅ ~~> sts_auth s2 ∅.
+  Proof. intros. by apply sts_update_auth, sts_steps. Qed.
 End sts_notokRA.