diff --git a/simple-templates.cabal b/simple-templates.cabal
--- a/simple-templates.cabal
+++ b/simple-templates.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                simple-templates
-version:             0.7.0.2
+version:             0.8.0.0
 synopsis:            A basic template language for the Simple web framework
 description:
   A basic template language for the Simple web framework. The language supports
@@ -30,8 +30,9 @@
     , Web.Simple.Templates.Types
   build-depends:
       base < 6
-    , aeson
+    , aeson >= 0.7
     , attoparsec
+    , scientific
     , text
     , unordered-containers
     , vector
@@ -43,10 +44,11 @@
   main-is: Spec.hs
   build-depends:
       base < 6
-    , aeson
+    , aeson >= 0.7
     , attoparsec
     , HUnit
     , hspec
+    , scientific
     , simple-templates
     , vector
   default-language: Haskell2010
diff --git a/src/Web/Simple/Templates/Language.hs b/src/Web/Simple/Templates/Language.hs
--- a/src/Web/Simple/Templates/Language.hs
+++ b/src/Web/Simple/Templates/Language.hs
@@ -37,11 +37,12 @@
 
 import Control.Applicative
 import qualified Data.HashMap.Strict as H
+import Data.Aeson
 import Data.Maybe
 import Data.Monoid
+import Data.Scientific
 import Data.Text (Text)
 import qualified Data.Text as T
-import Data.Aeson
 import qualified Data.Vector as V
 import qualified Data.Attoparsec.Text as A
 import Web.Simple.Templates.Parser
@@ -130,11 +131,18 @@
 valueToText val =
   case val of
     String str -> str
-    Number n -> T.pack $ show n
-    Bool b -> T.pack $ show b
+    Number n -> fromScientific n
+    Bool True -> "True"
+    Bool False -> "False"
     Array _ -> "[array]"
     Object _ -> "[object]"
     Null -> ""
+
+fromScientific :: Scientific -> Text
+fromScientific n
+  | e < 0 = T.pack $ show n
+  | otherwise = T.pack $ show $ coefficient n * 10 ^ e
+  where e = base10Exponent n
 
 compileTemplate :: Text -> Either String Template
 compileTemplate tmpl = evaluate <$>
diff --git a/src/Web/Simple/Templates/Parser.hs b/src/Web/Simple/Templates/Parser.hs
--- a/src/Web/Simple/Templates/Parser.hs
+++ b/src/Web/Simple/Templates/Parser.hs
@@ -132,8 +132,7 @@
                       A.satisfy (/= '"')
 
 pNumber :: A.Parser AST
-pNumber = ASTLiteral . Number . fromRational . toRational <$>
-  A.number
+pNumber = ASTLiteral . Number <$> A.rational
 
 pArray :: A.Parser AST
 pArray = do
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -2,9 +2,11 @@
 module Main where
 
 import Test.Hspec
+import qualified Web.Simple.Templates.LanguageSpec
 import qualified Web.Simple.Templates.ParserSpec
 
 main :: IO ()
 main = hspec $ do
+  Web.Simple.Templates.LanguageSpec.spec
   Web.Simple.Templates.ParserSpec.spec
 
