diff --git a/flowdock.cabal b/flowdock.cabal
--- a/flowdock.cabal
+++ b/flowdock.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                flowdock
-version:             0.2.0.0
+version:             0.3.0.0
 synopsis:            Flowdock client library for Haskell
 -- description:         
 homepage:            https://github.com/brewtown/hs-flowdock
@@ -23,7 +23,8 @@
   build-depends:       base >=4.6 && <5,
                        aeson >= 0.8 && < 0.9,
                        lens >= 4 && < 5,
-                       http-client >= 0.3 && < 0.4,
+                       lens-action,
+                       http-client >= 0.3.8 && < 0.5,
                        http-client-tls >= 0.2 && < 0.3,
                        mtl >= 2 && < 3,
                        text >= 1 && < 2,
@@ -35,6 +36,7 @@
                        pipes,
                        pipes-http,
                        pipes-parse,
-                       pipes-aeson
+                       pipes-aeson,
+                       network
   hs-source-dirs:      src
   default-language:    Haskell2010
diff --git a/src/Chat/Flowdock.hs b/src/Chat/Flowdock.hs
--- a/src/Chat/Flowdock.hs
+++ b/src/Chat/Flowdock.hs
@@ -135,6 +135,7 @@
 import           Data.Text.Encoding     (decodeUtf8, encodeUtf8)
 import           Data.Typeable
 import           Data.UUID
+import qualified Network.Socket         as S
 import           Pipes
 import qualified Pipes.Aeson            as A
 import           Pipes.HTTP
@@ -159,8 +160,8 @@
 
 data Flow
   = QualifiedFlow
-    { _qfOrganization :: Text
-    , _qfFlow         :: Text
+    { flowOrganization :: Text
+    , flowFlow         :: Text
     }
   | FlowId Text
 
@@ -172,29 +173,29 @@
   toJSON (HashTag t) = String ("#" <> t)
 
 data Message a = Message
-  { _mFlow             :: Flow
-  , _mEvent            :: a
-  , _mTags             :: [Tag]
-  , _mExternalUserName :: Maybe Text
-  , _mUuid             :: Maybe UUID
+  { messageFlow             :: Flow
+  , messageEvent            :: a
+  , messageTags             :: [Tag]
+  , messageExternalUserName :: Maybe Text
+  , messageUuid             :: Maybe UUID
   }
 
 data Chat = Chat
-  { _chatContent :: Text
+  { chatContent :: Text
   }
 
 data FileUpload = FileUpload
-  { _fContent     :: ByteString
-  , _fContentType :: Text
-  , _fFileName    :: Text
+  { fileUploadContent     :: ByteString
+  , fileUploadContentType :: Text
+  , fileUploadFileName    :: Text
   }
 
 newtype MessageId = MessageId Int
   deriving (Show, ToJSON, FromJSON)
 
 data Comment = Comment
-  { _commentContent   :: Text
-  , _commentMessageId :: MessageId
+  { commentContent   :: Text
+  , commentMessageId :: MessageId
   }
 
 message qf e = Message qf e [] Nothing Nothing
@@ -202,7 +203,7 @@
 comment = Comment
 
 data Status = Status
-  { _statusContent :: Text
+  { statusContent :: Text
   }
 
 type Event = Object
@@ -210,15 +211,15 @@
 newtype FlowFilter = FlowFilter (Maybe [Flow])
 
 data StreamQuery a = StreamQuery
-  { _sqSource :: a
-  , _sqUser   :: Maybe Bool
-  , _sqActive :: Maybe Bool
+  { streamQuerySource :: a
+  , streamQueryUser   :: Maybe Bool
+  , streamQueryActive :: Maybe Bool
   }
 
 data MessageResponse c = MessageResponse
-  { _mrMessageId :: MessageId
-  , _mrSent      :: Int
-  , _mrApp       :: Text
+  { messageResponseMessageId :: MessageId
+  , messageResponseSent      :: Int
+  , messageResponseApp       :: Text
   -- , _mr
   } deriving (Show)
 
@@ -276,23 +277,23 @@
   toJSON = const $ String "html"
 
 data InboxPushMessage = InboxPushMessage
-  { _ipSource      :: Text
-  , _ipFromAddress :: Text
-  , _ipSubject     :: Text
-  , _ipContent     :: Text
-  , _ipFromName    :: Maybe Text
-  , _ipReplyTo     :: Maybe Text
-  , _ipProject     :: Maybe Text
-  , _ipFormat      :: Maybe InboxPushFormat
-  , _ipTags        :: Maybe [Tag]
-  , _ipLink        :: Maybe Text
+  { inboxPushMessageSource      :: Text
+  , inboxPushMessageFromAddress :: Text
+  , inboxPushMessageSubject     :: Text
+  , inboxPushMessageContent     :: Text
+  , inboxPushMessageFromName    :: Maybe Text
+  , inboxPushMessageReplyTo     :: Maybe Text
+  , inboxPushMessageProject     :: Maybe Text
+  , inboxPushMessageFormat      :: Maybe InboxPushFormat
+  , inboxPushMessageTags        :: Maybe [Tag]
+  , inboxPushMessageLink        :: Maybe Text
   } deriving (Read, Show)
 
 data ChatPushMessage = ChatPushMessage
-  { _cpContent          :: Text
-  , _cpExternalUserName :: Text
-  , _cpTags             :: Maybe [Tag]
-  , _cpMessageId        :: Maybe Text
+  { chatPushMessageContent          :: Text
+  , chatPushMessageExternalUserName :: Text
+  , chatPushMessageTags             :: Maybe [Tag]
+  , chatPushMessageMessageId        :: Maybe Text
   } deriving (Read, Show)
 
 data JSONError = JSONError String
@@ -320,7 +321,8 @@
   managerSettings = const tlsManagerSettings
 
 instance ClientManagerSettings User where
-  managerSettings = const (tlsManagerSettings { managerResponseTimeout = Nothing })
+  managerSettings = const (tlsManagerSettings { managerResponseTimeout = Nothing
+                                              , managerRawConnection = rawConnectionModifySocket (\s -> S.setSocketOption s S.KeepAlive 1) })
 
 data FlowdockClient a = FlowdockClient
   { clientAuth    :: a
@@ -472,8 +474,8 @@
     let responseStream = responseBody r
     cb $ streamJSON responseStream
   where
-    org  = encodeUtf8 $ _qfOrganization $ _sqSource q
-    flow = encodeUtf8 $ _qfFlow $ _sqSource q
+    org  = encodeUtf8 $ flowOrganization $ streamQuerySource q
+    flow = encodeUtf8 $ flowOrganization $ streamQuerySource q
 
 streamFlows :: FlowdockClient User -> StreamQuery FlowFilter -> (Producer Event IO () -> IO a) -> IO a
 streamFlows (FlowdockClient (User token) man) q cb = do
@@ -504,5 +506,5 @@
           go p'
 
 
-getParentMessageId :: MessageResponse Comment -> MessageId
-getParentMessageId = undefined
+-- getParentMessageId :: MessageResponse Comment -> MessageId
+-- getParentMessageId = undefined
diff --git a/src/Chat/Flowdock/Internal.hs b/src/Chat/Flowdock/Internal.hs
--- a/src/Chat/Flowdock/Internal.hs
+++ b/src/Chat/Flowdock/Internal.hs
@@ -1,15 +1,18 @@
 {-# LANGUAGE FlexibleContexts #-}
 module Chat.Flowdock.Internal where
-import Control.Lens
-import Data.Aeson.TH
-import Data.Char
-import Language.Haskell.TH.Syntax (Q, Name, Dec)
+import           Control.Lens
+import           Control.Lens.Action
+import           Data.Aeson.TH
+import           Data.Char
+import           Language.Haskell.TH.Syntax (Dec, Name, Q)
 
 adjustNames :: String -> String
-adjustNames = snakeCase . dropWhile (not . isUpper)
+adjustNames s = case snakeCase $ dropWhile (not . isUpper) s of
+  [] -> []
+  (x:xs) -> toLower x : xs
 
 jsonize :: Name -> Q [Dec]
-jsonize = deriveJSON (defaultOptions { fieldLabelModifier = adjustNames 
+jsonize = deriveJSON (defaultOptions { fieldLabelModifier = adjustNames
                                      , omitNothingFields = True })
 
 jsonizeAll :: (Traversable t) => MonadicFold Q (t Name) [Dec]
