diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for general-allocate
 
+## 0.2.1.0 -- 2023-01-17
+
+* Make `MonadWithExceptable` a newclass for use with QuantifiedConstraints
+
 ## 0.2.0.1 -- 2023-01-10
 
 * Fix build with mtl 2.3
diff --git a/general-allocate.cabal b/general-allocate.cabal
--- a/general-allocate.cabal
+++ b/general-allocate.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               general-allocate
-version:            0.2.0.1
+version:            0.2.1.0
 license:            Apache-2.0
 license-file:       LICENSE
 author:             Shea Levy
diff --git a/src/Control/Monad/With.hs b/src/Control/Monad/With.hs
--- a/src/Control/Monad/With.hs
+++ b/src/Control/Monad/With.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE AllowAmbiguousTypes #-}
-{-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE DerivingVia #-}
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE InstanceSigs #-}
 {-# LANGUAGE LambdaCase #-}
@@ -142,7 +142,9 @@
   rel _ = fin
 
 -- | A 'MonadWith' whose exception type can be projected into the Haskell exception hierarchy
-type MonadWithExceptable m = (MonadWith m, Exceptable (WithException m))
+class (MonadWith m, Exceptable (WithException m)) ⇒ MonadWithExceptable m
+
+instance (MonadWith m, Exceptable (WithException m)) ⇒ MonadWithExceptable m
 
 instance MonadWith IO where
   stateThreadingGeneralWith (GeneralAllocate allocA) go = mask $ \restore → do
