diff --git a/Control/Monad/Trans/Control.hs b/Control/Monad/Trans/Control.hs
--- a/Control/Monad/Trans/Control.hs
+++ b/Control/Monad/Trans/Control.hs
@@ -58,7 +58,7 @@
 import GHC.Conc.Sync ( STM )
 #endif
 
-#if MIN_VERSION_base(4,4,0)
+#if MIN_VERSION_base(4,4,0) || defined(INSTANCE_ST)
 import           Control.Monad.ST.Lazy             ( ST )
 import qualified Control.Monad.ST.Strict as Strict ( ST )
 #endif
@@ -289,7 +289,7 @@
 BASE(STM,         StSTM)
 #endif
 
-#if MIN_VERSION_base(4,4,0)
+#if MIN_VERSION_base(4,4,0) || defined(INSTANCE_ST)
 BASE(Strict.ST s, StSTS)
 BASE(       ST s, StST)
 #endif
diff --git a/monad-control.cabal b/monad-control.cabal
--- a/monad-control.cabal
+++ b/monad-control.cabal
@@ -1,5 +1,5 @@
 Name:                monad-control
-Version:             0.3.0.1
+Version:             0.3.1
 Synopsis:            Lift control operations, like exception catching, through monad transformers
 License:             BSD3
 License-file:        LICENSE
@@ -42,12 +42,23 @@
 
 --------------------------------------------------------------------------------
 
+Flag instanceST
+  Description:
+    If enabled this package will export MonadBaseControl instances for the lazy
+    and strict ST monad. If disabled these instances are only exported when base
+    >= 4.4. If enabled it is required that the transformer-base package exports
+    MonadBase instances for ST. It will do this by default.
+  Default: True
+
 Library
+  if flag(instanceST)
+    CPP-options: -DINSTANCE_ST
+
   Exposed-modules: Control.Monad.Trans.Control
 
-  Build-depends: base                 >= 3     && < 4.5
+  Build-depends: base                 >= 3     && < 4.6
                , base-unicode-symbols >= 0.1.1 && < 0.3
                , transformers         >= 0.2   && < 0.3
-               , transformers-base    >= 0.4   && < 0.5
+               , transformers-base    >= 0.4.1 && < 0.5
 
   Ghc-options: -Wall
