diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,16 @@
 Brick changelog
 ---------------
 
+0.17.1
+------
+
+Package changes:
+ * Use Extra-Doc-Files instead of Data-Files for documentation files
+
+Bug fixes:
+ * List: correctly update selected index in listInsert
+ * Update example program in brick.cabal (thanks @timbod7)
+
 0.17
 ----
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -63,7 +63,7 @@
 ```
 
 To get started, see the [first few sections of the brick
-user guide](docs/guide.rst).
+user guide](https://github.com/jtdaugherty/brick/blob/master/docs/guide.rst).
 
 Brick-Users Discussion
 ----------------------
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.17
+version:             0.17.1
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal applications painlessly with 'brick'! You write an
@@ -10,7 +10,7 @@
   >
   > import Brick
   >
-  > ui :: Widget n
+  > ui :: Widget ()
   > ui = str "Hello, world!"
   >
   > main :: IO ()
@@ -38,7 +38,7 @@
 Homepage:            https://github.com/jtdaugherty/brick/
 Bug-reports:         https://github.com/jtdaugherty/brick/issues
 
-data-files:          README.md,
+extra-doc-files:     README.md,
                      docs/guide.rst,
                      CHANGELOG.md
 
diff --git a/src/Brick/Widgets/Core.hs b/src/Brick/Widgets/Core.hs
--- a/src/Brick/Widgets/Core.hs
+++ b/src/Brick/Widgets/Core.hs
@@ -433,7 +433,8 @@
       c <- getContext
 
       let pairsIndexed = zip [(0::Int)..] ws
-          (his, lows) = partition (\p -> (primaryWidgetSize br $ snd p) == Fixed) pairsIndexed
+          (his, lows) = partition (\p -> (primaryWidgetSize br $ snd p) == Fixed)
+                        pairsIndexed
 
       let availPrimary = c^.(contextPrimary br)
           availSecondary = c^.(contextSecondary br)
@@ -443,14 +444,16 @@
               result <- render $ limitPrimary br remainingPrimary
                                $ limitSecondary br availSecondary
                                $ cropToContext prim
-              renderHis (remainingPrimary - (result^.imageL.(to $ imagePrimary br))) (DL.snoc prev (i, result)) rest
+              renderHis (remainingPrimary - (result^.imageL.(to $ imagePrimary br)))
+                        (DL.snoc prev (i, result)) rest
 
       renderedHis <- renderHis availPrimary DL.empty his
 
       renderedLows <- case lows of
           [] -> return []
           ls -> do
-              let remainingPrimary = c^.(contextPrimary br) - (sum $ (^._2.imageL.(to $ imagePrimary br)) <$> renderedHis)
+              let remainingPrimary = c^.(contextPrimary br) -
+                                     (sum $ (^._2.imageL.(to $ imagePrimary br)) <$> renderedHis)
                   primaryPerLow = remainingPrimary `div` length ls
                   padFirst = remainingPrimary - (primaryPerLow * length ls)
                   secondaryPerLow = c^.(contextSecondary br)
@@ -477,7 +480,8 @@
           -- attribute. In a horizontal box we want all images to have
           -- the same height for the same reason.
           maxSecondary = maximum $ imageSecondary br <$> allImages
-          padImage img = padImageSecondary br (maxSecondary - imageSecondary br img) img (c^.attrL)
+          padImage img = padImageSecondary br (maxSecondary - imageSecondary br img)
+                         img (c^.attrL)
           paddedImages = padImage <$> allImages
 
       cropResultToContext $ Result (concatenatePrimary br paddedImages)
@@ -613,13 +617,15 @@
 hRelease :: Widget n -> Maybe (Widget n)
 hRelease p =
     case hSize p of
-        Fixed -> Just $ Widget Greedy (vSize p) $ withReaderT (& availWidthL .~ unrestricted) (render p)
+        Fixed -> Just $ Widget Greedy (vSize p) $
+                        withReaderT (& availWidthL .~ unrestricted) (render p)
         Greedy -> Nothing
 
 vRelease :: Widget n -> Maybe (Widget n)
 vRelease p =
     case vSize p of
-        Fixed -> Just $ Widget (hSize p) Greedy $ withReaderT (& availHeightL .~ unrestricted) (render p)
+        Fixed -> Just $ Widget (hSize p) Greedy $
+                        withReaderT (& availHeightL .~ unrestricted) (render p)
         Greedy -> Nothing
 
 -- | Render the specified widget. If the widget has an entry in the
@@ -685,12 +691,13 @@
               observed <- use observedNamesL
               case S.member n observed of
                   False -> observedNamesL %= S.insert n
-                  True -> error $ "Error: while rendering the interface, the name " <> show n <>
-                                  " was seen more than once. You should ensure that all of the widgets " <>
-                                  "in each interface have unique name values. This means either " <>
-                                  "using a different name type or adding constructors to your " <>
-                                  "existing one and using those to name your widgets.  For more " <>
-                                  "information, see the \"Resource Names\" section of the Brick User Guide."
+                  True ->
+                      error $ "Error: while rendering the interface, the name " <> show n <>
+                              " was seen more than once. You should ensure that all of the widgets " <>
+                              "in each interface have unique name values. This means either " <>
+                              "using a different name type or adding constructors to your " <>
+                              "existing one and using those to name your widgets.  For more " <>
+                              "information, see the \"Resource Names\" section of the Brick User Guide."
 
       observeName vpname
 
@@ -703,13 +710,17 @@
       let release = case typ of
             Vertical -> vRelease
             Horizontal -> hRelease
-            Both ->vRelease >=> hRelease
+            Both -> vRelease >=> hRelease
           released = case release p of
             Just w -> w
             Nothing -> case typ of
-                Vertical -> error $ "tried to embed an infinite-height widget in vertical viewport " <> (show vpname)
-                Horizontal -> error $ "tried to embed an infinite-width widget in horizontal viewport " <> (show vpname)
-                Both -> error $ "tried to embed an infinite-width or infinite-height widget in 'Both' type viewport " <> (show vpname)
+                Vertical -> error $ "tried to embed an infinite-height " <>
+                                    "widget in vertical viewport " <> (show vpname)
+                Horizontal -> error $ "tried to embed an infinite-width " <>
+                                      "widget in horizontal viewport " <> (show vpname)
+                Both -> error $ "tried to embed an infinite-width or " <>
+                                "infinite-height widget in 'Both' type " <>
+                                "viewport " <> (show vpname)
 
       initialResult <- render released
 
@@ -772,13 +783,16 @@
                            , translated^.imageL.to V.imageHeight
                            )
       case translatedSize of
-          (0, 0) -> return $ translated & imageL .~ (V.charFill (c^.attrL) ' ' (c^.availWidthL) (c^.availHeightL))
-                                        & visibilityRequestsL .~ mempty
-                                        & extentsL .~ mempty
+          (0, 0) -> do
+              let spaceFill = V.charFill (c^.attrL) ' ' (c^.availWidthL) (c^.availHeightL)
+              return $ translated & imageL .~ spaceFill
+                                  & visibilityRequestsL .~ mempty
+                                  & extentsL .~ mempty
           _ -> render $ cropToContext
                       $ padBottom Max
                       $ padRight Max
-                      $ Widget Fixed Fixed $ return $ translated & visibilityRequestsL .~ mempty
+                      $ Widget Fixed Fixed
+                      $ return $ translated & visibilityRequestsL .~ mempty
 
 -- | Given a name, obtain the viewport for that name by consulting the
 -- viewport map in the rendering monad. NOTE! Some care must be taken
diff --git a/src/Brick/Widgets/List.hs b/src/Brick/Widgets/List.hs
--- a/src/Brick/Widgets/List.hs
+++ b/src/Brick/Widgets/List.hs
@@ -202,7 +202,7 @@
         es = l^.listElementsL
         newSel = case l^.listSelectedL of
           Nothing -> 0
-          Just s -> if safePos < s
+          Just s -> if safePos <= s
                     then s + 1
                     else s
         (front, back) = V.splitAt safePos es
