diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
-* 0.1
+* 0.2 (2018-08-17)
+- error if no spec file
+- filter out hidden files from deps search
+- add --version
+- generate manpage with help2man
+
+* 0.1 (2018-07-18)
 - initial release with sort, deps and rdeps (reverse dependencies) commands
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
 [![Build Status](https://travis-ci.org/juhp/rpmbuild-order.png)](https://travis-ci.org/juhp/rpmbuild-order)
+[![Hackage](http://img.shields.io/hackage/v/rpmbuild-order.png)](http://hackage.haskell.org/package/rpmbuild-order)
+[![license](https://img.shields.io/badge/license-BSD-brightgreen.svg)](https://opensource.org/licenses/BSD-3-Clause)
 
 # rpmbuild-order
 
diff --git a/RpmbuildOrder.hs b/RpmbuildOrder.hs
--- a/RpmbuildOrder.hs
+++ b/RpmbuildOrder.hs
@@ -2,9 +2,6 @@
 
 module Main where
 
-import qualified Distribution.Verbosity as Verbosity
-import qualified Distribution.ReadE as ReadE
-
 import System.Console.GetOpt
           (getOpt, ArgOrder(..), OptDescr(..), ArgDescr(..), usageInfo)
 import System.Exit (exitSuccess, exitFailure)
@@ -32,6 +29,7 @@
 import Control.Monad (guard, when, unless)
 import Data.Maybe (catMaybes, fromMaybe, mapMaybe)
 import Data.List (delete, intersperse, stripPrefix)
+import Data.Version  (showVersion)
 
 #if (defined(MIN_VERSION_base) && MIN_VERSION_base(4,8,2))
 #else
@@ -46,31 +44,38 @@
   where f filename = filename /= "." && filename /= ".."
 #endif
 
+import Paths_rpmbuild_order (version)
+
 main :: IO ()
 main =
   E.resolveT handleException $ do
   argv <- T.lift Env.getArgs
   let (opts, args, errors) = getOpt Permute options argv
-  if length args < 2
-    then T.lift $ help >> exitFailure
-    else do
-      let (com:pkgs) = args
-      unless (null errors) $ E.throwT $ concat errors
-      unless (com `elem` ["sort", "deps", "rdeps"]) $
-        E.throwT $ "Unknown command " ++ com
-      flags <-
-         E.ExceptionalT $ return $
-            foldr (=<<)
-               (return
-                Flags {optHelp = False,
-                       optVerbosity = Verbosity.silent,
-                       optFormat = package,
-                       optParallel = Nothing,
-                       optBranch = Nothing})
-               opts
-      if optHelp flags
-        then T.lift $ help >> exitSuccess
-        else runCommand flags com $ map (removeSuffix "/") pkgs
+  flags <-
+    E.ExceptionalT $ return $
+        foldr (=<<)
+           (return
+            Flags {optHelp = False,
+                   optVersion = False,
+                   optVerbosity = False,
+                   optFormat = package,
+                   optParallel = Nothing,
+                   optBranch = Nothing})
+           opts
+  if optHelp flags
+    then T.lift $ help >> exitSuccess
+    else
+    if optVersion flags
+    then T.lift $ putStrLn $ showVersion version
+    else
+      if length args < 2
+      then T.lift $ help >> exitFailure
+      else do
+        let (com:pkgs) = args
+        unless (null errors) $ E.throwT $ concat errors
+        unless (com `elem` ["sort", "deps", "rdeps"]) $
+          E.throwT $ "Unknown command " ++ com
+        runCommand flags com $ map (removeSuffix "/") pkgs
   where
     help =
       Env.getProgName >>= \programName ->
@@ -94,7 +99,7 @@
       let dir = maybe file (file </>) mdir
           pkg = takeBaseName file in
         checkFile $ dir </> pkg ++ ".spec"
-      else return Nothing
+      else error $ "No spec file found for " ++ file
   where
     checkFile :: FilePath -> IO (Maybe FilePath)
     checkFile f = do
@@ -106,7 +111,8 @@
 data Flags =
    Flags {
       optHelp :: Bool,
-      optVerbosity :: Verbosity.Verbosity,
+      optVersion :: Bool,
+      optVerbosity :: Bool,
       optFormat :: SourcePackage -> String,
       optParallel :: Maybe String,
       optBranch :: Maybe FilePath
@@ -118,6 +124,9 @@
     Option ['h'] ["help"]
       (NoArg (\flags -> return $ flags{optHelp = True}))
       "Show options"
+  , Option ['V'] ["version"]
+      (NoArg (\flags -> return $ flags{optVersion = True}))
+      "Show version"
   , Option ['p'] ["parallel"]
       (OptArg
         (\mstr flags ->
@@ -146,13 +155,10 @@
          "KIND")
       "output format: 'package' (default), 'spec', or 'dir'"
   , Option ['v'] ["verbose"]
-      (ReqArg
-         (\str flags ->
-            fmap (\n -> flags{optVerbosity = n}) $
-            E.fromEither $
-            ReadE.runReadE Verbosity.flagToVerbosity str)
-         "N")
-      "verbosity level: 0..3"
+      (NoArg
+         (\flags ->
+            return flags{optVerbosity = True}))
+      "verbose output"
   ]
 
 type Package = String
@@ -210,25 +216,25 @@
  
 depsSpecFiles :: Bool -> Flags -> [Package] -> E.ExceptionalT String IO ()
 depsSpecFiles rev flags pkgs = do
-  allpkgs <- T.lift $ listDirectory "."
+  allpkgs <- T.lift $ filter (\ f -> head f /= '.') <$> listDirectory "."
   (graph, nodes) <- createGraphNodes flags allpkgs pkgs
   let dir = if rev then Graph.suc' else Graph.pre'
   sortSpecFiles flags $ map package $ xdfsWith dir third nodes graph
   where
     third (_, _, c, _) = c
 
-readProvides :: Verbosity.Verbosity -> FilePath -> IO [String]
+readProvides :: Bool -> FilePath -> IO [String]
 readProvides verbose file = do
-  when (verbose >= Verbosity.verbose) $ hPutStrLn stderr file
+  when verbose $ hPutStrLn stderr file
   pkgs <- lines <$>
     rpmspec ["--rpms", "--qf=%{name}\n", "--define", "ghc_version any"] Nothing file
   let pkg = takeBaseName file
   return $ delete pkg pkgs
 
-getDepsSrcResolved :: Verbosity.Verbosity -> [(String,[String])] -> FilePath -> IO [String]
+getDepsSrcResolved :: Bool -> [(String,[String])] -> FilePath -> IO [String]
 getDepsSrcResolved verbose provides file =
   map (resolveBase provides) <$> do
-      when (verbose >= Verbosity.verbose) $ hPutStrLn stderr file
+      when verbose $ hPutStrLn stderr file
       -- ignore version bounds
       map (head . words) . lines <$>
         rpmspec ["--buildrequires", "--define", "ghc_version any"] Nothing file
diff --git a/rpmbuild-order.1 b/rpmbuild-order.1
new file mode 100644
--- /dev/null
+++ b/rpmbuild-order.1
@@ -0,0 +1,26 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.6.
+.TH RPMBUILD-ORDER "1" "August 2018" "rpmbuild-order 0.2" "User Commands"
+.SH NAME
+rpmbuild-order \- manual page for rpmbuild-order 0.2
+.SH SYNOPSIS
+.B rpmbuild-order
+[\fI\,OPTIONS\/\fR] [\fI\,sort|deps|rdeps\/\fR] \fI\,PKG-SPEC-OR-DIR \/\fR...
+.SH DESCRIPTION
+.TP
+\fB\-h\fR             \fB\-\-help\fR
+Show options
+.TP
+\fB\-V\fR             \fB\-\-version\fR
+Show version
+.TP
+\fB\-p[SEPARATOR]\fR  \fB\-\-parallel\fR[=\fI\,SEPARATOR\/\fR]
+Display independently buildable groups of packages, optionally with separator
+.TP
+\fB\-b\fR BRANCHDIR   \fB\-\-branch\fR=\fI\,BRANCHDIR\/\fR
+branch directory
+.TP
+\fB\-f\fR KIND        \fB\-\-format\fR=\fI\,KIND\/\fR
+output format: 'package' (default), 'spec', or 'dir'
+.TP
+\fB\-v\fR             \fB\-\-verbose\fR
+verbose output
diff --git a/rpmbuild-order.cabal b/rpmbuild-order.cabal
--- a/rpmbuild-order.cabal
+++ b/rpmbuild-order.cabal
@@ -1,5 +1,5 @@
 Name:             rpmbuild-order
-Version:          0.1
+Version:          0.2
 License:          BSD3
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -24,7 +24,7 @@
                    GHC == 8.4.3
 Cabal-Version:     >=1.6
 Build-Type:        Simple
-Extra-source-files: README.md TODO ChangeLog
+Extra-source-files: README.md TODO ChangeLog rpmbuild-order.1
 
 source-repository head
   type:     git
@@ -45,3 +45,4 @@
   GHC-Options:      -Wall
   Main-Is:          RpmbuildOrder.hs
   Extensions:       CPP
+  Other-modules:    Paths_rpmbuild_order
