diff --git a/distributed-process-zookeeper.cabal b/distributed-process-zookeeper.cabal
--- a/distributed-process-zookeeper.cabal
+++ b/distributed-process-zookeeper.cabal
@@ -1,5 +1,5 @@
 name: distributed-process-zookeeper
-version: 0.2.0.0
+version: 0.2.1.0
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
@@ -40,17 +40,17 @@
  
 library
     build-depends:
-        base >=4.6 && < 4.8,
+        base >=4.6 && < 4.9,
         hzk >=2.1.0 && <2.2,
-        distributed-process >=0.5.3 && <0.6,
+        distributed-process >=0.5.3 && <0.7,
         network-transport >=0.4.1.0 && <0.5,
-        network-transport-tcp >=0.4.1 && <0.5,
-        binary >=0.7.1.0 && <0.8,
+        network-transport-tcp >=0.4.1 && <0.6,
+        binary >=0.7.1.0 && <0.9,
         bytestring >=0.10.0.0 && <0.11,
         containers >=0.5.0.0 && <0.6,
-        transformers >=0.4.2.0 && <0.5,
+        transformers >=0.4.2.0 && <0.6,
         mtl >=2.2.1 && <2.3,
-        deepseq >=1.3.0.0 && <1.4,
+        deepseq >=1.3.0.0 && <1.5,
         network >=2.6.0.2 && <2.7
     exposed-modules:
         Control.Distributed.Process.Zookeeper
diff --git a/src/Control/Distributed/Process/Zookeeper.hs b/src/Control/Distributed/Process/Zookeeper.hs
--- a/src/Control/Distributed/Process/Zookeeper.hs
+++ b/src/Control/Distributed/Process/Zookeeper.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE RecordWildCards    #-}
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
 
 -- | Provides service and node discovery for Cloud Haskell applications using
 --   a Zookeeper cluster for name registration, lookups and leader election.
@@ -49,8 +50,6 @@
                                                            ZKError (..),
                                                            Zookeeper)
 import qualified Database.Zookeeper                       as ZK
-
-import           Control.Applicative                      ((<$>))
 import           Control.Concurrent                       (myThreadId,
                                                            newEmptyMVar,
                                                            putMVar, putMVar,
@@ -73,7 +72,12 @@
 import           Data.Map.Strict                          (Map)
 import qualified Data.Map.Strict                          as Map
 import           Data.Maybe                               (fromMaybe)
+
+#if !MIN_VERSION_base(4,8,0)
 import           Data.Monoid                              (mempty)
+import           Control.Applicative                      ((<$>))
+#endif 
+
 import           Data.Typeable                            (Typeable)
 import           GHC.Generics                             (Generic)
 
@@ -662,7 +666,8 @@
     pid <- spawnLocal $
         let loop = join (liftIO $ takeMVar action)
                    >>= liftIO . putMVar result
-                   >> loop in link self >> loop
+                   >> loop
+        in link self >> loop
     link pid
     return (\f -> putMVar action f >> takeMVar result)
 
