diff --git a/extensible-effects.cabal b/extensible-effects.cabal
--- a/extensible-effects.cabal
+++ b/extensible-effects.cabal
@@ -1,5 +1,5 @@
 Name:                extensible-effects
-Version:             1.4.1
+Version:             1.5.0
 Synopsis:            An Alternative to Monad Transformers
 Description:         This package introduces datatypes for typeclass-constrained effects,
                      as an alternative to monad-transformer based (datatype-constrained)
diff --git a/src/Control/Eff/Exception.hs b/src/Control/Eff/Exception.hs
--- a/src/Control/Eff/Exception.hs
+++ b/src/Control/Eff/Exception.hs
@@ -92,7 +92,7 @@
 {-# INLINE liftEither #-}
 
 -- | `liftEither` in a lifted Monad
-liftEitherM :: (Typeable1 m, Typeable e, Member (Exc e) r, SetMember Lift (Lift m) r)
+liftEitherM :: (Typeable1 m, Typeable e, Member (Exc e) r, Member (Lift m) r)
             => m (Either e a)
             -> Eff r a
 liftEitherM m = lift m >>= liftEither
diff --git a/src/Control/Eff/Lift.hs b/src/Control/Eff/Lift.hs
--- a/src/Control/Eff/Lift.hs
+++ b/src/Control/Eff/Lift.hs
@@ -36,22 +36,22 @@
                            [typeOf1 (undefined :: m ())]
 #endif
 
-instance SetMember Lift (Lift m) (Lift m :> ())
+instance Member (Lift m) r => SetMember Lift (Lift m) r
 
 instance Functor (Lift m) where
     fmap f (Lift m k) = Lift m (f . k)
     {-# INLINE fmap #-}
 
-instance (Typeable1 m, MonadIO m, SetMember Lift (Lift m) r) => MonadIO (Eff r) where
-    liftIO = lift . liftIO
+instance (Typeable1 m, MonadIO m, Member (Lift m) r) => MonadIO (Eff r) where
+    liftIO = (lift :: m a -> Eff r a) . liftIO
     {-# INLINE liftIO #-}
 
-instance (MonadBase b m, Typeable1 m, SetMember Lift (Lift m) r) => MonadBase b (Eff r) where
-    liftBase = lift . liftBase
+instance (MonadBase b m, Typeable1 m, Member (Lift m) r) => MonadBase b (Eff r) where
+    liftBase = (lift :: m a -> Eff r a) . liftBase
     {-# INLINE liftBase #-}
 
 -- | Lift a Monad to an Effect.
-lift :: (Typeable1 m, SetMember Lift (Lift m) r) => m a -> Eff r a
+lift :: (Typeable1 m, Member (Lift m) r) => m a -> Eff r a
 lift m = send (inj . Lift m)
 
 -- | The handler of Lift requests. It is meant to be terminal:
diff --git a/src/Data/OpenUnion1.hs b/src/Data/OpenUnion1.hs
--- a/src/Data/OpenUnion1.hs
+++ b/src/Data/OpenUnion1.hs
@@ -75,7 +75,7 @@
 -- >
 -- > -- Only allow a single unique Lift effect, by making a "Lift" set.
 -- > instance Member (Lift m) r => SetMember Lift (Lift m) r
-class Member t r => SetMember set (t :: * -> *) r | r set -> t
+class SetMember set (t :: * -> *) r | r set -> t
 instance SetMember set t r => SetMember set t (t' :> r)
 
 {-# INLINE inj #-}
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -147,13 +147,6 @@
         return 5
    in assertEqual "Fail should stop writing" 6 ret
 
--- | Ensure that https://github.com/RobotGymnast/extensible-effects/issues/11 stays resolved.
-testLift :: Assertion
-testLift = runLift possiblyAmbiguous
-  where
-    possiblyAmbiguous :: (Typeable1 m, Monad m, SetMember Lift (Lift m) r) => Eff r ()
-    possiblyAmbiguous = lift $ return ()
-
 tests =
   [ testProperty "Documentation example." testDocs
   , testCase "Test runReader laziness." testReaderLaziness
