diff --git a/arrow-list.cabal b/arrow-list.cabal
--- a/arrow-list.cabal
+++ b/arrow-list.cabal
@@ -1,5 +1,5 @@
 Name:             arrow-list
-Version:          0.1.0
+Version:          0.2.0
 Synopsis:         List arrows for Haskell.
 Description:      This small Haskell library provides some type class, types
                   and functions to work with list arrows. List arrows represent
@@ -21,7 +21,7 @@
   HS-Source-Dirs:   src
 
   Build-Depends:    base ==4.*,
-                    mtl ==2.0.*
+                    mtl >= 1.1 && < 2.1
 
   Exposed-modules:  Control.Arrow.ArrowKleisli
                     Control.Arrow.ArrowList
diff --git a/src/Control/Arrow/ArrowKleisli.hs b/src/Control/Arrow/ArrowKleisli.hs
--- a/src/Control/Arrow/ArrowKleisli.hs
+++ b/src/Control/Arrow/ArrowKleisli.hs
@@ -7,12 +7,13 @@
     TypeOperators
   , MultiParamTypeClasses
   , FlexibleInstances
+  , FunctionalDependencies
   #-}
 module Control.Arrow.ArrowKleisli where
 
 import Control.Arrow
 
-class (Monad m, Arrow (~>)) => ArrowKleisli m (~>) where
+class (Monad m, Arrow (~>)) => ArrowKleisli m (~>) | (~>) -> m where
   arrM :: (a -> m b) -> a ~> b
 
 instance Monad m => ArrowKleisli m (Kleisli m) where
