diff --git a/README.SNAP.md b/README.SNAP.md
--- a/README.SNAP.md
+++ b/README.SNAP.md
@@ -1,16 +1,15 @@
 Snap Framework
 --------------
 
-This is the first developer prerelease of the Snap framework.  Snap is a simple
-and fast web development framework and server written in Haskell. For more
-information or to download the latest version, you can visit the Snap project
-website at http://snapframework.com/.
+Snap is a simple and fast web development framework and server written in
+Haskell. For more information or to download the latest version, you can visit
+the Snap project website at http://snapframework.com/.
 
 
 Snap Status and Features
 ------------------------
 
-This developer prerelease contains only the Snap core system, namely:
+The Snap core system consists of:
 
   * a high-speed HTTP server, with an optional high-concurrency backend using
     the [libev](http://software.schmorp.de/pkg/libev.html) library
diff --git a/heist.cabal b/heist.cabal
--- a/heist.cabal
+++ b/heist.cabal
@@ -1,5 +1,5 @@
 name:           heist
-version:        0.5.1.1
+version:        0.5.2
 synopsis:       An xhtml templating system
 description:    An xhtml templating system
 license:        BSD3
@@ -83,7 +83,7 @@
     attoparsec >= 0.8.1 && < 0.9,
     attoparsec-text >= 0.8 && < 0.9,
     base >= 4 && < 5,
-    blaze-builder == 0.2.*,
+    blaze-builder >= 0.2 && <0.4,
     bytestring,
     containers,
     directory,
diff --git a/src/Text/Templating/Heist/Internal.hs b/src/Text/Templating/Heist/Internal.hs
--- a/src/Text/Templating/Heist/Internal.hs
+++ b/src/Text/Templating/Heist/Internal.hs
@@ -96,7 +96,7 @@
 ------------------------------------------------------------------------------
 -- | Converts 'Text' to a splice returning a single 'TextNode'.
 textSplice :: (Monad m) => Text -> Splice m
-textSplice = return . (:[]) . X.TextNode
+textSplice t = return [X.TextNode t]
 
 
 ------------------------------------------------------------------------------
@@ -502,7 +502,7 @@
             -> Text
             -> TemplateState m
             -> TemplateState m
-bindString n v = bindSplice n $ return [X.TextNode v]
+bindString n = bindSplice n . textSplice
 
 
 ------------------------------------------------------------------------------
diff --git a/src/Text/Templating/Heist/Splices/Html.hs b/src/Text/Templating/Heist/Splices/Html.hs
--- a/src/Text/Templating/Heist/Splices/Html.hs
+++ b/src/Text/Templating/Heist/Splices/Html.hs
@@ -27,8 +27,9 @@
     children <- runNodeList $ X.childNodes node
     let (heads, mnode) = extractHeads $ node { X.elementChildren = children }
         new (X.Element t a c) = X.Element t a $
-            X.Element "head" [] (nub heads) : c
+            X.Element "head" [] heads : c
         new n = n
+    stopRecursion
     return [maybe node new mnode]
 
 ------------------------------------------------------------------------------
diff --git a/test/heist-testsuite.cabal b/test/heist-testsuite.cabal
--- a/test/heist-testsuite.cabal
+++ b/test/heist-testsuite.cabal
@@ -4,33 +4,33 @@
 cabal-version:  >= 1.6
 
 Executable testsuite
-   hs-source-dirs:  ../src suite
-   main-is:         TestSuite.hs
+  hs-source-dirs:  ../src suite
+  main-is:         TestSuite.hs
 
-   build-depends:
-     QuickCheck >= 2,
-     attoparsec >= 0.8.1 && < 0.9,
-     attoparsec-text >= 0.8 && < 0.9,
-     base >= 4 && < 5,
-     blaze-builder == 0.2.*,
-     bytestring,
-     containers,
-     directory,
-     directory-tree,
-     process,
-     filepath,
-     xmlhtml == 0.1.*,
-     HUnit >= 1.2 && < 2,
-     mtl >= 2,
-     random,
-     MonadCatchIO-transformers >= 0.2.1 && < 0.3,
-     test-framework >= 0.3.1 && <0.4,
-     test-framework-hunit >= 0.2.5 && < 0.3,
-     test-framework-quickcheck2 >= 0.2.6 && < 0.3,
-     text >= 0.10 && < 0.12,
-     time,
-     transformers
-     
-   ghc-options: -O2 -Wall -fhpc -fwarn-tabs -funbox-strict-fields -threaded
-   Extensions: OverloadedStrings
+  build-depends:
+    QuickCheck >= 2,
+    attoparsec >= 0.8.1 && < 0.9,
+    attoparsec-text >= 0.8 && < 0.9,
+    base >= 4 && < 5,
+    blaze-builder >= 0.2 && <0.4,
+    bytestring,
+    containers,
+    directory,
+    directory-tree,
+    process,
+    filepath,
+    xmlhtml == 0.1.*,
+    HUnit >= 1.2 && < 2,
+    mtl >= 2,
+    random,
+    MonadCatchIO-transformers >= 0.2.1 && < 0.3,
+    test-framework >= 0.3.1 && <0.4,
+    test-framework-hunit >= 0.2.5 && < 0.3,
+    test-framework-quickcheck2 >= 0.2.6 && < 0.3,
+    text >= 0.10 && < 0.12,
+    time,
+    transformers
+    
+  ghc-options: -O2 -Wall -fhpc -fwarn-tabs -funbox-strict-fields -threaded
+  Extensions: OverloadedStrings
 
