diff --git a/hasbolt.cabal b/hasbolt.cabal
--- a/hasbolt.cabal
+++ b/hasbolt.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name: hasbolt
-version: 0.1.3.1
+version: 0.1.3.2
 license: BSD3
 license-file: LICENSE
 copyright: (c) 2018 Pavel Yakovlev
@@ -70,7 +70,7 @@
     build-depends:
         base >=4.8 && <5,
         hasbolt -any,
-        hspec >=2.4.1 && <2.6,
+        hspec >=2.4.1 && <2.7,
         QuickCheck >=2.9 && <2.13,
         hex >=0.1.2 && <0.2,
         text >=1.2.3.1 && <1.3,
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
@@ -40,12 +40,7 @@
 discardAll pipe = flush pipe RequestDiscardAll >> void (fetch pipe)
 
 flush :: MonadIO m => Pipe -> Request -> m ()
-flush pipe request = do -- USELESS LOGGING
-                        liftIO $ do
-                          putStr "[->]: "
-                          print request
-                        -- USELESS LOGGING
-                        forM_ chunks $ C.sendMany conn . mkChunk
+flush pipe request = do forM_ chunks $ C.sendMany conn . mkChunk
                         C.send conn terminal
   where bs        = pack $ toStructure request
         chunkSize = chunkSizeFor (mcs pipe) bs
@@ -59,13 +54,7 @@
 
 fetch :: MonadIO m => Pipe -> m Response
 fetch pipe = do bs <- B.concat <$> chunks
-                result <- unpack bs >>= fromStructure
-                -- USELESS LOGGING
-                liftIO $ do 
-                  putStr "[<-]: "
-                  print result
-                -- USELESS LOGGING
-                pure result
+                unpack bs >>= fromStructure
   where conn = connection pipe
 
         chunks :: MonadIO m => m [ByteString]
diff --git a/src/Database/Bolt/Value/Helpers.hs b/src/Database/Bolt/Value/Helpers.hs
--- a/src/Database/Bolt/Value/Helpers.hs
+++ b/src/Database/Bolt/Value/Helpers.hs
@@ -1,6 +1,6 @@
 module Database.Bolt.Value.Helpers where
 
-import           Control.Applicative (liftA2, liftA3)
+import           Control.Applicative (liftA2, liftA3, pure)
 import           Data.Bits           ((.&.))
 import           Data.Word           (Word8)
 
diff --git a/src/Database/Bolt/Value/Instances.hs b/src/Database/Bolt/Value/Instances.hs
--- a/src/Database/Bolt/Value/Instances.hs
+++ b/src/Database/Bolt/Value/Instances.hs
@@ -6,6 +6,7 @@
 import           Database.Bolt.Value.Helpers
 import           Database.Bolt.Value.Type
 
+import           Control.Applicative          (pure)
 import           Control.Monad                (forM, replicateM)
 import           Control.Monad.Trans.State    (gets, modify)
 import           Data.Binary                  (Binary (..), decode, encode)
@@ -116,9 +117,7 @@
                            | m == struct8Code  = toInt <$> unpackW8 >>= unpackStructureBySize
                            | m == struct16Code = toInt <$> unpackW16 >>= unpackStructureBySize
                            | otherwise         = fail "Not a Structure value"
-          unpackStructureBySize size = do sig <- unpackW8
-                                          lst <- replicateM size unpackT
-                                          pure $ Structure sig lst
+          unpackStructureBySize size = Structure <$> unpackW8 <*> replicateM size unpackT
 
 instance BoltValue Value where
   pack (N n) = pack n
diff --git a/src/Database/Bolt/Value/Structure.hs b/src/Database/Bolt/Value/Structure.hs
--- a/src/Database/Bolt/Value/Structure.hs
+++ b/src/Database/Bolt/Value/Structure.hs
@@ -40,10 +40,7 @@
   fromStructure (Structure sig lst) | sig == sigPath = mkPath lst
                                     | otherwise      = failPath
     where mkPath :: Monad m => [Value] -> m Path
-          mkPath [L vnp, L vrp, L vip] = do np <- cnvN vnp
-                                            rp <- cnvR vrp
-                                            ip <- cnvI vip
-                                            pure $ Path np rp ip
+          mkPath [L vnp, L vrp, L vip] = Path <$> cnvN vnp <*> cnvR vrp <*> cnvI vip
           mkPath _                     = failPath
 
           failPath :: Monad m => m Path
@@ -58,16 +55,12 @@
 
 cnvN :: Monad m => [Value] -> m [Node]
 cnvN []       = pure []
-cnvN (S x:xs) = do hd <- fromStructure x
-                   rest <- cnvN xs
-                   pure (hd:rest)
+cnvN (S x:xs) = (:) <$> fromStructure x <*> cnvN xs
 cnvN (x:_)    = fail $ "Non-node value (" ++ show x ++ ") in node list"
 
 cnvR :: Monad m => [Value] -> m [URelationship]
 cnvR []       = pure []
-cnvR (S x:xs) = do hd <- fromStructure x
-                   rest <- cnvR xs
-                   pure (hd:rest)
+cnvR (S x:xs) = (:) <$> fromStructure x <*> cnvR xs
 cnvR (x:_)    = fail $ "Non-(u)relationship value (" ++ show x ++ ") in (u)relationship list"
 
 cnvI :: Monad m => [Value] -> m [Int]
