diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -22,7 +22,7 @@
     cabal install yst
 
 (Note that by default, `cabal` installs the `yst` executable into
-a special directory:  `~\.cabal\bin` on unix systems.  You will need
+a special directory:  `~/.cabal/bin` on unix systems.  You will need
 to make sure that directory is in your system path.)
 
 If you get the error "yst-0.2.3 depends on template-haskell-2.4.0.0
diff --git a/Yst/Build.hs b/Yst/Build.hs
--- a/Yst/Build.hs
+++ b/Yst/Build.hs
@@ -38,9 +38,19 @@
 -- So we use System.IO.UTF8 only if we have an earlier version
 #if MIN_VERSION_base(4,2,0)
 import System.IO (hPutStrLn)
+#if !(MIN_VERSION_base(4,6,0))
 import Prelude hiding (catch)
+#endif
 #else
-import Prelude hiding (readFile, putStrLn, print, writeFile, catch)
+import Prelude hiding (
+  readFile
+, putStrLn
+, print
+, writeFile
+#if !(MIN_VERSION_base(4,6,0))
+, catch
+#endif
+)
 import System.IO.UTF8
 #endif
 import System.IO (stderr)
diff --git a/Yst/CSV.hs b/Yst/CSV.hs
--- a/Yst/CSV.hs
+++ b/Yst/CSV.hs
@@ -25,9 +25,16 @@
 -- Note: ghc >= 6.12 (base >=4.2) supports unicode through iconv
 -- So we use System.IO.UTF8 only if we have an earlier version
 #if MIN_VERSION_base(4,2,0)
+#if !(MIN_VERSION_base(4,6,0))
 import Prelude hiding (catch)
+#endif
 #else
-import Prelude hiding (readFile, catch)
+import Prelude hiding (
+  readFile
+#if !(MIN_VERSION_base(4,6,0))
+, catch
+#endif
+)
 import System.IO.UTF8
 #endif
 import Control.Exception (catch, SomeException)
diff --git a/Yst/Render.hs b/Yst/Render.hs
--- a/Yst/Render.hs
+++ b/Yst/Render.hs
@@ -75,20 +75,16 @@
 
 renderNav :: String -> [NavNode] -> String
 renderNav targeturl nodes = unpack $ renderText $
-  ul_ [class_ "nav tree"] $ mapM_ (renderNavNode targeturl) nodes
+  ul_ [class_ "nav navbar-nav"] $ mapM_ (renderNavNode targeturl) nodes
 
 renderNavNode :: String -> NavNode -> Html ()
 renderNavNode targeturl (NavPage tit pageurl) =
-  li_ [class_ "current" | pageurl == targeturl] (a_ [href_ pageurl'] (toHtml tit))
+  li_ [class_ "active" | pageurl == targeturl] (a_ [href_ pageurl'] (toHtml tit))
     where targetdir = takeUrlDir targeturl
           pageurl' = pack $ relUrl targetdir pageurl
 renderNavNode targeturl (NavMenu tit nodes) = li_ [] $
-    do a_ [class_ "tree-toggle nav-header"] (toHtml tit)
-       ul_ [class_ "nav tree"] (mapM_ (renderNavNode targeturl) nodes)
-    where active = targeturl `isInNavNodes` nodes
-          isInNavNodes u = any (isInNavNode u)
-          isInNavNode u (NavPage _ u') = u == u'
-          isInNavNode u (NavMenu _ ns) = u `isInNavNodes` ns
+    do a_ [class_ "dropdown-toggle", data_ "toggle" "dropdown"] (toHtml tit)
+       ul_ [class_ "dropdown-menu"] (mapM_ (renderNavNode targeturl) nodes)
 
 formatFromExtension :: FilePath -> Format
 formatFromExtension f = case (map toLower $ takeExtension f) of
diff --git a/Yst/Types.hs b/Yst/Types.hs
--- a/Yst/Types.hs
+++ b/Yst/Types.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
 {-# LANGUAGE FlexibleInstances, TypeSynonymInstances, CPP #-}
 {-
 Copyright (C) 2009 John MacFarlane <jgm@berkeley.edu>
@@ -182,5 +183,5 @@
 parseAsDate :: (ParseTime t) => String -> Maybe t
 parseAsDate s =
   msum $ map (\fs -> parsetimeWith fs s) formats
-   where parsetimeWith = parseTime defaultTimeLocale
+   where parsetimeWith = parseTimeM True defaultTimeLocale
          formats = ["%x","%m/%d/%Y", "%D","%F", "%d %b %Y"]
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,14 @@
+yst 0.5.1.2 (released 19 Sep 2017)
+
+  * Update demo style to use Bootstrap's navbar instead of tree
+    (Jacob Mitchell).
+  * Remove unused code in nav menu rendering (Jacob Mitchell).
+  * Fix some warnings (Jacob Mitchell).
+  * Make `$nav$` compatible with Bootstrap (Jacob Mitchell).
+  * Fixed typo (#45).
+  * Allow latest aeson.
+  * Allow pandoc 1.19.x.
+
 yst 0.5.1.1 (released 22 Mar 2016)
 
   * Allow pandoc 1.17, aeson 0.11.
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,64 +1,9 @@
 @import url("hk-pyg.css");
 
-body { padding: 10px;
+body { padding-top: 60px;       /* make room for top-fixed navbar */
       font-size: 14pt;
-      font-family: Arial, sans-serif;
       line-height: 1.4em; }
 
 header h1 { font-size: 42pt; }
 
-main { max-width: 46em;
-       border-left: 1px solid grey; }
-
-nav { margin-top: 1em; }
-
-footer { padding: 1em; color: #888; text-align: center; font-size: 93%; }
-
-.navbar-default { background-color: transparent; border: none; }
-
-/* Tree menus */
-.nav-header:after {
-content: "\00A0\25BE";
-}
-li > ul.tree {
-  padding-left: 10px;
-}
-
-/* collapse menu at "small" size rather than phone size */
-@media (max-width: 991px) {
-    .navbar-header {
-        float: none;
-    }
-    .navbar-toggle {
-        display: block;
-    }
-    .navbar-collapse {
-        border-top: 1px solid transparent;
-        box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
-    }
-    .navbar-collapse.collapse {
-        display: none!important;
-    }
-    .navbar-nav {
-        float: none!important;
-        margin: 7.5px -15px;
-    }
-    .navbar-nav>li {
-        float: none;
-    }
-    .navbar-nav>li>a {
-        padding-top: 10px;
-        padding-bottom: 10px;
-    }
-    .navbar-text {
-        float: none;
-        margin: 15px 0;
-    }
-    /* since 3.1.0 */
-    .navbar-collapse.collapse.in {
-        display: block!important;
-    }
-    .collapsing {
-        overflow: hidden!important;
-    }
-}
+footer { padding: 1em; text-align: center; }
diff --git a/demo/layout.html.st b/demo/layout.html.st
--- a/demo/layout.html.st
+++ b/demo/layout.html.st
@@ -10,25 +10,21 @@
         <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">
+          href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
+    <link rel="stylesheet"
+          href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/flatly/bootstrap.min.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>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+
     <script src="$root$js/nav.js" type="text/javascript"></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>$sitetitle$</h1>
-      </header>
-      <div class="row">
-        <nav id="navbar" class="navbar nav navbar-default col-md-2">
+    <div class="container">
+      <nav id="navbar" class="navbar navbar-default navbar-fixed-top">
+        <div class="container">
           <div class="navbar-header">
             <button type="button" class="navbar-toggle"
                     data-toggle="collapse" data-target=".navbar-collapse">
@@ -41,12 +37,17 @@
           <div class="navbar-collapse collapse">
             $nav$
           </div>
-        </nav>
+        </div>
+      </nav>
+      <header>
+        <h1>$sitetitle$</h1>
+      </header>
+      <div class="row">
         <main role="main" class="col-md-10">
           $contents$
         </main>
       </div>
-      <footer>
+      <footer class="text-muted small">
         powered by <a href="https://github.com/jgm/yst">yst</a>
       </footer>
     </div>
diff --git a/yst.cabal b/yst.cabal
--- a/yst.cabal
+++ b/yst.cabal
@@ -1,5 +1,5 @@
 name:                yst
-version:             0.5.1.1
+version:             0.5.1.2
 Tested-With:         GHC == 7.8.3
 Cabal-version:       >= 1.8
 build-type:          Simple
@@ -52,12 +52,12 @@
                      Yst.Render, Yst.Build, Yst.CSV, Yst.Sqlite3, Paths_yst
   build-depends:     base >=3 && < 5, unordered-containers,
                      HStringTemplate >= 0.6.1 && < 0.6.9 || > 0.6.11 && < 0.9,
-                     yaml, csv, aeson >= 0.7 && < 0.12, text,
+                     yaml, csv, aeson >= 0.7 && < 1.1, text,
                      scientific >= 0.2 && < 0.4,
                      filepath, containers, directory, time,
                      old-locale, old-time, parsec,
                      lucid >= 2.9 && < 2.10,
-                     pandoc >= 1.10 && < 1.18,
+                     pandoc >= 1.10 && < 1.20,
                      split, HDBC, HDBC-sqlite3
   extensions:        CPP
   if impl(ghc >= 6.12)
