diff --git a/Data/Text/Template.hs b/Data/Text/Template.hs
--- a/Data/Text/Template.hs
+++ b/Data/Text/Template.hs
@@ -13,7 +13,7 @@
 --      but are not part of the placeholder, such as
 --      \"${noun}ification\".
 --
--- Any other apperance of \"$\" in the string will result in an
+-- Any other appearance of \"$\" in the string will result in an
 -- 'Prelude.error' being raised.
 --
 -- If you render the same template multiple times it's faster to first
@@ -57,7 +57,7 @@
 
 -- -----------------------------------------------------------------------------
 
--- | A repesentation of a 'Data.Text' template, supporting efficient
+-- | A representation of a 'Data.Text' template, supporting efficient
 -- rendering.
 newtype Template = Template [Frag]
 
@@ -96,8 +96,30 @@
 
 -- | Creates a template from a template string.
 template :: T.Text -> Template
-template = runParser pTemplate
+template = Template . combineLits . runParser pFrags
 
+combineLits :: [Frag] -> [Frag]
+combineLits [] = []
+combineLits xs =
+    let (lits,xs') = span isLit xs
+    in case lits of
+         []    -> gatherVars xs'
+         [lit] -> lit : gatherVars xs'
+         _     -> Lit (T.concat (map fromLit lits)) : gatherVars xs'
+  where
+    gatherVars [] = []
+    gatherVars ys =
+      let (vars,ys') = span isVar ys
+      in vars ++ combineLits ys'
+
+    isLit (Lit _) = True
+    isLit _       = False
+
+    isVar = not . isLit
+
+    fromLit (Lit v) = v
+    fromLit _       = undefined
+
 -- | Performs the template substitution, returning a new 'LT.Text'.
 render :: Template -> Context -> LT.Text
 render (Template frags) ctxFunc = LT.fromChunks $ map renderFrag frags
@@ -139,9 +161,6 @@
 
 -- -----------------------------------------------------------------------------
 -- Template parser
-
-pTemplate :: Parser Template
-pTemplate = fmap Template pFrags
 
 pFrags :: Parser [Frag]
 pFrags = do
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Johan Tibell 2007
+Copyright (c) 2007-2010, Johan Tibell
 
 All rights reserved.
 
diff --git a/Setup.lhs b/Setup.lhs
--- a/Setup.lhs
+++ b/Setup.lhs
diff --git a/template.cabal b/template.cabal
--- a/template.cabal
+++ b/template.cabal
@@ -1,5 +1,5 @@
 name:                template
-version:             0.2
+version:             0.2.0.1
 description:
   Simple string substitution library that supports \"$\"-based
   substitution.  Meant to be used when Text.Printf or string
@@ -19,9 +19,9 @@
   exposed-modules:  Data.Text.Template
 
   build-depends:
-    base       < 5,
-    mtl,
-    text == 0.7.*
+    base < 5,
+    mtl < 1.2,
+    text >= 0.7.2 && < 0.11
 
   ghc-options: -funbox-strict-fields -Wall
   if impl(ghc >= 6.8)
