diff --git a/Text/Julius.hs b/Text/Julius.hs
--- a/Text/Julius.hs
+++ b/Text/Julius.hs
@@ -10,8 +10,6 @@
 -- You might consider trying 'Text.Coffee', which compiles down to Javascript.
 --
 -- Further reading: <http://www.yesodweb.com/book/templates>
---
--- This module is currently in an identity crisis. Originally called Julius, now being changed to just Javascript (shakespeare-javascript)
 module Text.Julius
     ( -- * Functions
       -- ** Template-Reading Functions
@@ -29,9 +27,11 @@
       -- * Datatypes
     , JavascriptUrl
     , Javascript (..)
+    , RawJavascript (..)
 
       -- * Typeclass for interpolated variables
     , ToJavascript (..)
+    , RawJS (..)
 
       -- ** Rendering Functions
     , renderJavascript
@@ -50,6 +50,8 @@
 import qualified Data.Text as TS
 import qualified Data.Text.Lazy as TL
 import Text.Shakespeare
+import Data.Aeson (Value)
+import Data.Aeson.Encode (fromValue)
 
 renderJavascript :: Javascript -> TL.Text
 renderJavascript (Javascript b) = toLazyText b
@@ -77,11 +79,26 @@
 -- | A typeclass for types that can be interpolated in CoffeeScript templates.
 class ToJavascript a where
     toJavascript :: a -> Builder
+#ifndef SAFER_INTERPOLATION
 instance ToJavascript [Char] where toJavascript = fromLazyText . TL.pack
 instance ToJavascript TS.Text where toJavascript = fromText
 instance ToJavascript TL.Text where toJavascript = fromLazyText
 instance ToJavascript Javascript where toJavascript = unJavascript
 instance ToJavascript Builder where toJavascript = id
+#endif
+instance ToJavascript Value where toJavascript = fromValue
+
+newtype RawJavascript = RawJavascript Builder
+instance ToJavascript RawJavascript where
+    toJavascript (RawJavascript a) = a
+
+class RawJS a where
+    rawJS :: a -> RawJavascript
+
+instance RawJS [Char] where rawJS = RawJavascript . fromLazyText . TL.pack
+instance RawJS TS.Text where rawJS = RawJavascript . fromText
+instance RawJS TL.Text where rawJS = RawJavascript . fromLazyText
+instance RawJS Builder where rawJS = RawJavascript
 
 javascriptSettings :: Q ShakespeareSettings
 javascriptSettings = do
diff --git a/shakespeare-js.cabal b/shakespeare-js.cabal
--- a/shakespeare-js.cabal
+++ b/shakespeare-js.cabal
@@ -1,5 +1,5 @@
 name:            shakespeare-js
-version:         1.0.1
+version:         1.0.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -31,7 +31,8 @@
     build-depends:   base             >= 4       && < 5
                    , shakespeare      >= 1.0.2   && < 1.1
                    , template-haskell
-                   , text             >= 0.7     && < 0.12
+                   , text             >= 0.7
+                   , aeson            >= 0.5
 
     exposed-modules:
                      Text.Julius
@@ -64,11 +65,12 @@
     ghc-options:   -Wall
     build-depends: shakespeare-js
                  , shakespeare
-                 , base             >= 4       && < 5
+                 , base
                  , HUnit
                  , hspec            >= 1.3
-                 , text             >= 0.7     && < 0.12
+                 , text
                  , template-haskell
+                 , aeson
 
 -- cabal bug
 --    if flag(test_coffee)
diff --git a/test.hs b/test.hs
--- a/test.hs
+++ b/test.hs
@@ -1,4 +1,4 @@
-import Test.Hspec.Monadic
+import Test.Hspec
 import ShakespeareJsTest (specs)
 
 main :: IO ()
diff --git a/test/ShakespeareJsTest.hs b/test/ShakespeareJsTest.hs
--- a/test/ShakespeareJsTest.hs
+++ b/test/ShakespeareJsTest.hs
@@ -18,6 +18,7 @@
 import qualified Data.List as L
 import Data.Text (Text, pack, unpack)
 import Data.Monoid (mappend)
+import Data.Aeson (toJSON)
 
 join :: [String] -> String
 #ifdef TEST_COFFEE
@@ -31,7 +32,7 @@
   it "julius" $ do
     let var = "x=2"
     let urlp = (Home, [(pack "p", pack "q")])
-    flip jelper [quote|['שלום', @{Home}, #{var}, '@?{urlp}', ^{jmixin} ]|]
+    flip jelper [quote|['שלום', @{Home}, #{rawJS var}, '@?{urlp}', ^{jmixin} ]|]
       $ intercalate " "
         [ "['שלום',"
         , "url, " ++ var ++ ","
@@ -83,7 +84,7 @@
 #ifdef TEST_COFFEE
          [quote|[%{Data.List.reverse foo}, %{L.reverse foo}, %{show double}, %{show int}]|]
 #else
-         [quote|[#{Data.List.reverse foo}, #{L.reverse foo}, #{show double}, #{show int}]|]
+         [quote|[#{rawJS $ Data.List.reverse foo}, #{rawJS $ L.reverse foo}, #{rawJS $ show double}, #{rawJS $ show int}]|]
 #endif
 
 
@@ -96,10 +97,12 @@
 
   it "dollar operator" $ do
     let val = (1 :: Int, (2 :: Int, 3 :: Int))
-    jelper "2" [quote|#{ show $ fst $ snd val }|]
-    jelper "2" [quote|#{ show $ fst $ snd $ val}|]
+    jelper "2" [quote|#{ rawJS $ show $ fst $ snd val }|]
+    jelper "2" [quote|#{ rawJS $ show $ fst $ snd $ val}|]
 
   it "empty file" $ jelper "" [quote||]
+
+  it "JSON data" $ jelper "\"Hello \\\"World!\\\"\"" [julius|#{toJSON "Hello \"World!\""}|]
 
 
 
diff --git a/test/juliuses/external1.julius b/test/juliuses/external1.julius
--- a/test/juliuses/external1.julius
+++ b/test/juliuses/external1.julius
@@ -1,5 +1,5 @@
 שלום
-#{var}
+#{rawJS var}
 @{Home}
 @?{urlp}
 ^{jmixin}
