diff --git a/src/Control/Monad/Base.hs b/src/Control/Monad/Base.hs
--- a/src/Control/Monad/Base.hs
+++ b/src/Control/Monad/Base.hs
@@ -12,7 +12,7 @@
 
 import Data.Monoid
 import Data.Functor.Identity
-import Control.Applicative (Applicative)
+import Control.Applicative (Applicative(..))
 import Control.Monad.Trans.Class
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.Maybe
@@ -27,7 +27,11 @@
 import Control.Monad.Trans.Error
 import Control.Monad.Trans.Cont
 
-#if MIN_VERSION_base(4,4,0)
+#if !MIN_VERSION_base(4,4,0) && HS_TRANSFORMERS_BASE__ORPHANS
+import Control.Monad (ap)
+#endif
+
+#if MIN_VERSION_base(4,4,0) || HS_TRANSFORMERS_BASE__ORPHANS
 import qualified Control.Monad.ST.Lazy as L
 import qualified Control.Monad.ST.Strict as S
 #endif
@@ -55,7 +59,17 @@
 BASE(STM)
 #endif
 
-#if MIN_VERSION_base(4,4,0)
+#if !MIN_VERSION_base(4,4,0) && HS_TRANSFORMERS_BASE__ORPHANS
+instance Applicative (L.ST s) where
+  pure  = return
+  (<*>) = ap
+
+instance Applicative (S.ST s) where
+  pure  = return
+  (<*>) = ap
+#endif
+
+#if MIN_VERSION_base(4,4,0) || HS_TRANSFORMERS_BASE__ORPHANS
 BASE(L.ST s)
 BASE(S.ST s)
 #endif
diff --git a/transformers-base.cabal b/transformers-base.cabal
--- a/transformers-base.cabal
+++ b/transformers-base.cabal
@@ -1,5 +1,5 @@
 Name: transformers-base
-Version: 0.4.0.1
+Version: 0.4.1
 Category: Control
 Stability: experimental
 Synopsis: Lift computations from the bottom of a transformer stack
@@ -27,11 +27,20 @@
   Type: git
   Location: https://github.com/mvv/transformers-base.git
 
+Flag OrphanInstances
+  Description:
+    Declare orphan Applicative instances for lazy and strict ST if needed
+  Default: True
+
 Library
   Build-Depends:
     base          >= 3 && < 5,
     transformers  >= 0.2
   Hs-Source-Dirs: src
   GHC-Options: -Wall
+  if flag(OrphanInstances)
+    CPP-Options: -DHS_TRANSFORMERS_BASE__ORPHANS=1
+  else
+    CPP-Options: -DHS_TRANSFORMERS_BASE__ORPHANS=0
   Exposed-Modules:
     Control.Monad.Base
