diff --git a/Data/Random/RVar/Enum.hs b/Data/Random/RVar/Enum.hs
new file mode 100644
--- /dev/null
+++ b/Data/Random/RVar/Enum.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE OverlappingInstances, MultiParamTypeClasses, FlexibleInstances #-}
+module Data.Random.RVar.Enum() where
+
+import Data.Random.RVar
+import Data.Random.Distribution
+import Data.Random.Distribution.Uniform
+import Control.Applicative((<$>))
+
+-- TODO: Send to library author as a "missing instance"
+instance (Enum a) => Distribution Uniform a where
+  rvarT (Uniform l h) = toEnum <$> uniformT (fromEnum l) (fromEnum h)
+
diff --git a/WordPass.hs b/WordPass.hs
--- a/WordPass.hs
+++ b/WordPass.hs
@@ -1,6 +1,7 @@
 -- | Main module generating passwords.
 module Main where
 
+import           System.IO       (hFlush, stdout)
 import           System.Directory(getDirectoryContents)
 import qualified Data.Text    as Text
 import qualified Data.Text.IO as Text
@@ -37,9 +38,14 @@
 defaultDictDir = "/usr/share/dict"
 
 -- | Read a set of dictionaries and put the together.
-readDicts filenames = (V.fromList . Set.toList) `fmap` foldM action Set.empty filenames
+readDicts filenames = do putStr $ "Reading " ++ show (length filenames) ++ " files"
+                         result <- (V.fromList . Set.toList) `fmap` foldM action Set.empty filenames
+                         putStrLn ""
+                         return result
   where
     action currentSet filename = do newSet <- readDict filename
+                                    putStr "."
+                                    hFlush stdout
                                     return $! Set.fromList (V.toList newSet) `Set.union` currentSet
 
 -- | Read all dictionaries from a given directory.
@@ -90,7 +96,7 @@
 symbolSeparator = Text.singleton <$> randomElement symbolChars
 
 main = do dictWords <- readDictDir defaultDictDir
-          --print $ V.length dictWords
+          putStrLn  $ "Read " ++ show (V.length dictWords) ++ " words from dictionaries."
           putStr "Estimated password strength (bits): "
           print $ randomPasswordStrength dictWords numWs
           replicateM 5 $ do 
diff --git a/wordpass.cabal b/wordpass.cabal
--- a/wordpass.cabal
+++ b/wordpass.cabal
@@ -1,16 +1,14 @@
--- Initial wordpass.cabal generated by cabal init.  For further 
--- documentation, see http://haskell.org/cabal/users-guide/
-
 name:                wordpass
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Dictionary-based password generator
--- description:         
+description:         This script reads dict word lists and generates word-based passwords.
+                     Not unlike http://xkcd.com/936/.    
 homepage:            https://github.com/mjgajda/wordpass
 license:             BSD3
 license-file:        LICENSE
 author:              Michal J. Gajda
 maintainer:          mjgajda@gmail.com
--- copyright:           
+copyright:           Michal J. Gajda 
 category:            System
 build-type:          Simple
 extra-source-files:  README.md
@@ -18,7 +16,7 @@
 
 executable wordpass
   main-is:             WordPass.hs
-  -- other-modules:    Data.Random.RVar.Enum   
+  other-modules:    Data.Random.RVar.Enum   
   other-extensions:    OverlappingInstances, MultiParamTypeClasses, FlexibleInstances
   build-depends:       base >=4.6 && <4.7, text >=1.1 && <1.2, containers >=0.5 && <0.6, random-fu >=0.2 && <0.3, random-source >=0.3 && <0.4, vector >=0.10 && <0.11, directory >= 1.2 && < 1.4
   -- hs-source-dirs:      
