diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -0,0 +1,2 @@
+## v0.11
+- unrecognized short opts are now kept in argument list
diff --git a/hydrogen-cli-args.cabal b/hydrogen-cli-args.cabal
--- a/hydrogen-cli-args.cabal
+++ b/hydrogen-cli-args.cabal
@@ -1,5 +1,5 @@
 name:                 hydrogen-cli-args
-version:              0.10
+version:              0.11
 homepage:             https://scravy.de/hydrogen-cli-args/
 synopsis:             Hydrogen Command Line Arguments Parser
 license:              MIT
@@ -20,7 +20,7 @@
   build-depends:      base ==4.7.*
                       , containers ==0.5.*
                       , hydrogen-multimap ==0.1
-                      , hydrogen-prelude ==0.10
+                      , hydrogen-prelude ==0.11
   hs-source-dirs:     src
   ghc-options:        -Wall
   default-language:   Haskell2010
diff --git a/src/Hydrogen/CliArgs.hs b/src/Hydrogen/CliArgs.hs
--- a/src/Hydrogen/CliArgs.hs
+++ b/src/Hydrogen/CliArgs.hs
@@ -111,11 +111,17 @@
                     | shortOpt `elem` shortArgs && not (null xs) && test opt val'
                         -> readArgs (MultiMap.insert opt val' args) switches (tail xs)
                     | otherwise
-                        -> readArgs args (foldr Set.insert switches shortOpts) xs
+                        -> readOpts
                   where
                     val' = head xs
                     opt = aliasMap ! shortOpt
-                    shortOpts = map (aliasMap !) $ filter (`elem` shortSwitches) optString
+                    (recog, nrecog) = partition (`elem` shortSwitches) optString
+                    shortOpts = map (aliasMap !) recog
+                    readOpts
+                      | null nrecog = (args'', switches'', xs'')
+                      | otherwise   = (args'', switches'', ('-' : nrecog) : xs'')
+                    (args'', switches'', xs'')
+                        = readArgs args (foldr Set.insert switches shortOpts) xs
 
                 _ -> readArg
 
