diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for http3
 
+## 0.0.18
+
+* Using http-semantics v0.2.1
+
 ## 0.0.17
 
 * Providing ServerIO API
diff --git a/Network/HTTP3/Send.hs b/Network/HTTP3/Send.hs
--- a/Network/HTTP3/Send.hs
+++ b/Network/HTTP3/Send.hs
@@ -52,8 +52,7 @@
             strm
             th
             tlrmkr
-            ( \iface -> outBodyUnmask iface $ strmbdy (outBodyPush iface) (outBodyFlush iface)
-            )
+            (\iface -> outBodyUnmask iface $ strmbdy (outBodyPush iface) (outBodyFlush iface))
     OutBodyStreamingIface strmbdy -> sendStreaming ctx strm th tlrmkr strmbdy
   where
     tlrmkr = outObjTrailers outobj
@@ -115,13 +114,16 @@
                     , outBodyPush = write ref
                     , outBodyPushFinal = write ref -- fixme
                     , outBodyFlush = flush
+                    , outBodyCancel = cancel
                     }
         strmbdy iface
     tlrmkr <- readIORef ref
     Trailers trailers <- tlrmkr Nothing
     unless (null trailers) $ sendHeader ctx strm th trailers
   where
+    -- fixme: how to implement flush and cancel?
     flush = return ()
+    cancel _ = return ()
     write ref builder = do
         tlrmkr1 <- readIORef ref
         tlrmkr2 <- newByteStringAndSend strm th tlrmkr1 (B.runBuilder builder) >>= loop
diff --git a/http3.cabal b/http3.cabal
--- a/http3.cabal
+++ b/http3.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               http3
-version:            0.0.17
+version:            0.0.18
 license:            BSD-3-Clause
 license-file:       LICENSE
 maintainer:         Kazu Yamamoto <kazu@iij.ad.jp>
@@ -82,9 +82,9 @@
         bytestring,
         case-insensitive,
         containers,
-        http-semantics >= 0.2 && <0.3,
+        http-semantics >= 0.2.1 && <0.3,
         http-types,
-        http2 >=5.3 && <5.4,
+        http2 >=5.3.4 && <5.4,
         network,
         network-byte-order,
         quic >= 0.2 && < 0.3,
diff --git a/test/QPACK/QIFSpec.hs b/test/QPACK/QIFSpec.hs
--- a/test/QPACK/QIFSpec.hs
+++ b/test/QPACK/QIFSpec.hs
@@ -44,8 +44,7 @@
     withFile qfile ReadMode $ \h -> do
         tid <- forkIO $ decode dec h recv mvar
         runConduitRes
-            ( sourceFile efile .| conduitParser block .| mapM_C (liftIO . switch send insthdr)
-            )
+            (sourceFile efile .| conduitParser block .| mapM_C (liftIO . switch send insthdr))
         takeMVar mvar
         killThread tid
 
