diff --git a/Yst/Data.hs b/Yst/Data.hs
--- a/Yst/Data.hs
+++ b/Yst/Data.hs
@@ -30,23 +30,22 @@
 import Data.List (sortBy, nub, isPrefixOf)
 import Text.ParserCombinators.Parsec
 import System.FilePath (takeExtension)
-import Prelude hiding (catch)
-import Control.Exception (catch, SomeException)
+import qualified Control.Exception as E
 
 findData :: Site -> FilePath -> IO FilePath
 findData = searchPath . dataDir
 
 getData :: Site -> DataSpec -> IO Node
 getData site (DataFromFile file opts) = do
-  raw <- catch (findData site file >>= readDataFile)
-               (\(e::SomeException) -> do
+  raw <- E.catch (findData site file >>= readDataFile)
+               (\(e::E.SomeException) -> do
                   errorExit 15 ("Error reading data from " ++ file ++ ": "
                      ++ show e)
                   return undefined)
   return $ foldl applyDataOption raw opts
 getData site (DataFromSqlite3 database query opts) = do
-  raw <- catch (findData site database >>= \d -> readSqlite3 d query)
-               (\(e::SomeException) -> do
+  raw <- E.catch (findData site database >>= \d -> readSqlite3 d query)
+               (\(e::E.SomeException) -> do
                   errorExit 15 ("Error reading Sqlite3 database from " ++
                     database ++ ": " ++ show e)
                   return undefined)
diff --git a/Yst/Render.hs b/Yst/Render.hs
--- a/Yst/Render.hs
+++ b/Yst/Render.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}
 {-
 Copyright (C) 2009 John MacFarlane <jgm@berkeley.edu>
 
@@ -23,11 +24,13 @@
 import Yst.Data
 import System.Directory
 import Text.Pandoc hiding (Format)
-import Text.XHtml hiding (option, (</>))
+import Lucid
 import Data.Char
 import Data.List (intercalate)
 import Data.List.Split (wordsBy)
 import Text.StringTemplate
+import Data.Text.Lazy (unpack)
+import Data.Text (pack)
 import Data.Maybe (fromMaybe)
 import System.FilePath
 -- Note: ghc >= 6.12 (base >=4.2) supports unicode through iconv
@@ -65,22 +68,20 @@
 dropCommon xs ys = (xs,ys)
 
 renderNav :: String -> [NavNode] -> String
-renderNav targeturl nodes = renderHtmlFragment $
-  ulist ! [theclass "nav"] << map (renderNavNode targeturl) nodes
+renderNav targeturl nodes = unpack $ renderText $
+  ul_ [class_ "nav"] $ mapM_ (renderNavNode targeturl) nodes
 
-renderNavNode :: String -> NavNode -> Html
+renderNavNode :: String -> NavNode -> Html ()
 renderNavNode targeturl (NavPage tit pageurl) =
-  li ! attrs << hotlink pageurl' << tit
+  li_ [class_ "current" | pageurl == targeturl] (a_ [href_ pageurl'] (toHtml tit))
     where targetdir = takeUrlDir targeturl
-          pageurl' = relUrl targetdir pageurl
-          attrs = if pageurl == targeturl
-                     then [theclass "current"]
-                     else []
+          pageurl' = pack $ relUrl targetdir pageurl
 renderNavNode targeturl (NavMenu tit nodes) =
-  li ! attrs << [ toHtml $ hotlink "#" << (tit ++ " »")
-                , ulist ! attrs << map (renderNavNode targeturl) nodes ]
+  li_ [class_ "dropdown dropdown-submenu"] $
+    do a_ [href_ "#", class_ "dropdown-toggle", data_ "toggle" "dropdown"]
+             (toHtml (tit ++ " »"))
+       ul_ [class_ "dropdown-menu"] (mapM_ (renderNavNode targeturl) nodes)
     where active = targeturl `isInNavNodes` nodes
-          attrs = if active then [theclass "active"] else []
           isInNavNodes u = any (isInNavNode u)
           isInNavNode u (NavPage _ u') = u == u'
           isInNavNode u (NavMenu _ ns) = u `isInNavNodes` ns
@@ -111,8 +112,8 @@
   attrs <- forM (pageData page) $ \(k, v) -> getData site v >>= \n -> return (k,n)
   todaysDate <- liftM utctDay getCurrentTime
   let root' = case length (filter (=='/') $ pageUrl page) of
-                    0  -> ""
-                    n  -> concat $ replicate n "../"
+                    0  -> []
+                    n  -> concat $ replicate n ("../" :: String)
   rawContents <-
     case sourceFile page of
           SourceFile sf   -> liftM (filter (/='\r')) $ searchPath srcDirs sf >>= readFile
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+yst 0.5 (released 13 Mar 2015)
+
+  * Use Bootstrap 3 instead of YUI CSS framework.
+  * Use lucid instead of xhtml to generate menu.
+
 yst 0.4.1.1 (released 29 Sep 2014)
 
   * Allow compilation with latest aeson, pandoc.
diff --git a/demo/files/css/ie.css b/demo/files/css/ie.css
deleted file mode 100644
--- a/demo/files/css/ie.css
+++ /dev/null
@@ -1,20 +0,0 @@
-/* ie.css */
-body {text-align:center;}
-.container {text-align:left;}
-* html .column {overflow-x:hidden;}
-* html legend {margin:-18px -8px 16px 0;padding:0;}
-ol {margin-left:2em;}
-sup {vertical-align:text-top;}
-sub {vertical-align:text-bottom;}
-html>body p code {*white-space:normal;}
-hr {margin:-8px auto 11px;}
-.container ul { list-style: disc outside; margin-left: 2em; } /* IE can't handle :before and :after */
-.container ul li { text-indent: 0; margin-left: 0; }
-.container legend { margin-bottom: 1.6em; } /* IE form margin bug */
-sup, sub { font-size: 100%; } /* IE superscript & subscript bug */
-.container blockquote p, #content blockquote ul, #content blockquote ol, #content blockquote dl, #content blockquote pre, #content blockquote address, 
-.container blockquote table, #content blockquote form, #content blockquote h1, #content blockquote h2, #content blockquote h3, #content blockquote h4, #content blockquote h5, #content blockquote h6 { margin-top: .8em; margin-bottom: .8em; } /* IE can't handle :first-child */
-* html .container textarea, * html .container input { padding: 0; } /* IE < 7 form fix */
-.container input[type='submit'], .container input[type='button'] { padding: 0; } /* IE 7 button fix */
-.container legend+* { margin-top: 0; } /* we already added legend margin */
-a abbr, a acronym { text-decoration: underline; } /* IE 7 bug */
diff --git a/demo/files/css/screen.css b/demo/files/css/screen.css
--- a/demo/files/css/screen.css
+++ b/demo/files/css/screen.css
@@ -1,51 +1,59 @@
-@import url("reset-fonts-grids.css");
-@import url("base-min.css");
 @import url("hk-pyg.css");
 
-html { background: #f9f9f9; color: black; } 
-
-hr { height: 1px; color: #aaa; background-color: #aaa; border: 0; margin: .2em 0 .2em 0; }
-
-h1, h2, h3, h4, h5, h6 { font-weight: normal; border-bottom: 1px solid black; }
-
-h1 { font-size: 153.9%; margin: 1.07em 0 .535em; }
-h2 { font-size: 138.5%; margin: 1.14em 0 .57em; }
-h3 { font-size: 123.1%; margin: 1.23em 0 .615em; }
-h4 { font-size: 116%; margin: 1.33em 0 .67em; }
-h5 { font-size: 108%; margin: 1.6em 0 .8em; }
-h6 { font-size: 100%; margin: 1.6em 0 .8em; }
+body { padding: 10px;
+      font-size: 14pt;
+      font-family: Arial, sans-serif;
+      line-height: 1.4em; }
 
-ul { list-style-type: square; }
-dt { font-weight: bold; margin-bottom: .1em; }
+header h1 { font-size: 42pt; }
 
-table { border-top: 1px solid #ccc;  border-left: 1px solid #ccc; }
-th, td { border-bottom: 1px solid #ddd; border-right: 1px solid #ccc; }
+main { max-width: 46em;
+       border-left: 1px solid grey; }
 
-blockquote { padding: 0 1.6em; color: #666; }
+nav { margin-top: 1em; }
 
-/* COLORS */
+footer { padding: 1em; color: #888; text-align: center; font-size: 93%; }
 
-a:link { text-decoration: underline; color: #36c; }
-a:visited { text-decoration: underline; color: #99c; }
-a:hover { text-decoration: underline; color: #c33; }
-a:active,  a:focus { text-decoration: underline; color: #000; }
-/* code,  pre { color: #c33; } /* very optional, but still useful. W3C uses about the same colors for codes */
+.navbar-default { background-color: white; border: none; }
 
-h1 > a:link, h1 > a:active, h1 > a:hover, h1 > a:focus, h1 > a:visited,
-h2 > a:link, h2 > a:active, h2 > a:hover, h2 > a:focus, h2 > a:visited,
-h3 > a:link, h3 > a:active, h3 > a:hover, h3 > a:focus, h3 > a:visited,
-h4 > a:link, h4 > a:active, h4 > a:hover, h4 > a:focus, h4 > a:visited,
-h5 > a:link, h5 > a:active, h5 > a:hover, h5 > a:focus, h5 > a:visited,
-h6 > a:link, h6 > a:active, h6 > a:hover, h6 > a:focus, h6 > a:visited {
-        color: black;
-        text-decoration: none;
+.dropdown-submenu {
+    position:relative;
 }
-
-div#maincol { max-width: 46em; }
-
-#footer { padding: 1em; color: #888; text-align: center; font-size: 93%; }
-
-div#nav { margin-top: 2em; }
-div#nav ul { margin-top: 0; margin-left: 1em; margin-bottom: 0; }
-div#nav ul li { list-style: none; padding-bottom: 0.1em; }
-div#nav ul li.current { list-style: square; }
+.dropdown-submenu>.dropdown-menu {
+    top:0;
+    left:100%;
+    margin-top:-6px;
+    margin-left:-1px;
+    -webkit-border-radius:0 6px 6px 6px;
+    -moz-border-radius:0 6px 6px 6px;
+    border-radius:0 6px 6px 6px;
+}
+.dropdown-submenu:hover>.dropdown-menu {
+    display:block;
+}
+.dropdown-submenu>a:after {
+    display:block;
+    content:" ";
+    float:right;
+    width:0;
+    height:0;
+    border-color:transparent;
+    border-style:solid;
+    border-width:5px 0 5px 5px;
+    border-left-color:#cccccc;
+    margin-top:5px;
+    margin-right:-10px;
+}
+.dropdown-submenu:hover>a:after {
+    border-left-color:#ffffff;
+}
+.dropdown-submenu.pull-left {
+    float:none;
+}
+.dropdown-submenu.pull-left>.dropdown-menu {
+    left:-100%;
+    margin-left:10px;
+    -webkit-border-radius:6px 0 6px 6px;
+    -moz-border-radius:6px 0 6px 6px;
+    border-radius:6px 0 6px 6px;
+}
diff --git a/demo/files/js/nav.js b/demo/files/js/nav.js
deleted file mode 100644
--- a/demo/files/js/nav.js
+++ /dev/null
@@ -1,7 +0,0 @@
-$(document).ready(function(){
-  $("div#nav li > ul").hide();
-  $("div#nav li > ul.active").show();
-  $("div#nav ul li a").click(function(event){
-    $(event.target).parent().children("ul").slideToggle("fast");
-  });
-});
diff --git a/demo/layout.html.st b/demo/layout.html.st
--- a/demo/layout.html.st
+++ b/demo/layout.html.st
@@ -1,22 +1,53 @@
+<!DOCTYPE html>
 <html>
-<head>
-   <title>$sitetitle$ - $pagetitle$</title>
-   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-   <link rel="stylesheet" type="text/css" href="$root$css/screen.css" />
-   <link rel="stylesheet" type="text/css" media="print" href="$root$css/print.css" />
-   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
-   <script src="$root$js/nav.js" type="text/javascript"></script>
-</head>
-<body>
-  <div id="doc3" class="yui-t1">
-    <div id="yui-main">
-      <div id="maincol" class="yui-b">
-$contents$
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <title>$sitetitle$ - $pagetitle$</title>
+    <!--[if lt IE 9]>
+        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+        <![endif]-->
+    <link rel="stylesheet"
+          href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
+    <link rel="stylesheet" type="text/css" media="screen"
+          href="$root$css/screen.css">
+    <link rel="stylesheet" type="text/css" media="print"
+          href="$root$css/print.css">
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"
+            type="text/javascript"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
+    <link rel="stylesheet" type="text/css" href="$root$css/screen.css" />
+    <link rel="stylesheet" type="text/css" media="print" href="$root$css/print.css" />
+  </head>
+  <body>
+    <div class="container-fluid">
+      <header>
+        <h1>Yst Demo Site</h1>
+      </header>
+      <div class="row">
+        <nav id="navbar" class="navbar navbar-default col-md-2">
+          <div class="navbar-header">
+            <button type="button" class="navbar-toggle"
+                    data-toggle="collapse" data-target=".navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse">
+            $nav$
+          </div>
+        </nav>
+        <main role="main" class="col-md-10">
+          $contents$
+        </main>
       </div>
-    </div>
-    <div id="nav" class="yui-b first">
-$nav$
+      <footer>
+        powered by <a href="https://github.com/jgm/yst">yst</a>
+      </footer>
     </div>
-  </div>
-</body>
+  </body>
 </html>
diff --git a/demo/yahoo/css/base-min.css b/demo/yahoo/css/base-min.css
deleted file mode 100644
--- a/demo/yahoo/css/base-min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-body{margin:10px;}h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong,dt{font-weight:bold;}optgroup{font-weight:normal;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;}em{font-style:italic;}del{text-decoration:line-through;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:bold;text-align:center;}caption{margin-bottom:.5em;text-align:center;}sup{vertical-align:super;}sub{vertical-align:sub;}p,fieldset,table,pre{margin-bottom:1em;}button,input[type="checkbox"],input[type="radio"],input[type="reset"],input[type="submit"]{padding:1px;}
diff --git a/demo/yahoo/css/reset-fonts-grids.css b/demo/yahoo/css/reset-fonts-grids.css
deleted file mode 100644
--- a/demo/yahoo/css/reset-fonts-grids.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;}body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}select,input,button,textarea,button{font:99% arial,helvetica,clean,sans-serif;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;}body{text-align:center;}#doc,#doc2,#doc3,#doc4,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.25em;}#doc2{width:73.076em;*width:71.25em;}#doc3{margin:auto 10px;width:auto;}#doc4{width:74.923em;*width:73.05em;}.yui-b{position:relative;}.yui-b{_position:static;}#yui-main .yui-b{position:static;}#yui-main,.yui-g .yui-u .yui-g{width:100%;}.yui-t1 #yui-main,.yui-t2 #yui-main,.yui-t3 #yui-main{float:right;margin-left:-25em;}.yui-t4 #yui-main,.yui-t5 #yui-main,.yui-t6 #yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-t1 #yui-main .yui-b{margin-left:13.30769em;*margin-left:13.05em;}.yui-t2 .yui-b{float:left;width:13.8461em;*width:13.50em;}.yui-t2 #yui-main .yui-b{margin-left:14.8461em;*margin-left:14.55em;}.yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-t3 #yui-main .yui-b{margin-left:24.0769em;*margin-left:23.62em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-t4 #yui-main .yui-b{margin-right:14.8456em;*margin-right:14.55em;}.yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-t5 #yui-main .yui-b{margin-right:19.4615em;*margin-right:19.125em;}.yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-t6 #yui-main .yui-b{margin-right:24.0769em;*margin-right:23.62em;}.yui-t7 #yui-main .yui-b{display:block;margin:0 0 1em 0;}#yui-main .yui-b{float:none;width:auto;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf,.yui-gc .yui-u,.yui-gd .yui-g,.yui-g .yui-gc .yui-u,.yui-ge .yui-u,.yui-ge .yui-g,.yui-gf .yui-g,.yui-gf .yui-u{float:right;}.yui-g div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first,.yui-g .yui-gc div.first,.yui-g .yui-ge div.first,.yui-gc div.first div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf{width:49.1%;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{width:32%;margin-left:1.99%;}.yui-gb .yui-u{*margin-left:1.9%;*width:31.9%;}.yui-gc div.first,.yui-gd .yui-u{width:66%;}.yui-gd div.first{width:32%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;}.yui-ge .yui-u,.yui-gf div.first{width:24%;}.yui-g .yui-gb div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-g .yui-g .yui-u,.yui-gb .yui-g .yui-u,.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u,.yui-ge .yui-g .yui-u,.yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-g .yui-g .yui-u{width:48.1%;}.yui-g .yui-gb div.first,.yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-g .yui-gc div.first,.yui-gd .yui-g{width:66%;}.yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-gb .yui-gc div.first,.yui-gb .yui-gd div.first{*margin-right:0;}.yui-gb .yui-gb .yui-u,.yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-g .yui-gc .yui-u,.yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf .yui-u{margin:0;}.yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-gb .yui-g div.first,.yui-gb .yui-gb div.first{*margin-left:0;}.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;}.yui-gb .yui-gd div.first{width:32%;}.yui-g .yui-gd div.first{_width:29.9%;}.yui-ge .yui-g{width:24%;}.yui-gf .yui-g{width:74.2%;}.yui-gb .yui-ge div.yui-u,.yui-gb .yui-gf div.yui-u{float:right;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf div.first{float:left;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-ge div.first .yui-gd div.first{width:32%;}#hd:after,#bd:after,#ft:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after{content:".";display:block;height:0;clear:both;visibility:hidden;}#hd,#bd,#ft,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf{zoom:1;}
diff --git a/demo/yahoo/css/reset-min.css b/demo/yahoo/css/reset-min.css
deleted file mode 100644
--- a/demo/yahoo/css/reset-min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;}
diff --git a/yst.cabal b/yst.cabal
--- a/yst.cabal
+++ b/yst.cabal
@@ -1,6 +1,6 @@
 name:                yst
-version:             0.4.1.1
-Tested-With:         GHC == 7.4.1
+version:             0.5
+Tested-With:         GHC == 7.8.3
 Cabal-version:       >= 1.8
 build-type:          Simple
 synopsis:            Builds a static website from templates and data in YAML or
@@ -36,14 +36,9 @@
                      demo/layout.tex.st
                      demo/room101.txt
                      demo/room203.txt
-                     demo/yahoo/css/base-min.css
                      demo/files/css/hk-pyg.css
-                     demo/files/css/ie.css
                      demo/files/css/print.css
-                     demo/yahoo/css/reset-fonts-grids.css
-                     demo/yahoo/css/reset-min.css
                      demo/files/css/screen.css
-                     demo/files/js/nav.js
 
 Source-repository    head
   type:              git
@@ -55,11 +50,12 @@
   other-modules:     Yst.Types, Yst.Yaml, Yst.Util, Yst.Data, Yst.Config,
                      Yst.Render, Yst.Build, Yst.CSV, Yst.Sqlite3
   build-depends:     base >=3 && < 5, unordered-containers,
-                     HStringTemplate >= 0.6.1 && < 0.6.9 || > 0.6.11 && < 0.8,
+                     HStringTemplate >= 0.6.1 && < 0.6.9 || > 0.6.11 && < 0.9,
                      yaml, csv, aeson >= 0.7 && < 0.9, text,
                      scientific >= 0.2 && < 0.4,
                      filepath, containers, directory, time,
-                     old-locale, old-time, parsec, xhtml,
+                     old-locale, old-time, parsec,
+                     lucid >= 2.9 && < 2.10,
                      pandoc >= 1.10 && < 1.14,
                      split, HDBC, HDBC-sqlite3
   extensions:        CPP
