diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 ---
-title: SLOANE(1) Sloane User Manual | Version 2.0.1
+title: SLOANE(1) Sloane User Manual | Version 2.0.2
 date: 7 Jan 2015
 ---
 
diff --git a/Sloane/Config.hs b/Sloane/Config.hs
--- a/Sloane/Config.hs
+++ b/Sloane/Config.hs
@@ -29,7 +29,7 @@
     h <- getHomeDirectory
     let dsloane = h </> ".sloane"
     return Config
-        { nameVer   = "sloane 2.0.1"
+        { nameVer   = "sloane 2.0.2"
         , home      = h
         , sloaneDir = dsloane
         , sloaneDB  = dsloane </> "sloane.db"
diff --git a/sloane.cabal b/sloane.cabal
--- a/sloane.cabal
+++ b/sloane.cabal
@@ -1,5 +1,5 @@
 Name:                sloane
-Version:             2.0.1
+Version:             2.0.2
 Synopsis:            A command line interface to Sloane's On-Line Encyclopedia
                      of Integer Sequences
 Description:         A command line interface to Sloane's On-Line Encyclopedia
diff --git a/sloane.hs b/sloane.hs
--- a/sloane.hs
+++ b/sloane.hs
@@ -11,6 +11,7 @@
 import qualified Data.Text                    as T
 import qualified Data.Text.IO                 as IO
 import           Data.Text.Encoding           (decodeUtf8)
+import           System.IO                    (isEOF)
 import           Network.HTTP                 (urlEncodeVars)
 import           Network.Curl.Download        (openURI)
 import           Options.Applicative
@@ -90,11 +91,9 @@
     match q = (if invert opts then id else not) (DB.null $ DB.grep q db)
     parseSeqs = filter (not . T.null) . map mkSeq . T.lines
 
-hiddenHelp :: Parser (a -> a)
-hiddenHelp = abortOption ShowHelpText $ hidden <> long "help"
-
 optionsParser :: Parser Options
-optionsParser = hiddenHelp <*> (Options
+optionsParser =
+  (abortOption ShowHelpText $ long "help") <*> (Options
     <$> switch
         ( short 'a'
        <> long "all"
@@ -132,7 +131,7 @@
         ( long "transform"
        <> metavar "NAME"
        <> value ""
-       <> help ("Apply the named transform to input sequence"))
+       <> help "Apply the named transform to input sequence")
     <*> switch
         ( long "list-transforms"
        <> help "List the names of all transforms" )
@@ -150,13 +149,18 @@
     put | url opts  = putStr . unlines . oeisUrls cfg
         | otherwise = DB.put cfg $ if full opts then oeisKeys else keys opts
 
+getTerms :: Options -> IO Options
+getTerms opts
+    | filtr opts = return opts
+    | otherwise  = (\xs -> opts {terms = xs}) <$>
+        case terms opts of
+          [] -> isEOF >>= \b ->
+                  if b then error "<stdin>: end of file" else return <$> getLine
+          ts -> return ts
+
 main :: IO ()
 main = do
-    let pprefs = prefs mempty
-    let pinfo = info optionsParser fullDesc
-    let usage = handleParseResult . Failure
-         $ parserFailure pprefs pinfo ShowHelpText mempty
-    opts <- customExecParser pprefs pinfo
+    opts <- getTerms =<< execParser (info optionsParser fullDesc)
     let tname = transform opts
     let anum = anumber opts
     let lookupSeq = maybeToList . DB.lookupSeq (mkANumber anum)
@@ -166,7 +170,6 @@
          | listTransforms opts = const $ mapM_ (putStrLn . name) transforms
          | anum > 0 = \c -> lookupSeq <$> DB.read c >>= mapM_ IO.putStrLn
          | filtr opts = \c -> DB.read c >>= filterDB opts >>= mapM_ IO.putStrLn
-         | null (terms opts) = const usage
          | not (null tname) = const $ applyTransform opts tname
          | local opts = search (\o cfg -> grepDB o <$> DB.read cfg) opts
          | otherwise = search oeisLookup opts
