diff --git a/Web/Routes/Wai.hs b/Web/Routes/Wai.hs
--- a/Web/Routes/Wai.hs
+++ b/Web/Routes/Wai.hs
@@ -2,37 +2,40 @@
 
 import qualified Data.ByteString.Char8 as S
 import qualified Data.ByteString.Lazy.Char8 as L
+import Data.Text           (Text)
+import qualified Data.Text as Text
+import qualified Data.Text.Encoding as Text
 import Data.Enumerator     (Iteratee)
 import Network.Wai         ( Application, Request, Response, rawPathInfo
                            , responseLBS)
 import Network.HTTP.Types  (status404)
 import Web.Routes.Base     (decodePathInfo, encodePathInfo)
-import Web.Routes.PathInfo (PathInfo(..), fromPathInfo, stripOverlap
+import Web.Routes.PathInfo (PathInfo(..), fromPathInfo, stripOverlapBS
                            , toPathInfoParams)
 import Web.Routes.RouteT   (RouteT, unRouteT)
 import Web.Routes.Site     (Site(..))
 
 -- | a low-level function for convert a parser, printer, and routing function into an 'Application'
-handleWaiError :: (url -> [(String, String)] -> String) -- ^ function to convert a 'url' + params into path info + query string
-               -> (String -> Either String url)         -- ^ function to parse path info into 'url'
-               -> String                                -- ^ app root
+handleWaiError :: (url -> [(Text, Maybe Text)] -> Text) -- ^ function to convert a 'url' + params into path info + query string
+               -> (S.ByteString -> Either String url)   -- ^ function to parse path info into 'url'
+               -> S.ByteString                          -- ^ app root
                -> (String -> Application)               -- ^ function to call if there is a decoding error, argument is the parse error
-               -> ((url -> [(String, String)] -> String) -> url -> Application)  -- ^ routing function
+               -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application)  -- ^ routing function
                -> Application
 handleWaiError fromUrl toUrl approot handleError handler =
   \request ->
-     do let fUrl = toUrl $ stripOverlap approot $ S.unpack $ rawPathInfo request
+     do let fUrl = toUrl $ stripOverlapBS approot $ rawPathInfo request
         case fUrl of
           (Left parseError) -> handleError parseError request
-          (Right url)  -> handler (\url params -> showString approot $ fromUrl url params) url request
+          (Right url)  -> handler (\url params -> (Text.decodeUtf8 approot) `Text.append` (fromUrl url params)) url request
 
 -- | a low-level function for convert a parser, printer, and routing function into an 'Application'
 --
 -- returns 404 if the url parse fails.
-handleWai_ :: (url -> [(String, String)] -> String) -- ^ function to convert a 'url' + params into path info + query string
-           -> (String -> Either String url)         -- ^ function to parse path info into 'url'
-           -> String                                -- ^ app root
-           -> ((url -> [(String, String)] -> String) -> url -> Application) -- ^ routing function
+handleWai_ :: (url -> [(Text, Maybe Text)] -> Text) -- ^ function to convert a 'url' + params into path info + query string
+           -> (S.ByteString -> Either String url)         -- ^ function to parse path info into 'url'
+           -> S.ByteString                                -- ^ app root
+           -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application) -- ^ routing function
            -> Application
 handleWai_ fromUrl toUrl approot handler =
     handleWaiError fromUrl toUrl approot handleError handler
@@ -43,17 +46,17 @@
 -- | function to convert a routing function into an Application by
 -- leveraging 'PathInfo' to do the url conversion
 handleWai :: (PathInfo url) => 
-             String -- ^ approot
-          -> ((url -> [(String, String)] -> String) -> url -> Application) -- ^ routing function
+             S.ByteString -- ^ approot
+          -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application) -- ^ routing function
           -> Application
 handleWai approot handler = handleWai_ toPathInfoParams fromPathInfo approot handler
 
 -- | a function to convert a parser, printer and routing function into an 'Application'.
 --
 -- This is similar to 'handleWai_' expect that it expects the routing function to use 'RouteT'.
-handleWaiRouteT_ :: (url -> [(String, String)] -> String) -- ^ function to convert a 'url' + params into path info + query string
-                 -> (String -> Either String url)         -- ^ function to parse path info into 'url'
-                 -> String                                -- ^ app root
+handleWaiRouteT_ :: (url -> [(Text, Maybe Text)] -> Text) -- ^ function to convert a 'url' + params into path info + query string
+                 -> (S.ByteString -> Either String url)         -- ^ function to parse path info into 'url'
+                 -> S.ByteString                                -- ^ app root
                  -> (url -> Request -> RouteT url (Iteratee S.ByteString IO) Response) -- ^ routing function
                  -> Application
 handleWaiRouteT_  toPathInfo fromPathInfo approot handler =
@@ -62,14 +65,14 @@
 
 -- | convert a 'RouteT' based routing function into an 'Application' using 'PathInfo' to do the url conversion
 handleWaiRouteT :: (PathInfo url) => 
-                   String  -- ^ app root
+                   S.ByteString  -- ^ app root
                 -> (url -> Request -> RouteT url (Iteratee S.ByteString IO) Response) -- ^ routing function
                 -> Application
 handleWaiRouteT approot handler = handleWaiRouteT_ toPathInfoParams fromPathInfo approot handler
 
 -- |convert a 'Site url Application' into a plain-old 'Application'
 waiSite :: Site url Application -- ^ Site
-        -> String               -- ^ approot, e.g. http://www.example.org/app
+        -> S.ByteString               -- ^ approot, e.g. http://www.example.org/app
         -> Application
 waiSite site approot = handleWai_ formatURL (parsePathSegments site . decodePathInfo) approot (handleSite site) 
     where
diff --git a/web-routes-wai.cabal b/web-routes-wai.cabal
--- a/web-routes-wai.cabal
+++ b/web-routes-wai.cabal
@@ -1,5 +1,5 @@
 Name:             web-routes-wai
-Version:          0.20.0
+Version:          0.21.0
 License:          BSD3
 License-File:     LICENSE
 Author:           jeremy@seereason.com
@@ -16,8 +16,9 @@
                           bytestring  == 0.9.*,
                           enumerator  == 0.4.*,
                           http-types  == 0.6.*,
+                          text        == 0.11.*,
                           wai         == 0.4.*,
-                          web-routes  >= 0.25.2 && < 0.26
+                          web-routes  == 0.26.*
         Exposed-Modules:  Web.Routes.Wai
 
 source-repository head
