diff --git a/Numeric/Search.hs b/Numeric/Search.hs
--- a/Numeric/Search.hs
+++ b/Numeric/Search.hs
@@ -81,7 +81,7 @@
 
 module Numeric.Search where
 
-import           Control.Applicative((<$>))
+import           Control.Applicative
 import           Data.Functor.Identity
 import           Data.Maybe (fromJust, listToMaybe)
 import           Prelude hiding (init, pred)
@@ -270,7 +270,7 @@
 --
 -- 'searchM' keeps track of the predicates found, so that it works well with the 'Evidence' type.
 
-searchM :: forall a m b . (Monad m, Eq b) =>
+searchM :: forall a m b . (Functor m, Monad m, Eq b) =>
            SearchRange a -> Splitter a -> (a -> m b) -> m [Range b a]
 searchM init0 split0 pred0 = do
   ranges0 <- initializeSearchM init0 pred0
diff --git a/binary-search.cabal b/binary-search.cabal
--- a/binary-search.cabal
+++ b/binary-search.cabal
@@ -1,5 +1,5 @@
 Name:           binary-search
-Version:        1.0.0.1
+Version:        1.0.0.2
 Build-Type:     Simple
 License:        BSD3
 license-file:   LICENSE
@@ -50,6 +50,7 @@
   Ghc-Options:      -Wall
 
   build-depends:    base >=4.5 && < 5
+                  , transformers
                   , containers >= 0.4
 
 Test-Suite doctest
@@ -69,7 +70,7 @@
   Main-Is: Spec.hs
   Other-Modules:    PureSpec
 
-  Build-Depends:    base >=4.5 && < 5
+  Build-Depends:    base >=4.7 && < 5
                   , binary-search
 
                   , hspec >= 1.3
