diff --git a/happstack-hsp.cabal b/happstack-hsp.cabal
--- a/happstack-hsp.cabal
+++ b/happstack-hsp.cabal
@@ -1,5 +1,5 @@
 Name:                happstack-hsp
-Version:             6.0.0
+Version:             6.0.1
 Synopsis:            Support for using HSP templates in Happstack
 Description:         Happstack is a web application framework. HSP is an XML templating solution. This package makes it easy to use HSP templates with Happstack.
 Homepage:            http://www.happstack.com/
@@ -7,7 +7,7 @@
 License-file:        LICENSE
 Author:              Jeremy Shaw
 Maintainer:          Happstack team <happs@googlegroups.com>
--- Copyright:           
+Copyright:           2011 Jeremy Shaw
 Category:            Web
 Build-type:          Simple
 Cabal-version:       >=1.6
diff --git a/src/HSP/ServerPartT.hs b/src/HSP/ServerPartT.hs
--- a/src/HSP/ServerPartT.hs
+++ b/src/HSP/ServerPartT.hs
@@ -73,6 +73,12 @@
 instance (Monad m) => EmbedAsChild (ServerPartT m) String where
     asChild = XMLGenT . return . (:[]) . SChild . pcdata
 
+instance (Monad m) => EmbedAsChild (ServerPartT m) Int where
+    asChild = XMLGenT . return . (:[]) . SChild . pcdata . show
+
+instance (Monad m) => EmbedAsChild (ServerPartT m) Integer where
+    asChild = XMLGenT . return . (:[]) . SChild . pcdata . show
+
 instance (Monad m) => EmbedAsChild (ServerPartT m) XML where
     asChild = XMLGenT . return . (:[]) . SChild
 
diff --git a/src/Happstack/Server/HSP/HTML.hs b/src/Happstack/Server/HSP/HTML.hs
--- a/src/Happstack/Server/HSP/HTML.hs
+++ b/src/Happstack/Server/HSP/HTML.hs
@@ -1,8 +1,11 @@
+-- | support for using HSP+Happstack for rendering HTML 
 {-# LANGUAGE FlexibleInstances, FlexibleContexts #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-orphans -F -pgmFtrhsx #-}
 module Happstack.Server.HSP.HTML
-  ( webHSP
+  ( defaultTemplate
+  , webHSP
   , webHSP'
+  , module HSP
   ) where
 
 import Control.Monad.Trans (MonadIO(), liftIO)
@@ -11,16 +14,11 @@
 import Control.Monad (liftM)
 import Happstack.Server
   ( ToMessage(toMessage, toContentType, toResponse)
-  , Response()
+  , Response
   )
 import HSP
-  ( HSP()
-  , XML()
-  , XMLMetaData(XMLMetaData, contentType)
-  , evalHSP
-  , html4Strict
-  , renderAsHTML
-  )
+import HSP.ServerPartT ()
+import qualified HSX.XMLGenerator as HSX
 
 instance ToMessage XML where
     toContentType _ = P.pack "text/html;charset=utf-8"
@@ -34,13 +32,31 @@
     toMessage (Nothing, xml) =
         L.fromString (renderAsHTML xml)
 
--- | Converts a @HSP XML@ to a Happstack Response.
+-- | A generic webpage template
+defaultTemplate :: (XMLGenerator m, EmbedAsChild m headers, EmbedAsChild m body) => 
+                   String   -- ^ text to use in \<title\> tag
+                -> headers  -- ^ extra headers to insert in \<head\> tag. Use @()@ if none.
+                -> body     -- ^ content to put between the \<body\> tags.
+                -> m (HSX.XML m)
+defaultTemplate title headers body =
+    unXMLGenT $
+    <html>
+     <head>
+      <title><% title %> </title>
+      <% headers %>
+     </head>
+     <body>
+      <% body %>
+     </body>
+    </html>
+
+-- | Converts a @HSP XML@ to a Happstack 'Response'.
 -- Since @HSP XML@ is the type returned by using literal HTML syntax
--- with HSP, you can wrap up your HTML as webHSP $ <html>...</html>
+-- with HSP, you can wrap up your HTML as webHSP $ \<html\>...\</html\>
 -- to use it with Happstack.
 webHSP :: (MonadIO m) => HSP XML -> m Response
 webHSP = webHSP' Nothing
 
--- | webHSP with XMLMetaData
+-- | webHSP with 'XMLMetaData'
 webHSP' :: (MonadIO m) => Maybe XMLMetaData -> HSP XML -> m Response
 webHSP' metadata hsp = toResponse `liftM` liftIO (evalHSP metadata hsp)
