diff --git a/haskell-docs.cabal b/haskell-docs.cabal
--- a/haskell-docs.cabal
+++ b/haskell-docs.cabal
@@ -1,5 +1,5 @@
 name:                haskell-docs
-version:             4.2.0
+version:             4.2.1
 synopsis:            A program to find and display the docs and type of a name
 description:         Given a module name and a name, or just a name, it will find and display
                      the documentation of that name.
diff --git a/src/Haskell/Docs.hs b/src/Haskell/Docs.hs
--- a/src/Haskell/Docs.hs
+++ b/src/Haskell/Docs.hs
@@ -7,26 +7,25 @@
 module Haskell.Docs
   (module Haskell.Docs
   ,Identifier(..)
-  ,PackageName(..))
+  ,PackageName(..)
+  ,searchAndPrintModules
+  ,searchAndPrintDoc)
   where
 
 import           Haskell.Docs.Formatting
 import           Haskell.Docs.Haddock
-import           Haskell.Docs.Ghc
 import           Haskell.Docs.Index
 import           Haskell.Docs.Types
 
-import           Control.Arrow
 import           Control.Exception
 import           Control.Monad
 import qualified Data.HashMap.Strict as M
 import           Data.List
 import           Data.Ord
-import qualified Data.Text.IO as T
 import           Data.Text (pack,unpack)
+import qualified Data.Text.IO as T
 import           GHC hiding (verbosity)
-import           GhcMonad (liftIO)
-import           Module
+import           MonadUtils
 import           Packages
 
 -- -- | Print the documentation of a name in the given module.
@@ -75,3 +74,13 @@
             then forM_ (concat (map snd (M.toList packages)))
                        (\modu -> liftIO (T.putStrLn modu))
             else searchAndPrintDoc' packagemap ms ss pname mname ident
+
+searchAndPrintModules :: MonadIO m => Identifier -> m ()
+searchAndPrintModules ident =
+  do result <- liftIO (lookupIdent (pack (unIdentifier ident)))
+     case result of
+       Nothing ->
+         throw NoFindModule
+       Just packages ->
+         forM_ (nub (concat (map snd (M.toList packages))))
+               (\modu -> liftIO (T.putStrLn modu))
diff --git a/src/main/Main.hs b/src/main/Main.hs
--- a/src/main/Main.hs
+++ b/src/main/Main.hs
@@ -29,37 +29,42 @@
 -- | Do the printing.
 app :: [String] -> IO ()
 app (extract -> x@(gs,ms,as,ss)) =
-  withInitializedPackages
-    gs
-    (\packages ->
-       catchErrors
-         (case as of
-            [name] ->
-              searchAndPrintDoc packages
-                                ms
-                                ss
-                                Nothing
-                                Nothing
-                                (Identifier name)
-            [mname,name,pname] ->
-              searchAndPrintDoc packages
-                                ms
-                                ss
-                                (Just (PackageName pname))
-                                (Just (makeModuleName mname))
-                                (Identifier name)
-            [mname,name] ->
-              searchAndPrintDoc packages
-                                ms
-                                ss
-                                Nothing
-                                (Just (makeModuleName mname))
-                                (Identifier name)
-            _ -> bail "<module-name> <ident> [<package-name>] | <ident>\n\
-                      \\n\
-                      \Options: --g <ghc option> Specify GHC options.\n\
-                      \         --sexp           Output s-expressions.\n\
-                      \         --modules        Only output modules."))
+  do if ms
+        then case as of
+               [name]     -> searchAndPrintModules (Identifier name)
+               [_,name,_] -> searchAndPrintModules (Identifier name)
+               [_,name]   -> searchAndPrintModules (Identifier name)
+        else withInitializedPackages
+               gs
+               (\packages ->
+                  catchErrors
+                    (case as of
+                       [name] ->
+                         searchAndPrintDoc packages
+                                           ms
+                                           ss
+                                           Nothing
+                                           Nothing
+                                           (Identifier name)
+                       [mname,name,pname] ->
+                         searchAndPrintDoc packages
+                                           ms
+                                           ss
+                                           (Just (PackageName pname))
+                                           (Just (makeModuleName mname))
+                                           (Identifier name)
+                       [mname,name] ->
+                         searchAndPrintDoc packages
+                                           ms
+                                           ss
+                                           Nothing
+                                           (Just (makeModuleName mname))
+                                           (Identifier name)
+                       _ -> bail "<module-name> <ident> [<package-name>] | <ident>\n\
+                                 \\n\
+                                 \Options: --g <ghc option> Specify GHC options.\n\
+                                 \         --sexp           Output s-expressions.\n\
+                                 \         --modules        Only output modules." ))
 
 -- | Extract arguments.
 extract :: [String] -> ([String],Bool,[String],Bool)
