diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,13 @@
 Brick changelog
 ---------------
 
+0.71.1
+------
+
+Bug fixes:
+ * Fixed an issue where `tests/Render.hs` did not gracefully exit in the
+   presence of an unknown terminal.
+
 0.71
 ----
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.71
+version:             0.71.1
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal user interfaces (TUIs) painlessly with 'brick'! You
diff --git a/src/Brick/Main.hs b/src/Brick/Main.hs
--- a/src/Brick/Main.hs
+++ b/src/Brick/Main.hs
@@ -59,6 +59,7 @@
 import Control.Monad.Trans.Reader
 import Control.Concurrent (forkIO, killThread)
 import qualified Data.Foldable as F
+import Data.List (find)
 import Data.Maybe (listToMaybe)
 import qualified Data.Map as M
 import qualified Data.Set as S
@@ -309,9 +310,9 @@
        -> Bool
        -> IO (Next s, RenderState n, [Extent n])
 runVty vty readEvent app appState rs prevExtents draw = do
-    (firstRS, exts) <- case draw of
-        True -> renderApp vty app appState rs
-        False -> return (rs, prevExtents)
+    (firstRS, exts) <- if draw
+                       then renderApp vty app appState rs
+                       else return (rs, prevExtents)
 
     e <- readEvent
 
@@ -330,23 +331,23 @@
                     -- If the clicked extent was registered as
                     -- clickable, send a click event. Otherwise, just
                     -- send the raw mouse event
-                    case n `elem` firstRS^.clickableNamesL of
-                        True -> do
-                            let localCoords = Location (lc, lr)
-                                lc = c - ec
-                                lr = r - er
+                    if n `elem` firstRS^.clickableNamesL
+                    then do
+                        let localCoords = Location (lc, lr)
+                            lc = c - ec
+                            lr = r - er
 
-                                -- If the clicked extent was a viewport,
-                                -- adjust the local coordinates by
-                                -- adding the viewport upper-left corner
-                                -- offset.
-                                newCoords = case M.lookup n (viewportMap firstRS) of
-                                  Nothing -> localCoords
-                                  Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))
-                                                         & _2 %~ (+ (vp^.vpTop))
+                            -- If the clicked extent was a viewport,
+                            -- adjust the local coordinates by
+                            -- adding the viewport upper-left corner
+                            -- offset.
+                            newCoords = case M.lookup n (viewportMap firstRS) of
+                              Nothing -> localCoords
+                              Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))
+                                                     & _2 %~ (+ (vp^.vpTop))
 
-                            return (MouseDown n button mods newCoords, firstRS, exts)
-                        False -> return (e, firstRS, exts)
+                        return (MouseDown n button mods newCoords, firstRS, exts)
+                    else return (e, firstRS, exts)
                 _ -> return (e, firstRS, exts)
         VtyEvent (EvMouseUp c r button) -> do
             let matching = findClickedExtents_ (c, r) exts
@@ -355,21 +356,21 @@
                     -- If the clicked extent was registered as
                     -- clickable, send a click event. Otherwise, just
                     -- send the raw mouse event
-                    case n `elem` firstRS^.clickableNamesL of
-                        True -> do
-                            let localCoords = Location (lc, lr)
-                                lc = c - ec
-                                lr = r - er
-                                -- If the clicked extent was a viewport,
-                                -- adjust the local coordinates by
-                                -- adding the viewport upper-left corner
-                                -- offset.
-                                newCoords = case M.lookup n (viewportMap firstRS) of
-                                  Nothing -> localCoords
-                                  Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))
-                                                         & _2 %~ (+ (vp^.vpTop))
-                            return (MouseUp n button newCoords, firstRS, exts)
-                        False -> return (e, firstRS, exts)
+                    if n `elem` firstRS^.clickableNamesL
+                    then do
+                        let localCoords = Location (lc, lr)
+                            lc = c - ec
+                            lr = r - er
+                            -- If the clicked extent was a viewport,
+                            -- adjust the local coordinates by
+                            -- adding the viewport upper-left corner
+                            -- offset.
+                            newCoords = case M.lookup n (viewportMap firstRS) of
+                              Nothing -> localCoords
+                              Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))
+                                                     & _2 %~ (+ (vp^.vpTop))
+                        return (MouseUp n button newCoords, firstRS, exts)
+                    else return (e, firstRS, exts)
                 _ -> return (e, firstRS, exts)
         _ -> return (e, firstRS, exts)
 
@@ -422,7 +423,7 @@
 -- | Given a resource name, get the most recent rendering extent for the
 -- name (if any).
 lookupExtent :: (Eq n) => n -> EventM n (Maybe (Extent n))
-lookupExtent n = EventM $ asks (listToMaybe . filter f . latestExtents)
+lookupExtent n = EventM $ asks (find f . latestExtents)
     where
         f (Extent n' _ _) = n == n'
 
@@ -500,7 +501,7 @@
 showCursorNamed :: (Eq n) => n -> [CursorLocation n] -> Maybe (CursorLocation n)
 showCursorNamed name locs =
     let matches l = l^.cursorLocationNameL == Just name
-    in listToMaybe $ filter matches locs
+    in find matches locs
 
 -- | A viewport scrolling handle for managing the scroll state of
 -- viewports.
diff --git a/tests/Render.hs b/tests/Render.hs
--- a/tests/Render.hs
+++ b/tests/Render.hs
@@ -12,7 +12,7 @@
 #endif
 import qualified Graphics.Vty as V
 import Brick.Widgets.Border (hBorder)
-import Control.Exception (try)
+import Control.Exception (SomeException, try)
 
 region :: V.DisplayRegion
 region = (30, 10)
@@ -34,7 +34,7 @@
 
 main :: IO Bool
 main = do
-    result <- try (renderDisplay [myWidget]) :: IO (Either V.VtyConfigurationError ())
+    result <- try (renderDisplay [myWidget]) :: IO (Either SomeException ())
     case result of
         Left _ -> do
             putStrLn "Terminal is not available, skipping test"
