diff --git a/log-effect.cabal b/log-effect.cabal
--- a/log-effect.cabal
+++ b/log-effect.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                log-effect
-version:             0.2.0.2
+version:             0.3.0.1
 synopsis:            An extensible log effect using extensible-effects
 description:         Any help (especially documentation) is very welcome,
 homepage:            https://github.com/ibotty/log-effect
@@ -21,10 +21,15 @@
                      , Control.Eff.Log.Simple
   -- other-modules:       
   -- other-extensions:    
-  build-depends:       base >=4.6 && <4.7
+  build-depends:       base >=4.6 && <4.8
                      , bytestring >=0.10.2 && <0.11
-                     , extensible-effects >=1.2 && <1.3
+                     , extensible-effects ==1.4.* || ==1.7.*
                      , fast-logger >=2.1 && <2.2
                      , time >=1.4 && <1.5
   hs-source-dirs:      src
   default-language:    Haskell2010
+
+source-repository head
+  type: git
+  location: https://github.com/ibotty/log-effect
+
diff --git a/src/Control/Eff/Log.hs b/src/Control/Eff/Log.hs
--- a/src/Control/Eff/Log.hs
+++ b/src/Control/Eff/Log.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE UndecidableInstances #-}
 module Control.Eff.Log
   ( Log(Log, logLine)
   , ShowLog(showLog)
@@ -18,7 +19,7 @@
   ) where
 
 import Control.Applicative ((<$>))
-import Control.Eff ( Eff, SetMember, VE(..), (:>)
+import Control.Eff ( Eff, Member, SetMember, VE(..), (:>)
                    , admin, handleRelay, inj, interpose, send)
 import Control.Eff.Lift (Lift, lift)
 import Data.Typeable (Typeable, Typeable1)
@@ -31,7 +32,7 @@
   , logNext :: v
   } deriving (Typeable, Functor)
 
-instance SetMember Log (Log m) (Log m :> a)
+instance Member (Log m) r => SetMember Log (Log m) r
 
 class ShowLog l where
     showLog :: l -> LogStr
@@ -42,7 +43,7 @@
 -- | a monadic action that does the real logging
 type Logger m l = forall v. Log l v -> m ()
 
-logE :: (Typeable l, SetMember Log (Log l) r)
+logE :: (Typeable l, Member (Log l) r)
   => l -> Eff r ()
 logE line = send $ \next -> inj (Log line (next ()))
 
@@ -62,7 +63,7 @@
         go (E req) = handleRelay req go performLog
         performLog l = lift (logger l) >> go (logNext l)
 
-filterLog :: (Typeable l, SetMember Log (Log l) r)
+filterLog :: (Typeable l, Member (Log l) r)
   => (l -> Bool) -> Eff r a -> Eff r a
 filterLog f = go . admin
   where go (Val v) = return v
diff --git a/src/Control/Eff/Log/Simple.hs b/src/Control/Eff/Log/Simple.hs
--- a/src/Control/Eff/Log/Simple.hs
+++ b/src/Control/Eff/Log/Simple.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
@@ -20,7 +19,7 @@
   ) where
 
 import Prelude hiding (error)
-import Control.Eff (Eff, SetMember)
+import Control.Eff (Eff, Member)
 import Control.Eff.Log
 import Data.Monoid ((<>))
 import Data.Typeable (Typeable)
@@ -29,32 +28,32 @@
 data Severity = DEBUG | INFO | NOTICE | WARNING | ERROR | CRITICAL | ALERT | PANIC
   deriving (Bounded, Enum, Eq, Ord, Read, Show, Typeable)
 
-logTo :: (Typeable l, SetMember Log (Log (Severity, l)) r)
+logTo :: (Typeable l, Member (Log (Severity, l)) r)
   => Severity -> l -> Eff r ()
 logTo sev line = logE (sev, line)
 
-debug :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+debug :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 debug = logTo DEBUG
 
-info :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+info :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 info = logTo INFO
 
-notice :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+notice :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 notice = logTo NOTICE
 
-warning :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+warning :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 warning = logTo WARNING
 
-error :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+error :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 error = logTo ERROR
 
-critical :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+critical :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 critical = logTo CRITICAL
 
-alert :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+alert :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 alert = logTo ALERT
 
-panic :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()
+panic :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
 panic = logTo PANIC
 
 type SimpleLog a = Log (Severity, a)
