diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+1.4.8
+
+* [Improve handling of `NonEmpty`](https://github.com/Gabriella439/optparse-generic/pull/98)
+* [Add `getWithHelpWith`](https://github.com/Gabriella439/Haskell-Optparse-Generic-Library/pull/94)
+* [Build against `optparse-applicative-0.17`](https://github.com/Gabriella439/Haskell-Optparse-Generic-Library/pull/92)
+* [Build against `text-2.0`](https://github.com/Gabriella439/optparse-generic/pull/91)
+
 1.4.7
 
 * [Derive `Data` instances for exported types](https://github.com/Gabriel439/Haskell-Optparse-Generic-Library/pull/89)
diff --git a/optparse-generic.cabal b/optparse-generic.cabal
--- a/optparse-generic.cabal
+++ b/optparse-generic.cabal
@@ -1,11 +1,11 @@
 Name: optparse-generic
-Version: 1.4.7
+Version: 1.4.8
 Cabal-Version: >=1.10
 Build-Type: Simple
 License: BSD3
 License-File: LICENSE
-Copyright: 2016 Gabriel Gonzalez
-Author: Gabriel Gonzalez
+Copyright: 2016 Gabriella Gonzalez
+Author: Gabriella Gonzalez
 Maintainer: Gabriel439@gmail.com
 Tested-With: GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
 Bug-Reports: https://github.com/Gabriel439/Haskell-Optparse-Generic-Library/issues
@@ -26,11 +26,11 @@
     Build-Depends:
         base                 >= 4.7      && < 5   ,
         system-filepath      >= 0.3.1    && < 0.5 ,
-        text                                < 1.3 ,
+        text                                < 2.1 ,
         transformers         >= 0.2.0.0  && < 0.7 ,
         transformers-compat  >= 0.3      && < 0.8 ,
         Only                                < 0.2 ,
-        optparse-applicative >= 0.16.0.0 && < 0.17,
+        optparse-applicative >= 0.16.0.0 && < 0.18,
         time                 >= 1.5      && < 1.13,
         void                                < 0.8 ,
         bytestring                          < 0.12
diff --git a/src/Options/Generic.hs b/src/Options/Generic.hs
--- a/src/Options/Generic.hs
+++ b/src/Options/Generic.hs
@@ -288,6 +288,7 @@
     -- * Parsers
       getRecord
     , getRecordWith
+    , getWithHelpWith
     , getWithHelp
     , getRecordPure
     , getRecordPureWith
@@ -359,9 +360,10 @@
 import qualified Data.Typeable
 import qualified Data.ByteString
 import qualified Data.ByteString.Lazy
-import qualified Filesystem.Path.CurrentOS as Filesystem
-import qualified Options.Applicative       as Options
-import qualified Options.Applicative.Types as Options
+import qualified Filesystem.Path.CurrentOS    as Filesystem
+import qualified Options.Applicative          as Options
+import qualified Options.Applicative.Types    as Options
+import qualified Options.Applicative.NonEmpty as Options.NonEmpty
 import qualified Text.Read
 
 #if MIN_VERSION_base(4,7,0)
@@ -652,7 +654,7 @@
     parseFields = parseListOfField
 
 instance ParseField a => ParseFields (NonEmpty a) where
-    parseFields h m c d = (:|) <$> parseField h m c d <*> parseListOfField h m c d
+    parseFields h m c d = Options.NonEmpty.some1 (parseField h m c d)
 
 {-| Use this to annotate a field with a type-level string (i.e. a `Symbol`)
     representing the help description for that field:
@@ -1133,8 +1135,20 @@
     -- ^ Program description
     -> io (a, io ())
     -- ^ (options, io action to print help message)
-getWithHelp desc = do
-  a <- getRecordWith header mempty
+getWithHelp desc = getWithHelpWith desc mempty
+
+-- | Marshal any value that implements `ParseRecord` from the commmand line
+-- alongside an io action that prints the help message.
+getWithHelpWith
+    :: (MonadIO io, ParseRecord a)
+    => Text
+    -- ^ Program description
+    -> Options.PrefsMod
+    -- ^ 'ParserPrefs' modifiers
+    -> io (a, io ())
+    -- ^ (options, io action to print help message)
+getWithHelpWith desc prefsMods  = do
+  a <- getRecordWith header prefsMods
   return (a, help)
   where
     header = Options.header (Data.Text.unpack desc)
