diff --git a/HFlags.hs b/HFlags.hs
--- a/HFlags.hs
+++ b/HFlags.hs
@@ -1,4 +1,5 @@
 -- Copyright 2012 Google Inc. All Rights Reserved.
+-- Copyright 2013 and onwards, Gergely Risko
 --
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.
@@ -12,7 +13,7 @@
 -- See the License for the specific language governing permissions and
 -- limitations under the License.
 --
--- Authors: Mihaly Barasz <klao@google.com>, Gergely Risko <errge@google.com>
+-- Authors: Mihaly Barasz <klao@google.com>, Gergely Risko <gergely@risko.hu>
 
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeSynonymInstances #-}
@@ -54,6 +55,8 @@
 -- >
 -- > main = do s <- $(initHFlags "Simple program v0.1")
 -- >           sequence_ $ replicate flags_repeat greet
+-- >           putStrLn $ "Your additional arguments were: " ++ show s
+-- >           putStrLn $ "Which is the same as: " ++ show HFlags.arguments
 -- >   where
 -- >     greet = putStrLn $ "Hello " ++ flags_name ++ ", very nice to meet you!"
 --
@@ -68,7 +71,10 @@
   defineEQFlag,
   FlagType(..),
   -- * Initialization of flags at runtime
-  initHFlags) where
+  initHFlags,
+  -- * For easy access to arguments, after initHFlags has been called
+  arguments
+  ) where
 
 -- TODOs:
 -- ?--no* for bools?
@@ -140,8 +146,8 @@
           | name' !! 1 == ':' -> return (drop 2 name', Just $ head name')
           | otherwise -> return (name', Nothing)
      defE <- defQ
-     case defE of
-       SigE _ _ -> return ()
+     flagType <- case defE of
+       SigE _ flagType -> return flagType
        _ -> fail "Default value for defineCustomFlag has to be an explicitly typed expression, like (12 :: Int)"
      moduleName <- fmap loc_module location
      let accessorName = mkName $ "flags_" ++ name
@@ -162,10 +168,11 @@
                                               (evaluate $(varE accessorName) >> return ())
                                            |]) []]]
      flagPragmaDec <- return $ PragmaD $ InlineP accessorName NoInline FunLike AllPhases
+     flagSig <- return $ SigD accessorName flagType
      flagDec <- funD accessorName [clause [] (normalB [| case True of
                                                            True -> $(appE readQ [| lookupFlag name moduleName |])
                                                            False -> $(defQ) |]) []]
-     return [dataDec, instanceDec, flagPragmaDec, flagDec]
+     return [dataDec, instanceDec, flagPragmaDec, flagSig, flagDec]
 
 -- | This just forwards to 'defineCustomFlag' with @[| read |]@ and
 -- @[| show |]@.  Useful for flags where the type is not an instance
@@ -234,11 +241,26 @@
     in defineCustomFlag n [| Data.Text.pack s :: Data.Text.Text |] "TEXT" [| Data.Text.pack |] [| Data.Text.unpack |]
 
 -- | A global "IORef" for the communication between @initHFlags@ and
--- @flag_*@.  This is a map between flag name and current value.
+-- @flags_*@.  This is a map between flag name and current value.
 {-# NOINLINE globalHFlags #-}
 globalHFlags :: IORef (Maybe (Map String String))
 globalHFlags = unsafePerformIO $ newIORef Nothing
 
+-- | A global "IORef" for the easy access to the arguments.
+{-# NOINLINE globalArguments #-}
+globalArguments :: IORef (Maybe [String])
+globalArguments = unsafePerformIO $ newIORef Nothing
+
+-- | Contains the non-parsed, non-option parts of the command line,
+-- the arguments.  Can only be used after @initHFlags@ has been called.
+{-# NOINLINE arguments #-}
+arguments :: [String]
+arguments = unsafePerformIO $ do
+  margs <- readIORef globalArguments
+  case margs of
+    Just args -> return $ args
+    Nothing -> error $ "HFlags.arguments used before calling initHFlags."
+
 lookupFlag :: String -> String -> String
 lookupFlag fName fModuleName = unsafePerformIO $ do
   flags <- readIORef globalHFlags
@@ -259,6 +281,7 @@
   env <- getEnvironment
   let envDefaults = map (mapFst (fromJust . stripPrefix "HFLAGS_")) $ filter ((isPrefixOf "HFLAGS_") . fst) env
   writeIORef globalHFlags $ Just $ Map.fromList $ defaults ++ envDefaults ++ opts
+  writeIORef globalArguments $ Just nonopts
   mapM_ forceFlag flags
   return nonopts
     where
diff --git a/examples/SimpleExample.hs b/examples/SimpleExample.hs
--- a/examples/SimpleExample.hs
+++ b/examples/SimpleExample.hs
@@ -1,5 +1,5 @@
 #!/usr/bin/env runhaskell
-  
+
 {-# LANGUAGE TemplateHaskell #-}
 
 import HFlags
@@ -9,5 +9,7 @@
 
 main = do s <- $(initHFlags "Simple program v0.1")
           sequence_ $ replicate flags_repeat greet
+          putStrLn $ "Your additional arguments were: " ++ show s
+          putStrLn $ "Which is the same as: " ++ show HFlags.arguments
   where
     greet = putStrLn $ "Hello " ++ flags_name ++ ", very nice to meet you!"
diff --git a/hflags.cabal b/hflags.cabal
--- a/hflags.cabal
+++ b/hflags.cabal
@@ -1,15 +1,15 @@
 name: hflags
-version: 0.1.1
+version: 0.1.2
 license: OtherLicense
 license-file: COPYING
-author: Mihaly Barasz <klao@google.com>, Gergely Risko <errge@google.com>
-maintainer: Gergely Risko <errge@google.com>
+author: Mihaly Barasz <klao@google.com>, Gergely Risko <gergely@risko.hu>
+maintainer: Gergely Risko <gergely@risko.hu>
 build-type: Simple
 cabal-version: >= 1.6
 category: Console
 stability: provisional
 homepage: http://github.com/errge/hflags
-bug-reports: mailto:errge@google.com
+bug-reports: http://github.com/errge/hflags/issues
 
 synopsis: Command line flag parser, very similar to Google's gflags
 description:
@@ -44,6 +44,8 @@
   .
   main = do s <- $(initHFlags \"Simple program v0.1\")
   &#x20;         sequence_ $ replicate flags_repeat greet
+  &#x20;         putStrLn $ \"Your additional arguments were: \" ++ show s
+  &#x20;         putStrLn $ \"Which is the same as: \" ++ show HFlags.arguments
   &#x20; where
   &#x20;   greet = putStrLn $ \"Hello \" ++ flags_name ++ \", very nice to meet you!\"
   @
