diff --git a/getopt-generics.cabal b/getopt-generics.cabal
--- a/getopt-generics.cabal
+++ b/getopt-generics.cabal
@@ -1,9 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.17.0.
+-- This file has been generated from package.yaml by hpack version 0.20.0.
 --
 -- see: https://github.com/sol/hpack
+--
+-- hash: abf4e8f0f1099d8b59aa00485728092abae08230a22f2e54917e955bc4a2b80e
 
 name:           getopt-generics
-version:        0.13.0.1
+version:        0.13.0.2
 synopsis:       Create command line interfaces with ease
 description:    Create command line interfaces with ease
 category:       Console, System
@@ -44,10 +46,10 @@
       src
   ghc-options: -Wall -fno-warn-name-shadowing
   build-depends:
-      base == 4.*
-    , base-compat >= 0.8
+      base ==4.*
+    , base-compat >=0.8
     , base-orphans
-    , generics-sop >= 0.1 && < 0.4
+    , generics-sop >=0.1 && <0.4
     , tagged
   exposed-modules:
       WithCli
@@ -74,16 +76,16 @@
       docs
   ghc-options: -Wall -fno-warn-name-shadowing -threaded -O0
   build-depends:
-      base == 4.*
-    , base-compat >= 0.8
+      QuickCheck
+    , base ==4.*
+    , base-compat >=0.8
     , base-orphans
-    , generics-sop >= 0.1 && < 0.4
-    , tagged
-    , hspec >= 2.1.8
-    , QuickCheck
-    , silently
     , filepath
+    , generics-sop >=0.1 && <0.4
+    , hspec >=2.1.8
     , safe
+    , silently
+    , tagged
   other-modules:
       WithCli
       WithCli.Argument
@@ -119,4 +121,5 @@
       Test02
       Test03
       Test04
+      Paths_getopt_generics
   default-language: Haskell2010
diff --git a/src/WithCli/Flag.hs b/src/WithCli/Flag.hs
--- a/src/WithCli/Flag.hs
+++ b/src/WithCli/Flag.hs
@@ -6,8 +6,8 @@
 import           Prelude ()
 import           Prelude.Compat
 
+import           Data.List
 import           Data.Maybe
-import           Data.Monoid
 import           System.Console.GetOpt
 
 data Flag a
@@ -16,17 +16,19 @@
   | NoHelp a
   deriving (Functor)
 
-instance Monoid a => Monoid (Flag a) where
-  mappend a b = case (a, b) of
-    (Help, _) -> Help
-    (_, Help) -> Help
-    (Version s, _) -> Version s
-    (_, Version s) -> Version s
-    (NoHelp a, NoHelp b) -> NoHelp (a <> b)
-  mempty = NoHelp mempty
+flagConcat :: Monoid a => [Flag a] -> Flag a
+flagConcat = foldl' flagAppend (NoHelp mempty)
+  where
+    flagAppend :: Monoid a => Flag a -> Flag a -> Flag a
+    flagAppend a b = case (a, b) of
+      (Help, _) -> Help
+      (_, Help) -> Help
+      (Version s, _) -> Version s
+      (_, Version s) -> Version s
+      (NoHelp a, NoHelp b) -> NoHelp (mappend a b)
 
 foldFlags :: [Flag a] -> Flag [a]
-foldFlags flags = mconcat $ map (fmap pure) flags
+foldFlags flags = flagConcat $ map (fmap pure) flags
 
 helpOption :: OptDescr (Flag a)
 helpOption =
