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.5.0
+Version:             1.6.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/Lift.hs b/src/Control/Eff/Lift.hs
--- a/src/Control/Eff/Lift.hs
+++ b/src/Control/Eff/Lift.hs
@@ -5,8 +5,9 @@
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE IncoherentInstances #-}
+{-# LANGUAGE CPP #-}
 {-# OPTIONS -fno-warn-orphans #-}
 -- | Lifting primitive Monad types to effectful computations.
 -- We only allow a single Lifted Monad because Monads aren't commutative
@@ -36,6 +37,7 @@
                            [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
@@ -50,12 +52,12 @@
     liftBase = (lift :: m a -> Eff r a) . liftBase
     {-# INLINE liftBase #-}
 
--- | Lift a Monad to an Effect.
-lift :: (Typeable1 m, Member (Lift m) r) => m a -> Eff r a
+-- | Lift a Monad to an Effect. We only allow a single lifted Monad.
+lift :: (Typeable1 m, SetMember Lift (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:
--- we only allow a single Lifted Monad.
+-- | The handler of Lift requests. It is a terminal handler:
+-- use `runLift` in place of `run`.
 runLift :: (Monad m, Typeable1 m) => Eff (Lift m :> ()) w -> m w
 runLift m = loop (admin m) where
  loop (Val x) = return x
diff --git a/src/Data/OpenUnion1.hs b/src/Data/OpenUnion1.hs
--- a/src/Data/OpenUnion1.hs
+++ b/src/Data/OpenUnion1.hs
@@ -8,6 +8,7 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE OverlappingInstances #-}
 {-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE IncoherentInstances #-}
 {-# LANGUAGE CPP #-}
 
 #if MIN_VERSION_base(4,7,0)
@@ -75,7 +76,7 @@
 -- >
 -- > -- Only allow a single unique Lift effect, by making a "Lift" set.
 -- > instance Member (Lift m) r => SetMember Lift (Lift m) r
-class SetMember set (t :: * -> *) r | r set -> t
+class Member t r => 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,6 +147,10 @@
         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 (lift $ return () :: Eff (Lift IO :> ()) ())
+
 tests =
   [ testProperty "Documentation example." testDocs
   , testCase "Test runReader laziness." testReaderLaziness
