diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
 
 See full history at: <https://github.com/faylang/fay/commits>
 
+##### 0.21.0.1 (2014-10-12)
+
+* Update to `optparse-applicative == 0.11.*`
+
 ## 0.21.0.0 (2014-10-11)
 
 * Errors are now properly thrown from `encodeFay`. Changes the type signature to `encodeFay :: (GenericQ Value -> GenericQ Value) -> GenericQ Value`
diff --git a/fay.cabal b/fay.cabal
--- a/fay.cabal
+++ b/fay.cabal
@@ -1,5 +1,5 @@
 name:                fay
-version:             0.21.0.0
+version:             0.21.0.1
 synopsis:            A compiler for Fay, a Haskell subset that compiles to JavaScript.
 description:         Fay is a proper subset of Haskell which is type-checked
                      with GHC, and compiled to JavaScript. It is lazy, pure, has a Fay monad,
@@ -148,7 +148,8 @@
   build-depends:
       base
     , fay
-    , optparse-applicative == 0.10.*
+    , mtl
+    , optparse-applicative == 0.11.*
     , split
 
 executable fay-tests
diff --git a/src/main/Main.hs b/src/main/Main.hs
--- a/src/main/Main.hs
+++ b/src/main/Main.hs
@@ -6,6 +6,7 @@
 import           Paths_fay (version)
 
 import           Control.Monad
+import           Control.Monad.Reader
 import           Data.List.Split (wordsBy)
 import           Data.Maybe
 import           Data.Version (showVersion)
@@ -118,11 +119,11 @@
   <*> switch (long "typecheck-only" <> help "Only invoke GHC for typechecking, don't produce any output")
   <*> optional (strOption $ long "runtime-path" <> help "Custom path to the runtime so you don't have to reinstall fay when modifying it")
   <*> switch (long "sourcemap" <> help "Produce a source map in <outfile>.map")
-  <*> many (argument Just (metavar "<hs-file>..."))
+  <*> many (argument (ReadM ask) (metavar "<hs-file>..."))
   <*> switch (long "no-optimized-newtypes" <> help "Remove optimizations for newtypes, treating them as normal data types")
   where
     strsOption :: Mod OptionFields [String] -> Parser [String]
-    strsOption m = option (ReadM . Right . wordsBy (== ',')) (m <> value [])
+    strsOption m = option (ReadM . fmap (wordsBy (== ',')) $ ask) (m <> value [])
 
 -- | Make incompatible options.
 incompatible :: Monad m
