diff --git a/Control/Monad/Coroutine/Nested.hs b/Control/Monad/Coroutine/Nested.hs
--- a/Control/Monad/Coroutine/Nested.hs
+++ b/Control/Monad/Coroutine/Nested.hs
@@ -81,10 +81,9 @@
 class (Functor a, Functor d) => AncestorFunctor a d where
    -- | Convert the ancestor functor into its descendant. The descendant functor typically contains the ancestor.
    liftFunctor :: a x -> d x
-
-instance Functor a => AncestorFunctor a a where
+instance {-# OVERLAPPING #-} Functor a => AncestorFunctor a a where
    liftFunctor = id
-instance (Functor a, ChildFunctor d, d' ~ Parent d, AncestorFunctor a d') => AncestorFunctor a d where
+instance {-# OVERLAPPABLE #-} (Functor a, ChildFunctor d, d' ~ Parent d, AncestorFunctor a d') => AncestorFunctor a d where
    liftFunctor = wrap . (liftFunctor :: a x -> d' x)
 
 -- | Converts a coroutine into a child nested coroutine.
diff --git a/monad-coroutine.cabal b/monad-coroutine.cabal
--- a/monad-coroutine.cabal
+++ b/monad-coroutine.cabal
@@ -1,5 +1,5 @@
 Name:                monad-coroutine
-Version:             0.9.0.1
+Version:             0.9.0.2
 Cabal-Version:       >= 1.10
 Build-Type:          Simple
 Synopsis:            Coroutine monad transformer for suspending and resuming monadic computations
@@ -23,7 +23,6 @@
 
 Library
   Exposed-Modules:   Control.Monad.Coroutine, Control.Monad.Coroutine.SuspensionFunctors, Control.Monad.Coroutine.Nested
-  Build-Depends:     base < 5, transformers >= 0.2 && < 0.5, transformers-compat >= 0.3 && < 0.5, monad-parallel
-  GHC-prof-options:  -auto-all
+  Build-Depends:     base < 5, transformers >= 0.2 && < 0.5, transformers-compat >= 0.3 && < 0.6, monad-parallel < 1.0
   if impl(ghc >= 7.0.0)
      default-language: Haskell2010
