diff --git a/Web/Routes/XMLGenT.hs b/Web/Routes/XMLGenT.hs
--- a/Web/Routes/XMLGenT.hs
+++ b/Web/Routes/XMLGenT.hs
@@ -4,6 +4,8 @@
 
 import HSP
 import Control.Applicative ((<$>))
+import qualified Data.Text as T
+import qualified Data.Text.Lazy as TL
 import qualified HSX.XMLGenerator as HSX
 import Web.Routes.RouteT (RouteT, ShowURL(showURL), URL)
 
@@ -21,6 +23,7 @@
                               childer
                              )
     xmlToChild = UChild
+    pcdataToChild = HSX.xmlToChild . pcdata                                                           
 
 flattenCDATA :: [XML] -> [XML]
 flattenCDATA cxml = 
@@ -36,6 +39,12 @@
                            (CDATA e1 s1, CDATA e2 s2) | e1 == e2 -> flP (CDATA e1 (s1++s2) : xs) bs
                            _ -> flP (y:xs) (x:bs)
 
+instance (Monad m, Functor m) => IsAttrValue (RouteT url m) T.Text where
+    toAttrValue = toAttrValue . T.unpack
+
+instance (Monad m, Functor m) => IsAttrValue (RouteT url m) TL.Text where
+    toAttrValue = toAttrValue . TL.unpack
+
 instance (Functor m, Monad m) => HSX.EmbedAsAttr (RouteT url m) Attribute where
     asAttr = return . (:[]) . UAttr 
 
@@ -52,11 +61,23 @@
 instance (Functor m, Monad m) => HSX.EmbedAsAttr (RouteT url m) (Attr String Int) where
     asAttr (n := i)  = asAttr $ MkAttr (toName n, pAttrVal (show i))
 
+instance (Monad m, Functor m, IsName n) => (EmbedAsAttr (RouteT url m) (Attr n TL.Text)) where
+    asAttr (n := a) = asAttr $ MkAttr (toName n, pAttrVal $ TL.unpack a)
+
+instance (Monad m, Functor m, IsName n) => (EmbedAsAttr (RouteT url m) (Attr n T.Text)) where
+    asAttr (n := a) = asAttr $ MkAttr (toName n, pAttrVal $ T.unpack a)
+
 instance (Functor m, Monad m) => EmbedAsChild (RouteT url m) Char where
     asChild = XMLGenT . return . (:[]) . UChild . pcdata . (:[])
 
 instance (Functor m, Monad m) => EmbedAsChild (RouteT url m) String where
     asChild = XMLGenT . return . (:[]) . UChild . pcdata
+
+instance (Monad m, Functor m) => (EmbedAsChild (RouteT url m) TL.Text) where
+    asChild = asChild . TL.unpack
+
+instance (Monad m, Functor m) => (EmbedAsChild (RouteT url m) T.Text) where
+    asChild = asChild . T.unpack
 
 instance (Functor m, Monad m) => EmbedAsChild (RouteT url m) XML where
     asChild = XMLGenT . return . (:[]) . UChild
diff --git a/web-routes-hsp.cabal b/web-routes-hsp.cabal
--- a/web-routes-hsp.cabal
+++ b/web-routes-hsp.cabal
@@ -1,5 +1,5 @@
 Name:             web-routes-hsp
-Version:          0.19
+Version:          0.20
 License:          BSD3
 Author:           jeremy@seereason.com
 Maintainer:       partners@seereason.com
@@ -10,7 +10,7 @@
 Build-type:       Simple
 
 Library
-        Build-Depends:    base >= 4 && < 5, hsx, hsp, web-routes >= 0.19
+        Build-Depends:    base >= 4 && < 5, hsx >= 0.7.0, hsp, web-routes >= 0.19, text
         Exposed-Modules:  Web.Routes.XMLGenT
 
 source-repository head
