diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/src/Web/Page/Blaze.hs b/src/Web/Page/Blaze.hs
--- a/src/Web/Page/Blaze.hs
+++ b/src/Web/Page/Blaze.hs
@@ -1,13 +1,15 @@
-{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE
+    OverloadedStrings
+  #-}
 
 module Web.Page.Blaze
-    ( module Web.Page.Types
-    , template ) where
+  ( module X
+  , template
+  ) where
 
-import Web.Page.Types
+import Web.Page.Types as X
 
 import qualified Text.Blaze.Html5 as H
-import qualified Text.Blaze.Html5.Attributes as A
 
 import qualified Data.Text as T
 
diff --git a/src/Web/Page/Hastache.hs b/src/Web/Page/Hastache.hs
--- a/src/Web/Page/Hastache.hs
+++ b/src/Web/Page/Hastache.hs
@@ -1,11 +1,12 @@
 {-# LANGUAGE OverloadedStrings #-}
 
-module Web.Page.Hastache where
+module Web.Page.Hastache
+  ( module X
+  , template
+  ) where
 
-import Web.Page.Types
+import Web.Page.Types as X
 
-import Text.Hastache
-import Text.Hastache.Context
 import qualified Data.Text as T
 import qualified Data.Text.Lazy as LT
 
diff --git a/src/Web/Page/Lucid.hs b/src/Web/Page/Lucid.hs
--- a/src/Web/Page/Lucid.hs
+++ b/src/Web/Page/Lucid.hs
@@ -1,25 +1,26 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ExtendedDefaultRules #-}
-{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE
+    OverloadedStrings
+  , ExtendedDefaultRules
+  , BangPatterns
+  #-}
 
 module Web.Page.Lucid
-    ( module Web.Page.Types
-    , template ) where
+  ( module X
+  , template
+  ) where
 
-import Web.Page.Types
+import Web.Page.Types as X
 
 import Lucid
-import Lucid.Base
 
 import qualified Data.Text as T
 
-import Data.Monoid
 
 -- | Generic page template implemented in Lucid.
 template :: Monad m =>
             WebPage (HtmlT m ()) T.Text -- ^ Page information
          -> HtmlT m () -- ^ Content to insert in @\<body\>@
-         -> HtmlT m () 
+         -> HtmlT m ()
 template page content = doctypehtml_ $ mconcat $
   [ head_ [] $ mconcat $
       [ initScripts page
diff --git a/src/Web/Page/Types.hs b/src/Web/Page/Types.hs
--- a/src/Web/Page/Types.hs
+++ b/src/Web/Page/Types.hs
@@ -1,12 +1,12 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ExtendedDefaultRules #-}
-{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE
+    OverloadedStrings
+  , ExtendedDefaultRules
+  #-}
 
 module Web.Page.Types where
 
 import Data.Default
 import Data.Monoid
--- import Control.Lens
 
 -- | Generic layout for a web page. We keep the data type purely parametric to
 -- allow for record-syntax overloading / reassignment, like this:
@@ -15,22 +15,34 @@
 -- >  page :: WebPage (Html ()) T.Text
 -- @ page' = page \{pageTitle = "foo!"\}@
 --
-data WebPage markup attr = WebPage {           pageTitle :: attr -- ^ Page title
-                                   ,             favicon :: markup -- ^ Favicon tags
-                                   ,            metaVars :: markup -- ^ @\<meta\>@ tags
-                                   ,         initScripts :: markup -- ^ JavaScript to include at the top of the page
-                                   , beforeStylesScripts :: markup -- ^ JavaScript to include before @\<style\>@ tags
-                                   ,              styles :: markup -- ^ Styles
-                                   ,  afterStylesScripts :: markup -- ^ JavaScript to include after @\<style\>@ tags - ie: <http://modernizr.com Modernizr>
-                                   ,         bodyScripts :: markup -- ^ JavaScript to include at the base of @\<body\>@
-                                   }
-  deriving Show
+data WebPage markup attr = WebPage
+  { pageTitle           :: attr -- ^ Page title
+  , favicon             :: markup -- ^ Favicon tags
+  , metaVars            :: markup -- ^ @\<meta\>@ tags
+  , initScripts         :: markup -- ^ JavaScript to include at the top of the page
+  , beforeStylesScripts :: markup -- ^ JavaScript to include before @\<style\>@ tags
+  , styles              :: markup -- ^ Styles
+  , afterStylesScripts  :: markup -- ^ JavaScript to include after @\<style\>@ tags - ie: <http://modernizr.com Modernizr>
+  , bodyScripts         :: markup -- ^ JavaScript to include at the base of @\<body\>@
+  } deriving (Show, Eq, Ord)
 
--- makeLenses ''WebPage
 
+instance ( Monoid m
+         , Monoid a
+         ) => Monoid (WebPage m a) where
+  mempty = WebPage mempty mempty mempty mempty mempty mempty mempty mempty
+  mappend (WebPage t1 f1 m1 is1 bs1 s1 as1 b1) (WebPage t2 f2 m2 is2 bs2 s2 as2 b2) =
+    WebPage (t1 `mappend` t2)
+            (f1 `mappend` f2)
+            (m1 `mappend` m2)
+            (is1 `mappend` is2)
+            (bs1 `mappend` bs2)
+            (s1 `mappend` s2)
+            (as1 `mappend` as2)
+            (b1 `mappend` b2)
 
-instance (Monoid m, Monoid a) => Default (WebPage m a) where
-  def = WebPage mempty mempty mempty mempty mempty mempty mempty mempty
 
-emptyPage :: (Monoid m, Monoid a) => WebPage m a
-emptyPage = WebPage mempty mempty mempty mempty mempty mempty mempty mempty
+instance ( Monoid m
+         , Monoid a
+         ) => Default (WebPage m a) where
+  def = mempty
diff --git a/webpage.cabal b/webpage.cabal
--- a/webpage.cabal
+++ b/webpage.cabal
@@ -1,5 +1,5 @@
 Name:                   webpage
-Version:                0.0.3.1
+Version:                0.0.4
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                MIT
@@ -51,10 +51,8 @@
   Build-Depends:        base >= 4 && < 5
                       , lucid >= 2.5
                       , blaze-html
-                      , hastache
                       , text
                       , data-default
-                      -- , lens
 
 Source-Repository head
   Type:                 git
