diff --git a/Changes.md b/Changes.md
--- a/Changes.md
+++ b/Changes.md
@@ -1,3 +1,7 @@
+* 1.1.2.6
+  - Regenerate protobuf for protocol-buffers 2.4.12. (https://github.com/riak-haskell-client/riak-haskell-client/issues/115)
+  - Bump riak-protobuf version to 0.24.0.0.
+  - Bump riak-protobuf-lens version to 0.24.0.0.
 * 1.1.2.5
   - Bump aeson and exceptions upper bounds.
 * 1.1.2.4
diff --git a/riak.cabal b/riak.cabal
--- a/riak.cabal
+++ b/riak.cabal
@@ -1,5 +1,5 @@
 name:                riak
-version:             1.1.2.5
+version:             1.1.2.6
 synopsis:            A Haskell client for the Riak decentralized data store
 description:
   A Haskell client library for the Riak decentralized data
@@ -47,7 +47,7 @@
                      tests/test.yaml
 
 cabal-version:       >=1.8
-
+tested-with: GHC==8.4.4, GHC==8.2.2, GHC==8.0.2
 source-repository head
     type: git
     location: https://github.com:riak-haskell-client/riak-haskell-client.git
@@ -124,9 +124,9 @@
                 protocol-buffers              >= 2.1.4    && < 2.5,
                 pureMD5,
                 random,
-                riak-protobuf                 == 0.23.*,
+                riak-protobuf                 == 0.24.*,
                 semigroups                    >= 0.16,
-                stm                           == 2.4.*,
+                stm                           >= 2.4       && < 2.6,
                 text                          == 1.2.*,
                 time                          >= 1.4.2     && < 1.9,
                 vector                        >= 0.10.12.3 && < 0.13,
diff --git a/src/Network/Riak/Basic.hs b/src/Network/Riak/Basic.hs
--- a/src/Network/Riak/Basic.hs
+++ b/src/Network/Riak/Basic.hs
@@ -1,4 +1,7 @@
-{-# LANGUAGE BangPatterns, OverloadedStrings, RecordWildCards, CPP #-}
+{-# LANGUAGE BangPatterns      #-}
+{-# LANGUAGE CPP               #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards   #-}
 
 -- |
 -- Module:      Network.Riak.Basic
@@ -45,23 +48,23 @@
     ) where
 
 #if __GLASGOW_HASKELL__ < 710
-import Control.Applicative ((<$>))
+import           Control.Applicative                    ((<$>))
 #endif
-import Control.Monad.IO.Class
-import Data.Maybe (fromMaybe)
-import Network.Riak.Connection.Internal
-import Network.Riak.Escape (unescape)
-import Network.Riak.Protocol.BucketProps
-import Network.Riak.Protocol.Content
-import Network.Riak.Protocol.ListKeysResponse
-import Network.Riak.Protocol.MapReduce as MapReduce
-import Network.Riak.Protocol.ServerInfo
-import Network.Riak.Types.Internal hiding (MessageTag(..))
-import qualified Data.Foldable as F
-import qualified Data.Sequence as Seq
-import qualified Network.Riak.Request as Req
-import qualified Network.Riak.Response as Resp
-import qualified Network.Riak.Types.Internal as T
+import           Control.Monad.IO.Class
+import qualified Data.Foldable                          as F
+import           Data.Maybe                             (fromMaybe)
+import qualified Data.Sequence                          as Seq
+import           Network.Riak.Connection.Internal
+import           Network.Riak.Escape                    (unescape)
+import           Network.Riak.Protocol.BucketProps
+import           Network.Riak.Protocol.Content
+import           Network.Riak.Protocol.ListKeysResponse
+import           Network.Riak.Protocol.MapReduce        as MapReduce
+import           Network.Riak.Protocol.ServerInfo
+import qualified Network.Riak.Request                   as Req
+import qualified Network.Riak.Response                  as Resp
+import           Network.Riak.Types.Internal            hiding (MessageTag (..))
+import qualified Network.Riak.Types.Internal            as T
 
 -- | Check to see if the connection to the server is alive.
 ping :: Connection -> IO ()
diff --git a/src/Network/Riak/CRDT.hs b/src/Network/Riak/CRDT.hs
--- a/src/Network/Riak/CRDT.hs
+++ b/src/Network/Riak/CRDT.hs
@@ -1,4 +1,11 @@
-{-# LANGUAGE CPP                 #-}
+{-# LANGUAGE CPP                    #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE OverloadedStrings      #-}
+{-# LANGUAGE PatternGuards          #-}
+{-# LANGUAGE ScopedTypeVariables    #-}
+{-# LANGUAGE TypeFamilies           #-}
+
 {- | module:    Network.Riak.CRDT
      copyright: (c) 2016 Sentenai
      author:    Antonio Nikishaev <me@lelf.lu>
@@ -11,7 +18,7 @@
     * Haskell values: 'Counter', 'Set' etc
 
     * ADT for operations: 'CounterOp', 'SetOp' etc
-    
+
     * 'modify' to locally modify a value (matching riak-side behaviour)
 
 * Riak-side
@@ -32,45 +39,38 @@
 Just (DTCounter (Counter 42))
 
 -}
-{-# LANGUAGE TypeFamilies, OverloadedStrings, ScopedTypeVariables, PatternGuards #-}
-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
 
-module Network.Riak.CRDT (module Network.Riak.CRDT.Types,
-                          get,
-                          CRDT(..))
-    where
-
+module Network.Riak.CRDT (
+    module X
+  , get
+  , CRDT(..)
+  ) where
 
-import Data.Default.Class
-import qualified Data.Map as M
-import Data.Proxy
+import           Data.Default.Class
+import qualified Data.Map                as M
+import           Data.Proxy
 #if __GLASGOW_HASKELL__ < 804
-import Data.Semigroup
+import           Data.Semigroup
 #endif
-import qualified Data.Set as S
-import Network.Riak.CRDT.Ops
-import Network.Riak.CRDT.Riak
-import Network.Riak.CRDT.Types
-import Network.Riak.Types
-
+import qualified Data.Set                as S
+import           Network.Riak.CRDT.Ops
+import           Network.Riak.CRDT.Riak
+import           Network.Riak.CRDT.Types as X
+import           Network.Riak.Types
 
 -- | Modify a counter by applying operations ops
 modifyCounter :: CounterOp -> Counter -> Counter
 modifyCounter op c = c <> Counter i
     where CounterInc i = op
 
-
-
 -- | Modify a set by applying operations ops
 modifySet :: SetOp -> Set -> Set
 modifySet op (Set c) = Set (c `S.union` adds S.\\ rems)
     where SetOpsComb adds rems = toOpsComb op
 
-
 modifyMap :: MapOp -> Map -> Map
 modifyMap (MapRemove field) (Map mc) = Map $ M.delete field mc
-modifyMap (MapUpdate path op) m = modifyMap1 path op m
-
+modifyMap (MapUpdate path op) m      = modifyMap1 path op m
 
 modifyMap1 :: MapPath -> MapValueOp -> Map -> Map
 modifyMap1 (MapPath (e :| [])) op m = modMap mf op m
@@ -85,7 +85,6 @@
 modMap :: MapField -> MapValueOp -> Map -> Map
 modMap ix op (Map m) = Map $ M.alter (Just . modifyMapValue op) ix m
 
-
 modifyMapValue :: MapValueOp -> Maybe MapEntry -> MapEntry
 modifyMapValue (MapSetOp op)      = modifyEntry (Proxy :: Proxy Set) op
 modifyMapValue (MapCounterOp op)  = modifyEntry (Proxy :: Proxy Counter) op
@@ -93,14 +92,12 @@
 modifyMapValue (MapFlagOp op)     = modifyEntry (Proxy :: Proxy Flag) op
 modifyMapValue (MapRegisterOp op) = modifyEntry (Proxy :: Proxy Register) op
 
-
 modifyFlag :: FlagOp -> Flag -> Flag
 modifyFlag (FlagSet x) = const (Flag x)
 
 modifyRegister :: RegisterOp -> Register -> Register
 modifyRegister (RegisterSet x) = const (Register x)
 
-
 -- | Types that can be held inside 'Map'
 class Default a => MapCRDT a where
     type MapOperation_ a :: *
@@ -119,38 +116,36 @@
     type MapOperation_ Flag = FlagOp
     mapModify = modifyFlag
     fromEntry (MapFlag f) = Just f
-    fromEntry _ = Nothing
+    fromEntry _           = Nothing
     toEntry = MapFlag
 
 instance MapCRDT Set where
     type MapOperation_ Set = SetOp
     mapModify = modify
     fromEntry (MapSet s) = Just s
-    fromEntry _ = Nothing
+    fromEntry _          = Nothing
     toEntry = MapSet
 
 instance MapCRDT Counter where
     type MapOperation_ Counter = CounterOp
     mapModify = modify
     fromEntry (MapCounter s) = Just s
-    fromEntry _ = Nothing
+    fromEntry _              = Nothing
     toEntry = MapCounter
 
 instance MapCRDT Register where
     type MapOperation_ Register = RegisterOp
     mapModify = modifyRegister
     fromEntry (MapRegister s) = Just s
-    fromEntry _ = Nothing
+    fromEntry _               = Nothing
     toEntry = MapRegister
 
-
 instance MapCRDT Map where
     type MapOperation_ Map = MapOp
     mapModify = modify
     fromEntry (MapMap s) = Just s
-    fromEntry _ = Nothing
+    fromEntry _          = Nothing
     toEntry = MapMap
-
 
 -- | CRDT types
 class MapCRDT a => CRDT a op | a -> op, op -> a where
diff --git a/src/Network/Riak/CRDT/Ops.hs b/src/Network/Riak/CRDT/Ops.hs
--- a/src/Network/Riak/CRDT/Ops.hs
+++ b/src/Network/Riak/CRDT/Ops.hs
@@ -1,32 +1,37 @@
--- | module:    Network.Riak.CRDT.Ops
---   copyright: (c) 2016 Sentenai
---   author:    Antonio Nikishaev <me@lelf.lu>
---   license:   Apache
+-- |
+-- Module:      Network.Riak.CRDT.Ops
+-- Copyright:   (c) 2016 Sentenai
+-- Author:      Antonio Nikishaev <me@lelf.lu>
+-- License:     Apache
+-- Maintainer:  Tim McGilchrist <timmcgil@gmail.com>, Mark Hibberd <mark@hibberd.id.au>
+-- Stability:   experimental
+-- Portability: portable
 --
+--
 -- Conversions of CRDT operations to 'PB.DtOp'
 --
-module Network.Riak.CRDT.Ops (counterUpdateOp,
-                              setUpdateOp, SetOpsComb(..), toOpsComb,
-                              mapUpdateOp)
-    where
-
-import qualified Network.Riak.Protocol.DtOp as PB
-import qualified Network.Riak.Protocol.CounterOp as PB
-import qualified Network.Riak.Protocol.SetOp as PBSet
-
-import qualified Network.Riak.Protocol.MapOp as PBMap
-import qualified Network.Riak.Protocol.MapField as PBMap
-import qualified Network.Riak.Protocol.MapField.MapFieldType as PBMap
-import qualified Network.Riak.Protocol.MapUpdate as PBMap
+module Network.Riak.CRDT.Ops (
+    counterUpdateOp
+  , setUpdateOp
+  , SetOpsComb(..)
+  , toOpsComb
+  , mapUpdateOp
+  ) where
 
-import qualified Network.Riak.Protocol.MapUpdate.FlagOp as PBFlag
+import           Data.ByteString.Lazy                        (ByteString)
+import           Data.Semigroup                              (Semigroup ((<>)))
+import qualified Data.Sequence                               as Seq
+import qualified Data.Set                                    as S
 
-import           Data.ByteString.Lazy (ByteString)
-import           Data.Semigroup (Semigroup((<>)))
-import qualified Data.Sequence as Seq
-import qualified Data.Set as S
 import           Network.Riak.CRDT.Types
-
+import qualified Network.Riak.Protocol.CounterOp             as PB
+import qualified Network.Riak.Protocol.DtOp                  as PB
+import qualified Network.Riak.Protocol.MapField              as PBMap
+import qualified Network.Riak.Protocol.MapField.MapFieldType as PBMap
+import qualified Network.Riak.Protocol.MapOp                 as PBMap
+import qualified Network.Riak.Protocol.MapUpdate             as PBMap
+import qualified Network.Riak.Protocol.MapUpdate.FlagOp      as PBFlag
+import qualified Network.Riak.Protocol.SetOp                 as PBSet
 
 counterUpdateOp :: [CounterOp] -> PB.DtOp
 counterUpdateOp ops = PB.DtOp { PB.counter_op = Just $ counterOpPB ops,
@@ -39,7 +44,7 @@
     where CounterInc i = mconcat ops
 
 
-data SetOpsComb = SetOpsComb { setAdds :: S.Set ByteString,
+data SetOpsComb = SetOpsComb { setAdds    :: S.Set ByteString,
                                setRemoves :: S.Set ByteString }
              deriving (Show)
 
@@ -51,7 +56,7 @@
     (SetOpsComb a b) `mappend` (SetOpsComb x y) = SetOpsComb (a<>x) (b<>y)
 
 toOpsComb :: SetOp -> SetOpsComb
-toOpsComb (SetAdd s) = SetOpsComb (S.singleton s) S.empty
+toOpsComb (SetAdd s)    = SetOpsComb (S.singleton s) S.empty
 toOpsComb (SetRemove s) = SetOpsComb S.empty (S.singleton s)
 
 
diff --git a/src/Network/Riak/CRDT/Request.hs b/src/Network/Riak/CRDT/Request.hs
--- a/src/Network/Riak/CRDT/Request.hs
+++ b/src/Network/Riak/CRDT/Request.hs
@@ -1,10 +1,18 @@
--- |   module:    Network.Riak.CRDT.Request
---     copyright: (c) 2016 Sentenai
---     author:    Antonio Nikishaev <me@lelf.lu>
---     license:   Apache
+-- |
+-- Module:      Network.Riak.CRDT.Request
+-- Copyright:   (c) 2016 Sentenai
+-- Author:      Antonio Nikishaev <me@lelf.lu>
+-- License:     Apache
+-- Maintainer:  Tim McGilchrist <timmcgil@gmail.com>, Mark Hibberd <mark@hibberd.id.au>
+-- Stability:   experimental
+-- Portability: portable
 --
-module Network.Riak.CRDT.Request
-    (get, counterUpdate, setUpdate, mapUpdate) where
+module Network.Riak.CRDT.Request (
+    get
+  , counterUpdate
+  , setUpdate
+  , mapUpdate
+  ) where
 
 import           Data.ByteString.Lazy (ByteString)
 import           Network.Riak.CRDT.Ops
@@ -28,7 +36,6 @@
           -> BucketType -> Bucket -> Key
           -> DtUpdate.DtUpdateRequest
 mapUpdate ops = update (mapUpdateOp ops)
-
 
 update :: DtOp.DtOp -> BucketType -> Bucket -> Key -> DtUpdate.DtUpdateRequest
 update op t b k = DtUpdate.DtUpdateRequest {
diff --git a/src/Network/Riak/CRDT/Response.hs b/src/Network/Riak/CRDT/Response.hs
--- a/src/Network/Riak/CRDT/Response.hs
+++ b/src/Network/Riak/CRDT/Response.hs
@@ -1,29 +1,34 @@
--- |   module:    Network.Riak.CRDT.Response
---     copyright: (c) 2016 Sentenai
---     author:    Antonio Nikishaev <me@lelf.lu>
---     license:   Apache
+-- |
+-- Module:      Network.Riak.CRDT.Response
+-- Copyright:   (c) 2016 Sentenai
+-- Author:      Antonio Nikishaev <me@lelf.lu>
+-- License:     Apache
+-- Maintainer:  Tim McGilchrist <timmcgil@gmail.com>, Mark Hibberd <mark@hibberd.id.au>
+-- Stability:   experimental
+-- Portability: portable
 --
+
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE CPP #-}
 module Network.Riak.CRDT.Response (get) where
 
 #if __GLASGOW_HASKELL__ <= 708
-import Control.Applicative ((<$>))
-import Data.Traversable
+import           Control.Applicative ((<$>))
+import           Data.Traversable
 #endif
 import qualified Data.Sequence as Seq
 import qualified Data.Map as Map
-import Data.Foldable (toList)
-import Data.Maybe
-import Network.Riak.Protocol.DtFetchResponse (DtFetchResponse,value,type')
-import Network.Riak.Protocol.DtFetchResponse.DataType (DataType(..))
-import Network.Riak.Protocol.DtValue (counter_value,set_value,map_value)
+import           Data.Foldable (toList)
+import           Data.Maybe (catMaybes)
+import           Network.Riak.Protocol.DtFetchResponse (DtFetchResponse,value,type')
+import           Network.Riak.Protocol.DtFetchResponse.DataType (DataType(..))
+import           Network.Riak.Protocol.DtValue (counter_value,set_value,map_value)
 
 import qualified Network.Riak.Protocol.MapEntry as M (MapEntry(..))
 import qualified Network.Riak.Protocol.MapField as M
 import qualified Network.Riak.Protocol.MapField.MapFieldType as M
 
-import Network.Riak.CRDT.Types as CRDT
+import           Network.Riak.CRDT.Types as CRDT
 
 get :: DtFetchResponse -> Maybe CRDT.DataType
 get resp = case type' resp of
diff --git a/src/Network/Riak/CRDT/Riak.hs b/src/Network/Riak/CRDT/Riak.hs
--- a/src/Network/Riak/CRDT/Riak.hs
+++ b/src/Network/Riak/CRDT/Riak.hs
@@ -1,31 +1,41 @@
--- |   module:    Network.Riak.CRDT.Riak
---     copyright: (c) 2016 Sentenai
---     author:    Antonio Nikishaev <me@lelf.lu>
---     license:   Apache
+-- |
+-- Module:      Network.Riak.CRDT.Riak
+-- Copyright:   (c) 2016 Sentenai
+-- Author:      Antonio Nikishaev <me@lelf.lu>
+-- License:     Apache
+-- Maintainer:  Tim McGilchrist <timmcgil@gmail.com>, Mark Hibberd <mark@hibberd.id.au>
+-- Stability:   experimental
+-- Portability: portable
 --
 -- CRDT operations
+--
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE MultiWayIf #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE CPP #-}
 
-module Network.Riak.CRDT.Riak (counterSendUpdate,
-                               setSendUpdate,
-                               mapSendUpdate,
-                               get)
-    where
+module Network.Riak.CRDT.Riak (
+    counterSendUpdate
+  , setSendUpdate
+  , mapSendUpdate
+  , get
+  ) where
+
 #if __GLASGOW_HASKELL__ <= 708
 import           Control.Applicative
 import           Data.Int
 #endif
-import qualified Network.Riak.CRDT.Types as CRDT
-import qualified Network.Riak.Connection as Conn
-import           Network.Riak.Types
-import qualified Network.Riak.Protocol.ErrorResponse as ER
+
 import           Control.Exception (catchJust)
+
 import qualified Data.ByteString.Lazy as BS
+
 import qualified Network.Riak.CRDT.Request as Req
 import qualified Network.Riak.CRDT.Response as Resp
+import qualified Network.Riak.CRDT.Types as CRDT
+import qualified Network.Riak.Connection as Conn
+import qualified Network.Riak.Protocol.ErrorResponse as ER
+import           Network.Riak.Types
 
 
 counterSendUpdate :: Connection -> BucketType -> Bucket -> Key
diff --git a/src/Network/Riak/CRDT/Types.hs b/src/Network/Riak/CRDT/Types.hs
--- a/src/Network/Riak/CRDT/Types.hs
+++ b/src/Network/Riak/CRDT/Types.hs
@@ -1,57 +1,62 @@
--- |   module:    Network.Riak.CRDT.Types
---     copyright: (c) 2016 Sentenai
---     author:    Antonio Nikishaev <me@lelf.lu>
---     license:   Apache
--- 
+-- |
+-- Module:      Network.Riak.CRDT.Types
+-- Copyright:   (c) 2016 Sentenai
+-- Author:      Antonio Nikishaev <me@lelf.lu>
+-- License:     Apache
+-- Maintainer:  Tim McGilchrist <timmcgil@gmail.com>, Mark Hibberd <mark@hibberd.id.au>
+-- Stability:   experimental
+-- Portability: portable
+--
 -- Haskell-side view of CRDT
--- 
-{-# LANGUAGE OverloadedStrings, PatternGuards, GeneralizedNewtypeDeriving, DeriveGeneric #-}
-
+--
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DeriveGeneric #-}
 
 module Network.Riak.CRDT.Types (
-        -- * Types
-        DataType(..),
-        -- ** Counters
-        Counter(..), Count,
-        -- *** Modification
-        CounterOp(..),
-        -- ** Sets
-        Set(..),
-        -- *** Modification
-        SetOp(..),
-        -- ** Maps
-        Map(..), MapContent,
-        MapField(..),
-        MapEntry(..),
-        -- *** Inspection
-        xlookup,
-        -- *** Modification
-        MapOp(..), MapPath(..), MapValueOp(..), mapUpdate, (-/),
-        -- ** Registers
-        Register(..),
-        -- *** Modification
-        RegisterOp(..),
-        -- ** Flags
-        Flag(..),
-        -- *** Modification
-        FlagOp(..),
-        -- * Misc
-        NonEmpty(..), mapEntryTag, setFromSeq, MapEntryTag(..))
-    where
-
+    -- * Types
+    DataType(..)
+    -- ** Counters
+  , Counter(..), Count
+    -- *** Modification
+  , CounterOp(..)
+    -- ** Sets
+  , Set(..)
+    -- *** Modification
+  , SetOp(..)
+    -- ** Maps
+  , Map(..), MapContent
+  , MapField(..)
+  , MapEntry(..)
+    -- *** Inspection
+  , xlookup
+    -- *** Modification
+  , MapOp(..), MapPath(..), MapValueOp(..), mapUpdate, (-/)
+    -- ** Registers
+  , Register(..)
+    -- *** Modification
+  , RegisterOp(..)
+    -- ** Flags
+  , Flag(..)
+    -- *** Modification
+  , FlagOp(..)
+    -- * Misc
+  , NonEmpty(..), mapEntryTag, setFromSeq, MapEntryTag(..)
+  ) where
 
+import           Control.DeepSeq (NFData)
+import           Data.ByteString.Lazy (ByteString)
+import           Data.Default.Class
+import qualified Data.Foldable as F
+import           Data.Int (Int64)
+import           Data.List.NonEmpty
 import qualified Data.Map.Strict as M
-import qualified Data.Set as S
+import           Data.Semigroup
 import qualified Data.Sequence as Seq
-import qualified Data.Foldable as F
-import Data.ByteString.Lazy (ByteString)
-import Data.Int (Int64)
-import Data.List.NonEmpty
-import Data.Semigroup
-import Data.Default.Class
-import Control.DeepSeq (NFData)
-import GHC.Generics (Generic)
-import Data.String
+import qualified Data.Set as S
+import           Data.String (IsString(..))
+import           GHC.Generics (Generic)
 
 
 -- | CRDT Map is indexed by MapField, which is a name tagged by a type
@@ -63,7 +68,7 @@
 
 -- | CRDT Map is a Data.Map indexed by 'MapField' and holding
 -- 'MapEntry'.
--- 
+--
 -- Maps are specials in a way that they can additionally
 -- hold 'Flag's, 'Register's, and most importantly, other 'Map's.
 newtype Map = Map MapContent deriving (Eq,Show,Generic)
@@ -109,7 +114,7 @@
 
 -- | map operations
 -- It's easier to use 'mapUpdate':
--- 
+--
 -- >>> "x" -/ "y" -/ "z" `mapUpdate` SetAdd "elem"
 -- MapUpdate (MapPath ("x" :| ["y","z"])) (MapCounterOp (CounterInc 1))
 data MapOp = MapRemove MapField           -- ^ remove value in map
@@ -147,7 +152,7 @@
 
 -- | Lookup a value of a given 'MapEntryTag' type on a given 'MapPath'
 -- inside a map
--- 
+--
 -- >>> lookup ("a" -/ "b") MapFlagTag $ { "a"/Map: { "b"/Flag: Flag False } } -- pseudo
 -- Just (MapFlag (Flag False))
 xlookup :: MapPath -> MapEntryTag -> Map -> Maybe MapEntry
@@ -161,19 +166,19 @@
 
 
 -- | Registers can be set to a value
--- 
+--
 -- >>> RegisterSet "foo"
 data RegisterOp = RegisterSet !ByteString deriving (Eq,Show)
 
 -- | Flags can be enabled / disabled
--- 
+--
 -- >>> FlagSet True
 data FlagOp = FlagSet !Bool deriving (Eq,Show)
 
 -- | Flags can only be held as a 'Map' element.
--- 
+--
 -- Flag can be set or unset
--- 
+--
 -- >>> Flag False
 newtype Flag = Flag Bool deriving (Eq,Ord,Show,Generic)
 
@@ -192,7 +197,7 @@
     def = mempty
 
 -- | Registers can only be held as a 'Map' element.
--- 
+--
 -- Register holds a 'ByteString'.
 newtype Register = Register ByteString deriving (Eq,Show,Generic)
 
@@ -221,7 +226,7 @@
 
 
 -- | CRDT ADT.
--- 
+--
 -- 'Network.Riak.CRDT.Riak.get' operations return value of this type
 data DataType = DTCounter Counter
               | DTSet Set
@@ -231,7 +236,7 @@
 instance NFData DataType
 
 -- | CRDT Set is a Data.Set
--- 
+--
 -- >>> Set (Data.Set.fromList ["foo","bar"])
 newtype Set = Set (S.Set ByteString) deriving (Eq,Ord,Show,Generic,Monoid)
 
@@ -245,10 +250,10 @@
 
 -- | CRDT Set operations
 data SetOp = SetAdd ByteString    -- ^ add element to the set
-                                  -- 
+                                  --
                                   -- >>> SetAdd "foo"
            | SetRemove ByteString -- ^ remove element from the set
-                                  -- 
+                                  --
                                   -- >>> SetRemove "bar"
              deriving (Eq,Show)
 
@@ -256,7 +261,7 @@
 setFromSeq = Set . S.fromList . F.toList
 
 -- | CRDT Counter hold a integer 'Count'
--- 
+--
 -- >>> Counter 42
 newtype Counter = Counter Count deriving (Eq,Ord,Num,Show,Generic)
 type Count = Int64
@@ -274,7 +279,7 @@
     def = mempty
 
 -- | Counters can be incremented/decremented
--- 
+--
 -- >>> CounterInc 1
 data CounterOp = CounterInc !Count deriving (Eq,Show)
 
@@ -284,4 +289,3 @@
 instance Monoid CounterOp where
     mempty = CounterInc 0
     CounterInc x `mappend` CounterInc y = CounterInc . getSum $ Sum x <> Sum y
-
diff --git a/src/Network/Riak/Connection.hs b/src/Network/Riak/Connection.hs
--- a/src/Network/Riak/Connection.hs
+++ b/src/Network/Riak/Connection.hs
@@ -27,4 +27,4 @@
     , pipeline_
     ) where
 
-import Network.Riak.Connection.Internal
+import           Network.Riak.Connection.Internal
diff --git a/src/Network/Riak/Connection/NoPush.hsc b/src/Network/Riak/Connection/NoPush.hsc
--- a/src/Network/Riak/Connection/NoPush.hsc
+++ b/src/Network/Riak/Connection/NoPush.hsc
@@ -21,7 +21,7 @@
 import Foreign.Marshal.Utils (with)
 import Foreign.Ptr (Ptr)
 import Foreign.Storable (sizeOf)
-import Network.Socket (Socket(..), fdSocket)
+import Network.Socket (Socket, fdSocket)
 
 noPush :: CInt
 #if defined(TCP_NOPUSH)
@@ -41,8 +41,9 @@
 setNoPush s onOff = do
   let v = if onOff then 1 else 0
   with v $ \ptr ->
-    throwErrnoIfMinus1_ "setNoPush" $
-      c_setsockopt (fdSocket s) (#const IPPROTO_TCP) noPush ptr (fromIntegral (sizeOf v))
+    throwErrnoIfMinus1_ "setNoPush" $ do
+      a <- (fdSocket s)
+      c_setsockopt a (#const IPPROTO_TCP) noPush ptr (fromIntegral (sizeOf v))
 
 foreign import ccall unsafe "setsockopt"
   c_setsockopt :: CInt -> CInt -> CInt -> Ptr CInt -> CInt -> IO CInt
