diff --git a/http-pony-serve-wai.cabal b/http-pony-serve-wai.cabal
--- a/http-pony-serve-wai.cabal
+++ b/http-pony-serve-wai.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                http-pony-serve-wai
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Serve a WAI application with http-pony
 -- description:         
 license:             BSD3
@@ -14,6 +14,7 @@
 build-type:          Simple
 extra-source-files:  ChangeLog.md
 cabal-version:       >=1.10
+Homepage:            https://github.com/nfjinjing/http-pony-serve-wai
 
 library
   exposed-modules:     Network.HTTP.Pony.Serve.Wai
@@ -25,14 +26,23 @@
   build-depends:       base >=4.9 && <4.10
                      , attoparsec >=0.13
                      , blaze-builder
-                     , bytestring >=0.10 && <0.11
+                     , bytestring >=0.10
                      , case-insensitive
                      , http-types
-                     , network
                      , pipes >=4.1
                      , pipes-bytestring
-                     , transformers >=0.5
                      , wai
 
+                     -- testing
+                     -- , pipes-safe
+                     -- , pipes-network
+                     -- , http-pony-transformer-http >= 0.1.0.2
+                     -- , http-pony-transformer-case-insensitive >= 0.1.0.1
+                     -- , foreign-store
+                     -- , http-pony
+                     -- , lens
+
   hs-source-dirs:      src
+                       -- test
+
   default-language:    Haskell2010
diff --git a/src/Network/HTTP/Pony/Serve/Wai.hs b/src/Network/HTTP/Pony/Serve/Wai.hs
--- a/src/Network/HTTP/Pony/Serve/Wai.hs
+++ b/src/Network/HTTP/Pony/Serve/Wai.hs
@@ -9,20 +9,24 @@
 import           Data.ByteString (ByteString)
 import qualified Data.ByteString.Char8 as B
 import           Data.IORef (newIORef, readIORef, writeIORef)
-import           Data.Semigroup
+import           Data.Semigroup ((<>))
+import qualified Network.HTTP.Types as HTTP
 import qualified Network.Wai as Wai
-import           Network.Wai.Internal hiding (Request, Response)
-import           Pipes (yield, for, next)
+import           Network.Wai.Internal (Response(ResponseBuilder)
+                                      , ResponseReceived(ResponseReceived))
+import           Pipes (next)
 import           Pipes.ByteString (fromLazy)
-import qualified Network.HTTP.Types as HTTP
 
 import           Network.HTTP.Pony.Serve.Wai.Helper ((-))
-import           Network.HTTP.Pony.Serve.Wai.Parser
-import           Network.HTTP.Pony.Serve.Wai.Type
+import           Network.HTTP.Pony.Serve.Wai.Parser (parseRequestURITokens
+                                                    , requestLineTokens)
+import           Network.HTTP.Pony.Serve.Wai.Type (Request, Response, App)
 import           Prelude hiding ((-))
 
-parseRequest :: Request ByteString IO a -> IO (Either String Wai.Request)
-parseRequest (requestLine, headers, body) = do
+
+
+parseRequest :: Request -> IO (Either String Wai.Request)
+parseRequest ((requestLine, headers), body) = do
   bodyRef <- newIORef (Just body)
 
   let eitherRequest =
@@ -32,12 +36,12 @@
 
           pure - Wai.defaultRequest
                   {
-                    requestMethod = method
-                  , httpVersion = version
-                  , rawPathInfo = pathInfo
-                  , requestHeaders = headers
-                  , rawQueryString = queryString
-                  , requestBody = do
+                    Wai.requestMethod = method
+                  , Wai.httpVersion = version
+                  , Wai.rawPathInfo = pathInfo
+                  , Wai.requestHeaders = headers
+                  , Wai.rawQueryString = queryString
+                  , Wai.requestBody = do
                       bodyC <- readIORef bodyRef
                       case bodyC of
                         Just _body -> do
@@ -87,12 +91,12 @@
               ResponseBuilder _ _ builder -> do
 
                 let p = fromLazy (toLazyByteString builder)
-                writeIORef responseRef (Just (responseLine, headers, p))
+                writeIORef responseRef (Just ((responseLine, headers), p))
                 pure ResponseReceived
               _ -> do
                 pure ResponseReceived
 
-      waiC - callback (httpVersion waiRequest)
+      waiC - callback (Wai.httpVersion waiRequest)
 
       maybeResponse <- readIORef responseRef
 
diff --git a/src/Network/HTTP/Pony/Serve/Wai/Type.hs b/src/Network/HTTP/Pony/Serve/Wai/Type.hs
--- a/src/Network/HTTP/Pony/Serve/Wai/Type.hs
+++ b/src/Network/HTTP/Pony/Serve/Wai/Type.hs
@@ -3,17 +3,11 @@
 
 import Data.ByteString (ByteString)
 import Data.CaseInsensitive (CI)
-import Network.Socket (Socket)
-import Pipes (Producer)
-
-type StartLine = ByteString
-type Header = (CI ByteString, ByteString)
+import qualified Network.HTTP.Pony.Transformer.HTTP.Type as HTTP
 
-type Message a m r = (StartLine, [Header], Producer a m r)
+type MessageType = (ByteString, [(CI ByteString, ByteString)])
 
-type Request a m r = Message a m r
-type Response a m r = Message a m r
+type Request = HTTP.Request MessageType ByteString IO ()
+type Response = HTTP.Response MessageType ByteString IO ()
 
--- App shouldn't block!
-type Application m a b c d = Request a m c -> m (Response b m d)
-type App = Application IO ByteString ByteString () ()
+type App = Request -> IO Response
