diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.4.0.0
+-------
+* Added simpler constraints for converting ExactPi types to terms with the minimal context.
+
 0.3.1.0
 -------
 * Added support for exactly comparing values.
diff --git a/exact-pi.cabal b/exact-pi.cabal
--- a/exact-pi.cabal
+++ b/exact-pi.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                exact-pi
-version:             0.3.1.0
+version:             0.4.0.0
 synopsis:            Exact rational multiples of pi (and integer powers of pi)
 description:         Provides an exact representation for rational multiples of pi alongside an approximate representation of all reals.
                      Useful for storing and computing with conversion factors between physical units.
diff --git a/src/Data/ExactPi/TypeLevel.hs b/src/Data/ExactPi/TypeLevel.hs
--- a/src/Data/ExactPi/TypeLevel.hs
+++ b/src/Data/ExactPi/TypeLevel.hs
@@ -28,7 +28,7 @@
   type ExactNatural,
   type One, type Pi,
   -- * Conversion to Term Level
-  type MinCtxt,
+  type MinCtxt, type MinCtxt',
   injMin
 )
 where
@@ -69,11 +69,13 @@
 
 -- | Determines the minimum context required for a numeric type to hold the value
 -- associated with a specific 'ExactPi'' type.
-type family MinCtxt (v :: ExactPi') :: * -> Constraint where
-  MinCtxt ('ExactPi' 'Zero p 1) = Num
-  MinCtxt ('ExactPi' 'Zero p q) = Fractional
-  MinCtxt ('ExactPi' z p q)     = Floating
+type family MinCtxt' (v :: ExactPi') :: * -> Constraint where
+  MinCtxt' ('ExactPi' 'Zero p 1) = Num
+  MinCtxt' ('ExactPi' 'Zero p q) = Fractional
+  MinCtxt' ('ExactPi' z p q)     = Floating
 
+type MinCtxt v a = (KnownExactPi v, MinCtxt' v a, KnownMinCtxt (MinCtxt' v))
+
 -- | A KnownMinCtxt is a contraint on values sufficient to allow us to inject certain
 -- 'ExactPi' values into types that satisfy the constraint.
 class KnownMinCtxt (c :: * -> Constraint) where
@@ -98,8 +100,8 @@
 -- 
 -- When the value is known to be an integer, it can be returned as any instance of 'Num'. Similarly,
 -- rationals require 'Fractional', and values that involve 'pi' require 'Floating'.
-injMin :: forall v a.(KnownExactPi v, MinCtxt v a, KnownMinCtxt (MinCtxt v)) => Proxy v -> a
-injMin = inj (Proxy :: Proxy (MinCtxt v)) . exactPiVal
+injMin :: forall v a.(MinCtxt v a) => Proxy v -> a
+injMin = inj (Proxy :: Proxy (MinCtxt' v)) . exactPiVal
 
 instance (KnownTypeInt z, KnownNat p, KnownNat q, 1 <= q) => KnownExactPi ('ExactPi' z p q) where
   exactPiVal _ = Exact z' (p' % q')
