diff --git a/markup.cabal b/markup.cabal
--- a/markup.cabal
+++ b/markup.cabal
@@ -1,5 +1,5 @@
 Name:                   markup
-Version:                4.0.3
+Version:                4.0.4
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                MIT
@@ -36,6 +36,7 @@
                         Data.Markup.Class
                         Data.Markup.Library
   Build-Depends:        base >= 4.8 && < 5
+                      , attoparsec-uri >= 0.0.4
                       , blaze-html
                       , blaze-markup
                       , comonad
@@ -45,11 +46,11 @@
                       , monad-control
                       , monad-logger
                       , mtl
-                      , path-extra >= 0.0.5
+                      , path-extra >= 0.0.6
                       , resourcet
                       , text
                       , transformers-base
-                      , urlpath >= 7.0.0
+                      , urlpath >= 7.1.0
 
 Source-Repository head
   Type:                 git
diff --git a/src/Data/Markup/Library.hs b/src/Data/Markup/Library.hs
--- a/src/Data/Markup/Library.hs
+++ b/src/Data/Markup/Library.hs
@@ -25,6 +25,7 @@
 import           Data.Markup.Types
 
 import           Data.Url
+import           Data.URI (printURI)
 import           Path.Extended
 
 import qualified Lucid                       as L
@@ -54,56 +55,56 @@
 
 instance ( Monad m
          ) => Deploy Image Remote T.Text (L.HtmlT m) where
-  deploy Image Remote link = linkedImageLucid link
+  deploy Image Remote = linkedImageLucid
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy Image Remote (Path Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy Image Remote i = do
     link <- lift (pathUrl i)
-    linkedImageLucid (T.pack $ show link)
+    linkedImageLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy Image Remote (Location Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy Image Remote i = do
     link <- lift (locUrl i)
-    linkedImageLucid (T.pack $ show link)
+    linkedImageLucid (printURI link)
 
 
 -- Local
 
 instance ( Monad m
          ) => Deploy Image Locally T.Text (L.HtmlT m) where
-  deploy Image Locally link = linkedImageLucid link
+  deploy Image Locally = linkedImageLucid
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy Image Locally (Path Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy Image Locally i = do
     link <- lift (pathUrl i)
-    linkedImageLucid (T.pack $ show link)
+    linkedImageLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy Image Locally (Path Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy Image Locally i = do
     link <- lift (pathUrl i)
-    linkedImageLucid (T.pack $ show link)
+    linkedImageLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy Image Locally (Location Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy Image Locally i = do
     link <- lift (locUrl i)
-    linkedImageLucid (T.pack $ show link)
+    linkedImageLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy Image Locally (Location Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy Image Locally i = do
     link <- lift (locUrl i)
-    linkedImageLucid (T.pack $ show link)
+    linkedImageLucid (printURI link)
 
 
 -- Blaze
@@ -114,50 +115,50 @@
 linkedImageBlaze link =
   H.img H.! A.src (H.toValue link)
 
-instance Deploy Image Remote T.Text (HI.MarkupM) where
-  deploy Image Remote link = linkedImageBlaze link
+instance Deploy Image Remote T.Text HI.MarkupM where
+  deploy Image Remote = linkedImageBlaze
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy Image Remote (Path Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy Image Remote i = do
     link <- pathUrl i
-    lift (linkedImageBlaze (T.pack $ show link))
+    lift (linkedImageBlaze (printURI link))
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy Image Remote (Location Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy Image Remote i = do
     link <- locUrl i
-    lift (linkedImageBlaze (T.pack $ show link))
+    lift (linkedImageBlaze (printURI link))
 
 
 -- Local
 
-instance Deploy Image Locally T.Text (HI.MarkupM) where
-  deploy Image Locally link = linkedImageBlaze link
+instance Deploy Image Locally T.Text HI.MarkupM where
+  deploy Image Locally = linkedImageBlaze
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy Image Locally (Path Abs t) (GroundedUrlT HI.MarkupM) where
   deploy Image Locally i = do
     link <- pathUrl i
-    lift (linkedImageBlaze (T.pack $ show link))
+    lift (linkedImageBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy Image Locally (Path Rel t) (RelativeUrlT HI.MarkupM) where
   deploy Image Locally i = do
     link <- pathUrl i
-    lift (linkedImageBlaze (T.pack $ show link))
+    lift (linkedImageBlaze (printURI link))
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy Image Locally (Location Abs t) (GroundedUrlT HI.MarkupM) where
   deploy Image Locally i = do
     link <- locUrl i
-    lift (linkedImageBlaze (T.pack $ show link))
+    lift (linkedImageBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy Image Locally (Location Rel t) (RelativeUrlT HI.MarkupM) where
   deploy Image Locally i = do
     link <- locUrl i
-    lift (linkedImageBlaze (T.pack $ show link))
+    lift (linkedImageBlaze (printURI link))
 
 
 -- JavaScript
@@ -170,68 +171,68 @@
 
 instance ( Monad m
          ) => Deploy JavaScript Remote T.Text (L.HtmlT m) where
-  deploy JavaScript Remote link = linkedJavaScriptLucid link
+  deploy JavaScript Remote = linkedJavaScriptLucid
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy JavaScript Remote (Path Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy JavaScript Remote i = do
     link <- lift (pathUrl i)
-    linkedJavaScriptLucid (T.pack $ show link)
+    linkedJavaScriptLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy JavaScript Remote (Location Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy JavaScript Remote i = do
     link <- lift (locUrl i)
-    linkedJavaScriptLucid (T.pack $ show link)
+    linkedJavaScriptLucid (printURI link)
 
 
 -- Local
 
 instance ( Monad m
          ) => Deploy JavaScript Locally T.Text (L.HtmlT m) where
-  deploy JavaScript Locally link = linkedJavaScriptLucid link
+  deploy JavaScript Locally = linkedJavaScriptLucid
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy JavaScript Locally (Path Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy JavaScript Locally i = do
     link <- lift (pathUrl i)
-    linkedJavaScriptLucid (T.pack $ show link)
+    linkedJavaScriptLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy JavaScript Locally (Path Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy JavaScript Locally i = do
     link <- lift (pathUrl i)
-    linkedJavaScriptLucid (T.pack $ show link)
+    linkedJavaScriptLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy JavaScript Locally (Location Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy JavaScript Locally i = do
     link <- lift (locUrl i)
-    linkedJavaScriptLucid (T.pack $ show link)
+    linkedJavaScriptLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy JavaScript Locally (Location Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy JavaScript Locally i = do
     link <- lift (locUrl i)
-    linkedJavaScriptLucid (T.pack $ show link)
+    linkedJavaScriptLucid (printURI link)
 
 -- Inline
 
 instance ( Monad m
          ) => Deploy JavaScript Inline T.Text (L.HtmlT m) where
-  deploy JavaScript Inline i =
-    L.script_ [] i
+  deploy JavaScript Inline =
+    L.script_ []
 
 instance ( Monad m
          ) => Deploy JavaScript Inline LT.Text (L.HtmlT m) where
-  deploy JavaScript Inline i =
-    L.script_ [] i
+  deploy JavaScript Inline =
+    L.script_ []
 
 
 -- Blaze
@@ -240,60 +241,60 @@
 
 linkedJavaScriptBlaze :: T.Text -> HI.MarkupM ()
 linkedJavaScriptBlaze link =
-  H.script (H.toHtml ("" :: T.Text)) H.! (A.src $ H.toValue link)
+  H.script (H.toHtml ("" :: T.Text)) H.! A.src (H.toValue link)
 
-instance Deploy JavaScript Remote T.Text (HI.MarkupM) where
-  deploy JavaScript Remote link = linkedJavaScriptBlaze link
+instance Deploy JavaScript Remote T.Text HI.MarkupM where
+  deploy JavaScript Remote = linkedJavaScriptBlaze
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy JavaScript Remote (Path Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy JavaScript Remote i = do
     link <- pathUrl i
-    lift (linkedJavaScriptBlaze (T.pack $ show link))
+    lift (linkedJavaScriptBlaze (printURI link))
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy JavaScript Remote (Location Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy JavaScript Remote i = do
     link <- locUrl i
-    lift (linkedJavaScriptBlaze (T.pack $ show link))
+    lift (linkedJavaScriptBlaze (printURI link))
 
 
 -- Local
 
-instance Deploy JavaScript Locally T.Text (HI.MarkupM) where
-  deploy JavaScript Locally link = linkedJavaScriptBlaze link
+instance Deploy JavaScript Locally T.Text HI.MarkupM where
+  deploy JavaScript Locally = linkedJavaScriptBlaze
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy JavaScript Locally (Path Abs t) (GroundedUrlT HI.MarkupM) where
   deploy JavaScript Locally i = do
     link <- pathUrl i
-    lift (linkedJavaScriptBlaze (T.pack $ show link))
+    lift (linkedJavaScriptBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy JavaScript Locally (Path Rel t) (RelativeUrlT HI.MarkupM) where
   deploy JavaScript Locally i = do
     link <- pathUrl i
-    lift (linkedJavaScriptBlaze (T.pack $ show link))
+    lift (linkedJavaScriptBlaze (printURI link))
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy JavaScript Locally (Location Abs t) (GroundedUrlT HI.MarkupM) where
   deploy JavaScript Locally i = do
     link <- locUrl i
-    lift (linkedJavaScriptBlaze (T.pack $ show link))
+    lift (linkedJavaScriptBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy JavaScript Locally (Location Rel t) (RelativeUrlT HI.MarkupM) where
   deploy JavaScript Locally i = do
     link <- locUrl i
-    lift (linkedJavaScriptBlaze (T.pack $ show link))
+    lift (linkedJavaScriptBlaze (printURI link))
 
 -- Inline
 
-instance Deploy JavaScript Inline T.Text (HI.MarkupM) where
+instance Deploy JavaScript Inline T.Text HI.MarkupM where
   deploy JavaScript Inline i =
     H.script (H.toHtml i)
 
-instance Deploy JavaScript Inline LT.Text (HI.MarkupM) where
+instance Deploy JavaScript Inline LT.Text HI.MarkupM where
   deploy JavaScript Inline i =
     H.script (H.toHtml i)
 
@@ -311,68 +312,68 @@
 
 instance ( Monad m
          ) => Deploy Css Remote T.Text (L.HtmlT m) where
-  deploy Css Remote link = linkedCssLucid link
+  deploy Css Remote = linkedCssLucid
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy Css Remote (Path Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy Css Remote i = do
     link <- lift (pathUrl i)
-    linkedCssLucid (T.pack $ show link)
+    linkedCssLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy Css Remote (Location Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy Css Remote i = do
     link <- lift (locUrl i)
-    linkedCssLucid (T.pack $ show link)
+    linkedCssLucid (printURI link)
 
 
 -- Local
 
 instance ( Monad m
          ) => Deploy Css Locally T.Text (L.HtmlT m) where
-  deploy Css Locally link = linkedCssLucid link
+  deploy Css Locally = linkedCssLucid
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy Css Locally (Path Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy Css Locally i = do
     link <- lift (pathUrl i)
-    linkedCssLucid (T.pack $ show link)
+    linkedCssLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy Css Locally (Path Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy Css Locally i = do
     link <- lift (pathUrl i)
-    linkedCssLucid (T.pack $ show link)
+    linkedCssLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy Css Locally (Location Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy Css Locally i = do
     link <- lift (locUrl i)
-    linkedCssLucid (T.pack $ show link)
+    linkedCssLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy Css Locally (Location Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy Css Locally i = do
     link <- lift (locUrl i)
-    linkedCssLucid (T.pack $ show link)
+    linkedCssLucid (printURI link)
 
 -- Inline
 
 instance ( Monad m
          ) => Deploy Css Inline T.Text (L.HtmlT m) where
-  deploy Css Inline i =
-    L.style_ [] i
+  deploy Css Inline =
+    L.style_ []
 
 instance ( Monad m
          ) => Deploy Css Inline LT.Text (L.HtmlT m) where
-  deploy Css Inline i =
-    L.style_ [] i
+  deploy Css Inline =
+    L.style_ []
 
 instance ( Monad m
          ) => Deploy Css Inline C.Css (L.HtmlT m) where
@@ -390,62 +391,62 @@
          H.! A.type_ "text/css"
          H.! A.href (H.toValue link)
 
-instance Deploy Css Remote T.Text (HI.MarkupM) where
-  deploy Css Remote link = linkedCssBlaze link
+instance Deploy Css Remote T.Text HI.MarkupM where
+  deploy Css Remote = linkedCssBlaze
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy Css Remote (Path Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy Css Remote i = do
     link <- pathUrl i
-    lift (linkedCssBlaze (T.pack $ show link))
+    lift (linkedCssBlaze (printURI link))
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy Css Remote (Location Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy Css Remote i = do
     link <- locUrl i
-    lift (linkedCssBlaze (T.pack $ show link))
+    lift (linkedCssBlaze (printURI link))
 
 
 -- Local
 
-instance Deploy Css Locally T.Text (HI.MarkupM) where
-  deploy Css Locally link = linkedCssBlaze link
+instance Deploy Css Locally T.Text HI.MarkupM where
+  deploy Css Locally = linkedCssBlaze
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy Css Locally (Path Abs t) (GroundedUrlT HI.MarkupM) where
   deploy Css Locally i = do
     link <- pathUrl i
-    lift (linkedCssBlaze (T.pack $ show link))
+    lift (linkedCssBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy Css Locally (Path Rel t) (RelativeUrlT HI.MarkupM) where
   deploy Css Locally i = do
     link <- pathUrl i
-    lift (linkedCssBlaze (T.pack $ show link))
+    lift (linkedCssBlaze (printURI link))
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy Css Locally (Location Abs t) (GroundedUrlT HI.MarkupM) where
   deploy Css Locally i = do
     link <- locUrl i
-    lift (linkedCssBlaze (T.pack $ show link))
+    lift (linkedCssBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy Css Locally (Location Rel t) (RelativeUrlT HI.MarkupM) where
   deploy Css Locally i = do
     link <- locUrl i
-    lift (linkedCssBlaze (T.pack $ show link))
+    lift (linkedCssBlaze (printURI link))
 
 -- Inline
 
-instance Deploy Css Inline T.Text (HI.MarkupM) where
+instance Deploy Css Inline T.Text HI.MarkupM where
   deploy Css Inline i =
     H.style (H.toHtml i)
 
-instance Deploy Css Inline LT.Text (HI.MarkupM) where
+instance Deploy Css Inline LT.Text HI.MarkupM where
   deploy Css Inline i =
     H.style (H.toHtml i)
 
-instance Deploy Css Inline C.Css (HI.MarkupM) where
+instance Deploy Css Inline C.Css HI.MarkupM where
   deploy Css Inline i =
     H.style (H.toHtml (C.render i))
 
@@ -462,21 +463,21 @@
 
 instance ( Monad m
          ) => Deploy WebComponent Remote T.Text (L.HtmlT m) where
-  deploy WebComponent Remote link = linkedWebComponentLucid link
+  deploy WebComponent Remote = linkedWebComponentLucid
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy WebComponent Remote (Path Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy WebComponent Remote i = do
     link <- lift (pathUrl i)
-    linkedWebComponentLucid (T.pack $ show link)
+    linkedWebComponentLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (AbsoluteUrlT m)
          ) => Deploy WebComponent Remote (Location Abs t) (L.HtmlT (AbsoluteUrlT m)) where
   deploy WebComponent Remote i = do
     link <- lift (locUrl i)
-    linkedWebComponentLucid (T.pack $ show link)
+    linkedWebComponentLucid (printURI link)
 
 -- instance ( Monad m
 --          , MonadUrl Abs t (AbsoluteUrlT m)
@@ -486,42 +487,42 @@
 --   deploy WebComponent Remote i = do
 --     i' <- lift (toLocation i)
 --     link <- lift (locUrl i')
---     linkedWebComponentLucid (T.pack $ show link)
+--     linkedWebComponentLucid (printURI link)
 
 
 -- Local
 
 instance ( Monad m
          ) => Deploy WebComponent Locally T.Text (L.HtmlT m) where
-  deploy WebComponent Locally link = linkedWebComponentLucid link
+  deploy WebComponent Locally = linkedWebComponentLucid
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy WebComponent Locally (Path Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy WebComponent Locally i = do
     link <- lift (pathUrl i)
-    linkedWebComponentLucid (T.pack $ show link)
+    linkedWebComponentLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy WebComponent Locally (Path Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy WebComponent Locally i = do
     link <- lift (pathUrl i)
-    linkedWebComponentLucid (T.pack $ show link)
+    linkedWebComponentLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Abs t (GroundedUrlT m)
          ) => Deploy WebComponent Locally (Location Abs t) (L.HtmlT (GroundedUrlT m)) where
   deploy WebComponent Locally i = do
     link <- lift (locUrl i)
-    linkedWebComponentLucid (T.pack $ show link)
+    linkedWebComponentLucid (printURI link)
 
 instance ( Monad m
          , MonadUrl Rel t (RelativeUrlT m)
          ) => Deploy WebComponent Locally (Location Rel t) (L.HtmlT (RelativeUrlT m)) where
   deploy WebComponent Locally i = do
     link <- lift (locUrl i)
-    linkedWebComponentLucid (T.pack $ show link)
+    linkedWebComponentLucid (printURI link)
 
 -- instance ( Monad m
 --          , MonadUrl Abs t (GroundedUrlT m)
@@ -531,7 +532,7 @@
 --   deploy WebComponent Locally i = do
 --     i' <- lift (toLocation i)
 --     link <- lift (locUrl i')
---     linkedWebComponentLucid (T.pack $ show link)
+--     linkedWebComponentLucid (printURI link)
 --
 -- instance ( Monad m
 --          , MonadUrl Rel t (RelativeUrlT m)
@@ -541,7 +542,7 @@
 --   deploy WebComponent Locally i = do
 --     i' <- lift (toLocation i)
 --     link <- lift (locUrl i')
---     linkedWebComponentLucid (T.pack $ show link)
+--     linkedWebComponentLucid (printURI link)
 
 -- Blaze
 
@@ -552,48 +553,48 @@
   H.link H.! A.rel "import"
          H.! A.href (H.toValue link)
 
-instance Deploy WebComponent Remote T.Text (HI.MarkupM) where
-  deploy WebComponent Remote link = linkedWebComponentBlaze link
+instance Deploy WebComponent Remote T.Text HI.MarkupM where
+  deploy WebComponent Remote = linkedWebComponentBlaze
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy WebComponent Remote (Path Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy WebComponent Remote i = do
     link <- pathUrl i
-    lift (linkedWebComponentBlaze (T.pack $ show link))
+    lift (linkedWebComponentBlaze (printURI link))
 
 instance ( MonadUrl Abs t (AbsoluteUrlT HI.MarkupM)
          ) => Deploy WebComponent Remote (Location Abs t) (AbsoluteUrlT HI.MarkupM) where
   deploy WebComponent Remote i = do
     link <- locUrl i
-    lift (linkedWebComponentBlaze (T.pack $ show link))
+    lift (linkedWebComponentBlaze (printURI link))
 
 
 -- Local
 
-instance Deploy WebComponent Locally T.Text (HI.MarkupM) where
-  deploy WebComponent Locally link = linkedWebComponentBlaze link
+instance Deploy WebComponent Locally T.Text HI.MarkupM where
+  deploy WebComponent Locally = linkedWebComponentBlaze
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy WebComponent Locally (Path Abs t) (GroundedUrlT HI.MarkupM) where
   deploy WebComponent Locally i = do
     link <- pathUrl i
-    lift (linkedWebComponentBlaze (T.pack $ show link))
+    lift (linkedWebComponentBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy WebComponent Locally (Path Rel t) (RelativeUrlT HI.MarkupM) where
   deploy WebComponent Locally i = do
     link <- pathUrl i
-    lift (linkedWebComponentBlaze (T.pack $ show link))
+    lift (linkedWebComponentBlaze (printURI link))
 
 instance ( MonadUrl Abs t (GroundedUrlT HI.MarkupM)
          ) => Deploy WebComponent Locally (Location Abs t) (GroundedUrlT HI.MarkupM) where
   deploy WebComponent Locally i = do
     link <- locUrl i
-    lift (linkedWebComponentBlaze (T.pack $ show link))
+    lift (linkedWebComponentBlaze (printURI link))
 
 instance ( MonadUrl Rel t (RelativeUrlT HI.MarkupM)
          ) => Deploy WebComponent Locally (Location Rel t) (RelativeUrlT HI.MarkupM) where
   deploy WebComponent Locally i = do
     link <- locUrl i
-    lift (linkedWebComponentBlaze (T.pack $ show link))
+    lift (linkedWebComponentBlaze (printURI link))
 
