diff --git a/Text/Cassius.hs b/Text/Cassius.hs
--- a/Text/Cassius.hs
+++ b/Text/Cassius.hs
@@ -28,6 +28,8 @@
 import Data.Bits
 import System.IO.Unsafe (unsafePerformIO)
 import Text.Utf8
+import qualified Data.Text as TS
+import qualified Data.Text.Lazy as TL
 
 data Color = Color Word8 Word8 Word8
     deriving Show
@@ -67,9 +69,11 @@
     deriving Monoid
 type Cassius url = (url -> [(String, String)] -> String) -> Css
 
-class ToCss a where
+class ToCss a where -- FIXME use Text instead of String for efficiency? or a builder directly?
     toCss :: a -> String
 instance ToCss [Char] where toCss = id
+instance ToCss TS.Text where toCss = TS.unpack
+instance ToCss TL.Text where toCss = TL.unpack
 
 contentPairToContents :: ContentPair -> Contents
 contentPairToContents (x, y) = concat [x, ContentRaw ":" : y]
diff --git a/Text/Hamlet/Quasi.hs b/Text/Hamlet/Quasi.hs
--- a/Text/Hamlet/Quasi.hs
+++ b/Text/Hamlet/Quasi.hs
@@ -28,10 +28,13 @@
 import qualified Data.ByteString.Char8 as S8
 import Data.Monoid (Monoid (..))
 import Blaze.ByteString.Builder (Builder, fromByteString, toLazyByteString)
-import Blaze.ByteString.Builder.Html.Utf8 (fromHtmlEscapedString)
+import Blaze.ByteString.Builder.Html.Utf8
+    (fromHtmlEscapedString, fromHtmlEscapedText, fromHtmlEscapedLazyText)
 import Data.Maybe (fromMaybe)
 import Data.String
 import Text.Utf8
+import qualified Data.Text as TS
+import qualified Data.Text.Lazy as TL
 
 instance IsString Html where
     fromString = Html . fromHtmlEscapedString
@@ -42,6 +45,10 @@
     toHtml = Html . fromHtmlEscapedString
 instance ToHtml Html where
     toHtml = id
+instance ToHtml TS.Text where
+    toHtml = Html . fromHtmlEscapedText
+instance ToHtml TL.Text where
+    toHtml = Html . fromHtmlEscapedLazyText
 
 type Scope = [(Ident, Exp)]
 
diff --git a/Text/Julius.hs b/Text/Julius.hs
--- a/Text/Julius.hs
+++ b/Text/Julius.hs
@@ -21,6 +21,8 @@
 import Data.Monoid
 import System.IO.Unsafe (unsafePerformIO)
 import Text.Utf8
+import qualified Data.Text as TS
+import qualified Data.Text.Lazy as TL
 
 renderJavascript :: Javascript -> L.ByteString
 renderJavascript (Javascript b) = toLazyByteString b
@@ -32,9 +34,11 @@
     deriving Monoid
 type Julius url = (url -> [(String, String)] -> String) -> Javascript
 
-class ToJavascript a where
+class ToJavascript a where -- FIXME use Text instead of String for efficiency? or a builder directly?
     toJavascript :: a -> String
 instance ToJavascript [Char] where toJavascript = id
+instance ToJavascript TS.Text where toJavascript = TS.unpack
+instance ToJavascript TL.Text where toJavascript = TL.unpack
 
 data Deref = DerefLeaf String
            | DerefBranch Deref Deref
diff --git a/hamlet.cabal b/hamlet.cabal
--- a/hamlet.cabal
+++ b/hamlet.cabal
@@ -1,5 +1,5 @@
 name:            hamlet
-version:         0.6.0.1
+version:         0.6.0.2
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
