diff --git a/heist.cabal b/heist.cabal
--- a/heist.cabal
+++ b/heist.cabal
@@ -1,5 +1,5 @@
 name:           heist
-version:        0.14.0.1
+version:        0.14.1
 synopsis:       An Haskell template system supporting both HTML5 and XML.
 description:
     Heist is a powerful template system that supports both HTML5 and XML.
@@ -158,7 +158,7 @@
     process                    >= 1.1     && < 1.3,
     random                     >= 1.0.1.0 && < 1.2,
     text                       >= 0.10    && < 1.3,
-    time                       >= 1.1     && < 1.5,
+    time                       >= 1.1     && < 1.6,
     transformers               >= 0.3     && < 0.5,
     unordered-containers       >= 0.1.4   && < 0.3,
     vector                     >= 0.9     && < 0.11,
diff --git a/src/Heist/Compiled.hs b/src/Heist/Compiled.hs
--- a/src/Heist/Compiled.hs
+++ b/src/Heist/Compiled.hs
@@ -23,6 +23,8 @@
   -- * Functions for manipulating lists of compiled splices
   , textSplice
   , nodeSplice
+  , xmlNodeSplice
+  , htmlNodeSplice
   , pureSplice
 
   , deferMany
diff --git a/src/Heist/Compiled/Internal.hs b/src/Heist/Compiled/Internal.hs
--- a/src/Heist/Compiled/Internal.hs
+++ b/src/Heist/Compiled/Internal.hs
@@ -597,6 +597,20 @@
 
 
 ------------------------------------------------------------------------------
+-- | Converts a pure XML Node splice function to a pure Builder splice
+-- function.
+xmlNodeSplice :: (a -> [X.Node]) -> a -> Builder
+xmlNodeSplice f = X.renderXmlFragment X.UTF8 . f
+
+
+------------------------------------------------------------------------------
+-- | Converts a pure HTML Node splice function to a pure Builder splice
+-- function.
+htmlNodeSplice :: (a -> [X.Node]) -> a -> Builder
+htmlNodeSplice f = X.renderHtmlFragment X.UTF8 . f
+
+
+------------------------------------------------------------------------------
 -- | Converts a pure Builder splice function into a monadic splice function
 -- of a RuntimeSplice.
 pureSplice :: Monad n => (a -> Builder) -> RuntimeSplice n a -> Splice n
diff --git a/src/Heist/Splices/Apply.hs b/src/Heist/Splices/Apply.hs
--- a/src/Heist/Splices/Apply.hs
+++ b/src/Heist/Splices/Apply.hs
@@ -55,7 +55,7 @@
               (return []) `orError` err
   where
     err = "template recursion exceeded max depth, "++
-          "you probably have infinite splice recursion!"
+          "you probably have infinite splice recursion!" :: String
     treeMap :: [X.Node] -> X.Node -> [X.Node]
     treeMap ns n@(X.Element nm _ cs)
       | nm == paramTag = ns
diff --git a/src/Heist/TemplateDirectory.hs b/src/Heist/TemplateDirectory.hs
--- a/src/Heist/TemplateDirectory.hs
+++ b/src/Heist/TemplateDirectory.hs
@@ -101,4 +101,4 @@
 leftPass e m = either (return . Left . loadError . concat)
                       (liftM Right . m) e
   where
-    loadError = (++) "Error loading templates: "
+    loadError = (++) ("Error loading templates: " :: String)
