diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for eventuo11y
 
+## 0.9.0.0 -- 2023-01-17
+
+- Make `MonadWithEvent` require `MonadWithExceptable` for all `r` and `s`.
+
 ## 0.8.0.0 -- 2023-01-17
 
 - Add `childEvents` and `causedEvents` fields to `MemoryEvent`
diff --git a/eventuo11y.cabal b/eventuo11y.cabal
--- a/eventuo11y.cabal
+++ b/eventuo11y.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               eventuo11y
-version:            0.8.0.0
+version:            0.9.0.0
 synopsis:           An event-oriented observability library
 description:
   Instrument your Haskell codebase with wide, semantically meaningful events.
@@ -67,7 +67,7 @@
   build-depends:
     , base              ^>= { 4.14, 4.16, 4.17 }
     , exceptions        ^>= { 0.10 }
-    , general-allocate  ^>= { 0.2 }
+    , general-allocate  ^>= { 0.2 } && >= 0.2.1
     , primitive         ^>= { 0.7 }
     , time              ^>= { 1.11, 1.12 }
     , transformers      ^>= { 0.5, 0.6 }
diff --git a/src/Observe/Event.hs b/src/Observe/Event.hs
--- a/src/Observe/Event.hs
+++ b/src/Observe/Event.hs
@@ -152,7 +152,7 @@
 --
 -- The 'Event' will be 'finalize'd at the end of the nested action.
 withEvent ::
-  (MonadWithEvent em r s) =>
+  (MonadWithEvent em) =>
   forall f.
   s f ->
   (EnvEvent em r s f -> em r s a) ->
@@ -166,7 +166,7 @@
 --
 -- The 'Event' will be 'finalize'd at the end of the nested action.
 withEventArgs ::
-  (MonadWithEvent em r s) =>
+  (MonadWithEvent em) =>
   forall f.
   NewEventArgs r s f ->
   (EnvEvent em r s f -> em r s a) ->
@@ -188,7 +188,7 @@
 --
 -- The 'Event' will be 'finalize'd at the end of the nested action.
 withNarrowingEvent ::
-  (MonadWithEvent em r t) =>
+  (MonadWithEvent em) =>
   InjectSelector s t ->
   forall f.
   t f ->
@@ -204,7 +204,7 @@
 --
 -- The 'Event' will be 'finalize'd at the end of the nested action.
 withNarrowingEventArgs ::
-  (MonadWithEvent em r t) =>
+  (MonadWithEvent em) =>
   InjectSelector s t ->
   forall f.
   NewEventArgs r t f ->
@@ -215,7 +215,9 @@
   withModifiedBackend (narrowEventBackend inj . setAncestorEventBackend (reference ev)) $ go ev'
 
 -- | A 'MonadEvent' suitable for running the 'withEvent' family of functions
-type MonadWithEvent em r s = (MonadEvent em, MonadWithExceptable (em r s))
+class (MonadEvent em, forall r s. MonadWithExceptable (em r s)) => MonadWithEvent em
+
+instance (MonadEvent em, forall r s. MonadWithExceptable (em r s)) => MonadWithEvent em
 
 -- | Allocate a new 'Event', selected by the given selector.
 --
diff --git a/src/Observe/Event/Explicit.hs b/src/Observe/Event/Explicit.hs
--- a/src/Observe/Event/Explicit.hs
+++ b/src/Observe/Event/Explicit.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE RankNTypes #-}
+-- See https://gitlab.haskell.org/ghc/ghc/-/issues/16478
+{-# OPTIONS_GHC -Wno-simplifiable-class-constraints #-}
 
 -- |
 -- Description : Instrumentation with explicit 'EventBackend' passing
