diff --git a/hasbolt.cabal b/hasbolt.cabal
--- a/hasbolt.cabal
+++ b/hasbolt.cabal
@@ -1,5 +1,5 @@
 name: hasbolt
-version: 0.1.0.9
+version: 0.1.1.0
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
@@ -62,10 +62,10 @@
     type: exitcode-stdio-1.0
     main-is: Spec.hs
     build-depends:
-        base >=4.9.0.0 && <4.10,
-        hasbolt >=0.1.0.9 && <0.2,
-        hspec >=2.2.4 && <2.3,
-        QuickCheck >=2.8.2 && <2.9,
+        base >=4.8 && <5,
+        hasbolt >=0.1.1.0 && <0.2,
+        hspec >=2.4.1 && <2.5,
+        QuickCheck >=2.9.2 && <2.10,
         hex >=0.1.2 && <0.2,
         text >=1.2.2.1 && <1.3,
         containers >=0.5.7.1 && <0.6,
diff --git a/src/Database/Bolt.hs b/src/Database/Bolt.hs
--- a/src/Database/Bolt.hs
+++ b/src/Database/Bolt.hs
@@ -17,3 +17,4 @@
 import           Database.Bolt.Value.Type
 
 import           Data.Default                  (Default (..))
+
diff --git a/src/Database/Bolt/Connection/Pipe.hs b/src/Database/Bolt/Connection/Pipe.hs
--- a/src/Database/Bolt/Connection/Pipe.hs
+++ b/src/Database/Bolt/Connection/Pipe.hs
@@ -11,12 +11,13 @@
 import           Control.Monad.IO.Class             (MonadIO (..))
 import           Data.Binary                        (Binary (..))
 import           Data.ByteString                    (ByteString)
-import qualified Data.ByteString                    as B (concat, length,
-                                                          null, splitAt)
+import qualified Data.ByteString                    as B (concat, length, null,
+                                                          splitAt)
 import           Data.Maybe                         (fromMaybe)
 import           Data.Word                          (Word16, Word32)
 import           Network.Simple.TCP                 (Socket, closeSock,
-                                                     connectSock, recv, send)
+                                                     connectSock, recv, send,
+                                                     sendMany)
 
 -- |Creates new 'Pipe' instance to use all requests through
 connect :: MonadIO m => BoltCfg -> m Pipe
@@ -44,16 +45,17 @@
 discardAll pipe = flush pipe RequestDiscardAll >> void (fetch pipe)
 
 flush :: MonadIO m => Pipe -> Request -> m ()
-flush pipe request = do let bs = pack $ toStructure request
-                        let chunkSize = chunkSizeFor (mcs pipe) bs
-                        let chunks = split chunkSize bs
-                        let terminal = encodeStrict (0 :: Word16)
-                        let sock = connectionSocket pipe
-                        forM_ chunks $ \chunk -> do
-                          let size = fromIntegral (B.length chunk) :: Word16
-                          send sock $ encodeStrict size
-                          send sock chunk
+flush pipe request = do forM_ chunks $ sendMany sock . mkChunk
                         send sock terminal
+  where bs        = pack $ toStructure request
+        chunkSize = chunkSizeFor (mcs pipe) bs
+        chunks    = split chunkSize bs
+        terminal  = encodeStrict (0 :: Word16)
+        sock      = connectionSocket pipe
+
+        mkChunk :: ByteString -> [ByteString]
+        mkChunk chunk = let size = fromIntegral (B.length chunk) :: Word16
+                        in  [encodeStrict size, chunk]
 
 fetch :: MonadIO m => Pipe -> m Response
 fetch pipe = do bs <- B.concat <$> chunks
