diff --git a/Network/HTTP2/TLS/Config.hs b/Network/HTTP2/TLS/Config.hs
--- a/Network/HTTP2/TLS/Config.hs
+++ b/Network/HTTP2/TLS/Config.hs
@@ -5,10 +5,8 @@
 
 import Data.ByteString (ByteString)
 import Foreign.Marshal.Alloc (free, mallocBytes)
-import Network.HTTP2.Client (
-    Config (..),
-    defaultPositionReadMaker,
- )
+import Network.HTTP2.Client (Config)
+import qualified Network.HTTP2.Client as C
 import Network.Socket (SockAddr)
 import Network.Socket.BufferPool
 import qualified System.TimeManager as T
@@ -27,22 +25,22 @@
     buf <- mallocBytes settingsSendBufferSize
     recvN <- makeRecvN "" recv
     let config =
-            Config
-                { confWriteBuffer = buf
-                , confBufferSize = settingsSendBufferSize
-                , confSendAll = send
-                , confReadN = recvN
-                , confPositionReadMaker = defaultPositionReadMaker
-                , confTimeoutManager = mgr
-                , confMySockAddr = mysa
-                , confPeerSockAddr = peersa
-                , confReadNTimeout = False
+            C.defaultConfig
+                { C.confWriteBuffer = buf
+                , C.confBufferSize = settingsSendBufferSize
+                , C.confSendAll = send
+                , C.confReadN = recvN
+                , C.confPositionReadMaker = C.defaultPositionReadMaker
+                , C.confTimeoutManager = mgr
+                , C.confMySockAddr = mysa
+                , C.confPeerSockAddr = peersa
+                , C.confReadNTimeout = False
                 }
     return config
 
 -- | Deallocating the resource of the simple configuration.
 freeConfigForServer :: Config -> IO ()
-freeConfigForServer conf = free $ confWriteBuffer conf
+freeConfigForServer conf = free $ C.confWriteBuffer conf
 
 allocConfigForClient
     :: (ByteString -> IO ()) -> IO ByteString -> SockAddr -> SockAddr -> IO Config
@@ -54,21 +52,21 @@
     -- So, a timeout manager is created per connection.
     mgr <- T.initialize 30000000 -- fixme
     let config =
-            Config
-                { confWriteBuffer = buf
-                , confBufferSize = wbufsiz
-                , confSendAll = send
-                , confReadN = recvN
-                , confPositionReadMaker = defaultPositionReadMaker
-                , confTimeoutManager = mgr
-                , confMySockAddr = mysa
-                , confPeerSockAddr = peersa
-                , confReadNTimeout = False
+            C.defaultConfig
+                { C.confWriteBuffer = buf
+                , C.confBufferSize = wbufsiz
+                , C.confSendAll = send
+                , C.confReadN = recvN
+                , C.confPositionReadMaker = C.defaultPositionReadMaker
+                , C.confTimeoutManager = mgr
+                , C.confMySockAddr = mysa
+                , C.confPeerSockAddr = peersa
+                , C.confReadNTimeout = False
                 }
     return config
 
 -- | Deallocating the resource of the simple configuration.
 freeConfigForClient :: Config -> IO ()
-freeConfigForClient Config{..} = do
-    free confWriteBuffer
-    T.killManager confTimeoutManager
+freeConfigForClient conf = do
+    free $ C.confWriteBuffer conf
+    T.killManager $ C.confTimeoutManager conf
diff --git a/http2-tls.cabal b/http2-tls.cabal
--- a/http2-tls.cabal
+++ b/http2-tls.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name:          http2-tls
-version:       0.5.0
+version:       0.5.1
 license:       BSD3
 license-file:  LICENSE
 maintainer:    Kazu Yamamoto <kazu@iij.ad.jp>
@@ -41,7 +41,7 @@
         crypton-x509-store >=1.6.11 && <1.7.0,
         crypton-x509-system >=1.6 && <1.7,
         crypton-x509-validation >=1.6 && <1.7,
-        http2 >=5.3.9 && <5.4,
+        http2 >=5.4 && <5.5,
         network >=3.1.4,
         network-control >=0.1 && <0.2,
         network-run >=0.5 && <0.6,
