diff --git a/Network/Wai/Application/Classic/Field.hs b/Network/Wai/Application/Classic/Field.hs
--- a/Network/Wai/Application/Classic/Field.hs
+++ b/Network/Wai/Application/Classic/Field.hs
@@ -6,9 +6,9 @@
 import Control.Monad (mplus)
 import Data.Array ((!))
 import Data.ByteString (ByteString)
-import qualified Data.ByteString as BS hiding (pack)
-import Data.ByteString.Char8 as BS (pack)
-import qualified Data.Map as Map (toList)
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Char8 as B8
+import qualified Data.Map as Map
 import Data.Maybe
 import Data.StaticHash (StaticHash)
 import qualified Data.StaticHash as SH
@@ -67,7 +67,7 @@
 addForwardedFor :: Request -> ResponseHeaders -> ResponseHeaders
 addForwardedFor req hdr = (hXForwardedFor, addr) : hdr
   where
-    addr = BS.pack . showSockAddr . remoteHost $ req
+    addr = B8.pack . showSockAddr . remoteHost $ req
 
 newHeader :: Bool -> ByteString -> ByteString -> ResponseHeaders
 newHeader ishtml file date
@@ -85,13 +85,13 @@
 extensions :: ByteString -> [ByteString]
 extensions file = exts
   where
-    entire = case BS.breakByte 46 file of -- '.'
+    entire = case BS.break (== 46) file of -- '.'
         (_,"") -> ""
         (_,x)  -> BS.tail x
     exts = if entire == "" then [] else entire : BS.split 46 file
 
 defaultMimeTypes' :: StaticHash ByteString MimeType
-defaultMimeTypes' = SH.fromList $ map (first (BS.pack . T.unpack)) $ Map.toList defaultMimeMap
+defaultMimeTypes' = SH.fromList $ map (first (B8.pack . T.unpack)) $ Map.toList defaultMimeMap
 
 showBS :: Show a => a -> ByteString
-showBS = BS.pack . show
+showBS = B8.pack . show
diff --git a/Network/Wai/Application/Classic/File.hs b/Network/Wai/Application/Classic/File.hs
--- a/Network/Wai/Application/Classic/File.hs
+++ b/Network/Wai/Application/Classic/File.hs
@@ -172,8 +172,5 @@
 notFound :: RspSpec
 notFound = RspSpec notFound404 BodyStatus
 
-notFoundNoBody :: RspSpec
-notFoundNoBody = RspSpec notFound404 NoBody
-
 notAllowed :: RspSpec
 notAllowed = RspSpec methodNotAllowed405 BodyStatus
diff --git a/Network/Wai/Application/Classic/Path.hs b/Network/Wai/Application/Classic/Path.hs
--- a/Network/Wai/Application/Classic/Path.hs
+++ b/Network/Wai/Application/Classic/Path.hs
@@ -9,11 +9,11 @@
   ) where
 
 import Data.ByteString (ByteString)
-import qualified Data.ByteString as BS (null, head, tail, last, concat, append, drop, length, breakByte, isSuffixOf)
-import qualified Data.ByteString.Char8 as BS (pack, unpack)
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Char8 as B8
+import Data.Function
 import Data.String
 import Data.Word
-import Data.Function
 
 ----------------------------------------------------------------
 
@@ -26,7 +26,7 @@
 instance IsString Path where
     fromString path = Path {
         pathString = path
-      , pathByteString = BS.pack path
+      , pathByteString = B8.pack path
       }
 
 instance Show Path where
@@ -39,7 +39,7 @@
 
 fromByteString :: ByteString -> Path
 fromByteString path = Path {
-    pathString = BS.unpack path
+    pathString = B8.unpack path
   , pathByteString = path
   }
 
@@ -166,7 +166,7 @@
 breakAtSeparator p = (fromByteString r1, fromByteString r2)
   where
     p' = pathByteString p
-    (r1,r2) = BS.breakByte pathSep p'
+    (r1,r2) = BS.break (== pathSep) p'
 
 isSuffixOf :: Path -> Path -> Bool
 isSuffixOf p1 p2 = p1' `BS.isSuffixOf` p2'
diff --git a/Network/Wai/Application/Classic/Range.hs b/Network/Wai/Application/Classic/Range.hs
--- a/Network/Wai/Application/Classic/Range.hs
+++ b/Network/Wai/Application/Classic/Range.hs
@@ -1,8 +1,12 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 
 module Network.Wai.Application.Classic.Range (skipAndSize) where
 
-import Control.Applicative ((<|>), many, (<$>), (<$), (<*), (*>))
+#if __GLASGOW_HASKELL__ < 709
+import Control.Applicative ((<$>), (<$), (<*), (*>))
+#endif
+import Control.Applicative ((<|>), many)
 import Data.Attoparsec.ByteString hiding (satisfy)
 import Data.Attoparsec.ByteString.Char8 hiding (take)
 import Data.ByteString.Char8 (ByteString)
diff --git a/Network/Wai/Application/Classic/RevProxy.hs b/Network/Wai/Application/Classic/RevProxy.hs
--- a/Network/Wai/Application/Classic/RevProxy.hs
+++ b/Network/Wai/Application/Classic/RevProxy.hs
@@ -1,9 +1,12 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 
 module Network.Wai.Application.Classic.RevProxy (revProxyApp) where
 
 import Blaze.ByteString.Builder (Builder)
+#if __GLASGOW_HASKELL__ < 709
 import Control.Applicative
+#endif
 import Control.Monad
 import Control.Monad.IO.Class (liftIO)
 import Data.ByteString (ByteString)
diff --git a/Network/Wai/Application/Classic/Status.hs b/Network/Wai/Application/Classic/Status.hs
--- a/Network/Wai/Application/Classic/Status.hs
+++ b/Network/Wai/Application/Classic/Status.hs
@@ -1,8 +1,11 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 
 module Network.Wai.Application.Classic.Status (getStatusInfo) where
 
+#if __GLASGOW_HASKELL__ < 709
 import Control.Applicative
+#endif
 import Control.Arrow
 import Control.Exception
 import Control.Exception.IOChoice
diff --git a/test/ClassicSpec.hs b/test/ClassicSpec.hs
--- a/test/ClassicSpec.hs
+++ b/test/ClassicSpec.hs
@@ -1,8 +1,11 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 
 module ClassicSpec where
 
+#if __GLASGOW_HASKELL__ < 709
 import Control.Applicative
+#endif
 import Network.HTTP
 import Network.Stream
 import System.IO
diff --git a/wai-app-file-cgi.cabal b/wai-app-file-cgi.cabal
--- a/wai-app-file-cgi.cabal
+++ b/wai-app-file-cgi.cabal
@@ -1,5 +1,5 @@
 Name:                   wai-app-file-cgi
-Version:                3.0.7
+Version:                3.0.8
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
