diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,12 @@
 Version 0.2.3
 -------------
 
+* Upgrade to optparse-applicative 0.6
+* Provide the `--help` option for subcommands
+
+Version 0.2.3
+-------------
+
 Relax Cabal dependency constraint to include Cabal-1.14
 
 Version 0.2.2
diff --git a/haskell-packages.cabal b/haskell-packages.cabal
--- a/haskell-packages.cabal
+++ b/haskell-packages.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                haskell-packages
-version:             0.2.3
+version:             0.2.3.1
 synopsis:            Haskell suite library for package management and integration with Cabal
 description:         See <http://documentup.com/haskell-suite/haskell-packages>
 license:             MIT
@@ -26,7 +26,7 @@
 source-repository this
   type:     git
   location: git://github.com/haskell-suite/haskell-packages.git
-  tag:      v0.2.3
+  tag:      v0.2.3.1
 
 library
   default-language:    Haskell2010
@@ -43,7 +43,7 @@
     Paths_haskell_packages
   build-depends:
       base >=4.5 && < 5
-    , optparse-applicative >= 0.5.1
+    , optparse-applicative >= 0.6
     , aeson == 0.6.*
     , bytestring >=0.9
     , Cabal >= 1.14
diff --git a/src/Distribution/HaskellSuite/Cabal.hs b/src/Distribution/HaskellSuite/Cabal.hs
--- a/src/Distribution/HaskellSuite/Cabal.hs
+++ b/src/Distribution/HaskellSuite/Cabal.hs
@@ -19,6 +19,7 @@
 import Distribution.Text
 import Distribution.ModuleName hiding (main)
 import Options.Applicative
+import Options.Applicative.Types
 import Control.Monad
 import Control.Monad.Trans.Either
 import Control.Exception
@@ -49,7 +50,7 @@
       , hspkgVersion
       , supportedLanguages
       , supportedExtensions
-      , subparser $ pkgCommand <> compilerCommand
+      , hsubparser $ pkgCommand <> compilerCommand
       ]
 
   versionStr = showVersion $ Compiler.version t
@@ -81,7 +82,7 @@
       (long "version")
 
   pkgCommand =
-    command "pkg" (info (subparser pkgSubcommands) idm)
+    command "pkg" (info (hsubparser pkgSubcommands) idm)
   pkgSubcommands =
     mconcat
       [ pkgDump
@@ -108,7 +109,7 @@
       (strOption (long "build-dir" <> metavar "PATH")) <*>
       (strOption (long "target-dir" <> metavar "PATH")) <*>
       (optional $ strOption (long "dynlib-target-dir" <> metavar "PATH")) <*>
-      (nullOption (long "package-id" <> metavar "ID" <> reader parsePackageId)) <*>
+      (nullOption (long "package-id" <> metavar "ID" <> reader (ReadM . parsePackageId))) <*>
       (arguments simpleParse (metavar "MODULE"))
     where
       parsePackageId str =
@@ -154,7 +155,7 @@
       (many $ InstalledPackageId <$> strOption (long "package-id")) <*>
       arguments str (metavar "MODULE")
     where
-      pkgNameReader =
+      pkgNameReader = ReadM .
         maybe (Left $ ErrorMsg "invalid package name") Right .
         simpleParse
 
