diff --git a/Distribution/PackDeps.hs b/Distribution/PackDeps.hs
--- a/Distribution/PackDeps.hs
+++ b/Distribution/PackDeps.hs
@@ -81,7 +81,7 @@
 
 addPackage :: Newest -> Tar.Entry -> Newest
 addPackage m entry =
-    case splitOn "/" $ Tar.entryPath entry of
+    case splitOn "/" $ Tar.fromTarPathToPosixPath (Tar.entryTarPath entry) of
         [package', versionS, _] ->
             case simpleParse versionS of
                 Just version ->
diff --git a/packdeps-cli.hs b/packdeps-cli.hs
--- a/packdeps-cli.hs
+++ b/packdeps-cli.hs
@@ -1,5 +1,6 @@
 import Distribution.PackDeps
 import System.Environment (getArgs)
+import System.Exit (exitFailure, exitSuccess)
 import Distribution.Text (display)
 import Distribution.Package (PackageName (PackageName))
 
@@ -14,14 +15,15 @@
             case mdi of
                 Just di -> return di
                 Nothing -> error $ "Could not parse cabal file: " ++ fp
-        case checkDeps newest di of
-            (pn, v, AllNewest) ->
+        allGood <- case checkDeps newest di of
+            (pn, v, AllNewest) -> do
                 putStrLn $ concat
                     [ unPackageName pn
                     , "-"
                     , display v
                     , ": Can use newest versions of all dependencies"
                     ]
+                return True
             (pn, v, WontAccept p _) -> do
                 putStrLn $ concat
                     [ unPackageName pn
@@ -30,7 +32,11 @@
                     , ": Cannot accept the following packages"
                     ]
                 flip mapM_ p $ \(x, y) -> putStrLn $ x ++ " " ++ y
+                return False
         putStrLn ""
+        if allGood
+            then exitSuccess
+            else exitFailure
 
 unPackageName :: PackageName -> String
 unPackageName (PackageName n) = n
diff --git a/packdeps-yesod.hs b/packdeps-yesod.hs
--- a/packdeps-yesod.hs
+++ b/packdeps-yesod.hs
@@ -1,8 +1,8 @@
 {-# LANGUAGE QuasiQuotes, TypeFamilies, OverloadedStrings, MultiParamTypeClasses #-}
 {-# LANGUAGE TemplateHaskell #-}
 import Yesod
-import Yesod.Helpers.AtomFeed
-import Yesod.Helpers.Feed
+import Yesod.AtomFeed
+import Yesod.Feed
 import Distribution.PackDeps
 import Data.Maybe
 import Data.List (sortBy)
@@ -15,10 +15,9 @@
 import qualified Data.Map as Map
 import qualified Data.ByteString.Char8 as S8
 import Data.Text (Text, pack, unpack)
-import Text.Hamlet.NonPoly (html)
+import Text.Hamlet (shamlet)
 
 data PD = PD Newest Reverses
-type Handler = GHandler PD PD
 mkYesod "PD" [$parseRoutes|
 /favicon.ico FaviconR GET
 / RootR GET
@@ -65,7 +64,7 @@
 getRootR = defaultLayout $ do
     setTitle "Hackage dependency monitor"
     addCassius mainCassius
-    [$hamlet|\
+    [whamlet|
 <h1>Hackage Dependency Monitor
 <form action="@{FeedR}">
     <input type="text" name="needle" required="" placeholder="Search string">
@@ -94,9 +93,12 @@
              $ mapMaybe (go . checkDeps newest) descs
     return deps
 
+instance RenderMessage PD FormMessage where
+    renderMessage _ _ = defaultFormMessage
+
 getFeedR :: Handler RepHtml
 getFeedR = do
-    needle <- runFormGet' $ stringInput "needle"
+    needle <- runInputGet $ ireq textField "needle"
     deps <- getDeps $ unpack needle
     let title = "Newer dependencies for " ++ unpack needle
     defaultLayout $ do
@@ -119,10 +121,10 @@
 |]
         let feedR = Feed2R needle
         atomLink feedR title
-        [$hamlet|\
+        [whamlet|
 <h1>#{title}
 <p>
-    \The following are the packages which have restrictive upper bounds. You can also 
+    \The following are the packages which have restrictive upper bounds. You can also #
     <a href="@{feedR}">view this information as a news feed
     \ so you can get automatic updates in your feed reader of choice.
 $if null deps
@@ -155,7 +157,7 @@
         { feedEntryLink = Feed3R needle (pack name) (pack $ display version) (pack $ show time)
         , feedEntryUpdated = time
         , feedEntryTitle = pack $ "Outdated dependencies for " ++ name ++ " " ++ display version
-        , feedEntryContent = [$hamlet|
+        , feedEntryContent = [shamlet|
 <table border="1">
     $forall d <- deps
         <tr>
@@ -204,10 +206,10 @@
 |]
         let feedR = SpecificFeedR $ pack $ unwords $ map unpack packages'
         atomLink feedR title
-        [$hamlet|\
+        [whamlet|
 <h1>#{title}
 <p>
-    \The following are the packages which have restrictive upper bounds. You can also 
+    The following are the packages which have restrictive upper bounds. You can also #
     <a href="@{feedR}">view this information as a news feed
     \ so you can get automatic updates in your feed reader of choice.
 $forall p <- packages
@@ -247,7 +249,7 @@
         { feedEntryLink = Feed3R packages' (pack name) (pack $ display version) (pack $ show time)
         , feedEntryUpdated = time
         , feedEntryTitle = pack $ "Outdated dependencies for " ++ name ++ " " ++ display version
-        , feedEntryContent = [$hamlet|\
+        , feedEntryContent = [shamlet|
 <table border="1">
     $forall d <- deps
         <tr>
@@ -291,20 +293,22 @@
     PD _ reverse <- getYesod
     (version, rels) <- maybe notFound return $ Map.lookup (unpack dep) reverse
     defaultLayout $ do
-        setTitle [html|Reverse dependencies for #{dep}|]
+        setTitle [shamlet|Reverse dependencies for #{dep}|]
         addCassius mainCassius
-        addHamlet [$hamlet|
-<h1>Reverse dependencies for #{dep} #{display version}
+        addHamlet [hamlet|
+<h1>#{show $ length rels} reverse dependencies for #{dep}&nbsp;#{display version}
 <table>
     <tr>
         <th>Package
         <th>Uses current version?
     $forall rel <- rels
         <tr>
-            <td
-                <a href=@{ReverseR $ pack $ fst rel}>#{fst rel}
+            $if Map.member (fst rel) reverse
+                <td><a href=@{ReverseR $ pack $ fst rel}>#{fst rel}
+            $else
+                <td>#{fst rel}
             $if withinRange version (snd rel)
-                <td>Yes
+                <td>#{display (snd rel)}
             $else
-                <td style="color:#900">No (#{display (snd rel)})
+                <td style="background-color:#fbb">#{display (snd rel)}
 |]
diff --git a/packdeps.cabal b/packdeps.cabal
--- a/packdeps.cabal
+++ b/packdeps.cabal
@@ -1,5 +1,5 @@
 name:            packdeps
-version:         0.0.2.1
+version:         0.0.3
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -16,43 +16,52 @@
 homepage:        http://packdeps.haskellers.com/
 
 flag web
+  description: Build the web-based interface.
+  manual: True
 
 library
     if flag(web)
         Buildable: False
-    build-depends:   base                      >= 4        && < 5
-                   , tar                       >= 0.3.1    && < 0.4
-                   , split                     >= 0.1.2.3  && < 0.2
-                   , bytestring                >= 0.9      && < 0.10
-                   , text                      >= 0.7      && < 0.12
-                   , Cabal                     >= 1.8      && < 1.13
-                   , time                      >= 1.1.4    && < 1.4
-                   , containers                >= 0.2      && < 0.5
-                   , directory                 >= 1.0      && < 1.2
-                   , filepath                  >= 1.1      && < 1.3
-    exposed-modules: Distribution.PackDeps
-    ghc-options:     -Wall
+    else
+        build-depends:   base                      >= 4        && < 5
+                       , tar                       >= 0.3.1    && < 0.4
+                       , split                     >= 0.1.2.3  && < 0.2
+                       , bytestring                >= 0.9      && < 0.10
+                       , text                      >= 0.7      && < 0.12
+                       , Cabal                     >= 1.8      && < 1.13
+                       , time                      >= 1.1.4
+                       , containers                >= 0.2      && < 0.5
+                       , directory                 >= 1.0      && < 1.2
+                       , filepath                  >= 1.1      && < 1.3
+        exposed-modules: Distribution.PackDeps
+        ghc-options:     -Wall
 
 executable             packdeps
+    main-is:           packdeps-cli.hs
+
     if flag(web)
         Buildable: False
-    ghc-options:       -Wall
-    main-is:           packdeps-cli.hs
+    else
+        ghc-options:       -Wall
 
 executable             packdeps-yesod
-    if !flag(web)
-        Buildable: False
-    ghc-options:       -Wall
     main-is:           packdeps-yesod.hs
 
-executable             save-newest
-    if !flag(web)
+    if flag(web)
+        ghc-options:       -Wall
+    else
         Buildable: False
-    ghc-options:       -Wall
+
+executable             save-newest
     main-is:           save-newest.hs
-    build-depends:     yesod-newsfeed         == 0.1.*
-                     , yesod                  == 0.8.*
-                     , hamlet                 == 0.8.*
+
+    if flag(web)
+        ghc-options:       -Wall
+        build-depends:     yesod-newsfeed         == 0.3.*
+                         , yesod                  == 0.9.*
+                         , hamlet                 == 0.10.*
+    else
+        Buildable: False
 
 source-repository head
   type:     git
