diff --git a/src/XMonad/Wallpaper.hs b/src/XMonad/Wallpaper.hs
--- a/src/XMonad/Wallpaper.hs
+++ b/src/XMonad/Wallpaper.hs
@@ -7,6 +7,30 @@
 import Control.Applicative
 import System.Random
 
+{- |
+Example usage: (~/.xmonad/xmonad.hs)
+
+> import XMonad
+> import XMonad.Config.Desktop
+> import XMonad.Wallpaper
+> main = do
+>     setRandomWallpaper ["paths-of-your choice", "$HOME/Pictures/Wallpapers"]
+>     xmonad $ desktopConfig
+>        { terminal    = "urxvt"
+>        , modMask     = mod4Mask
+>        }
+
+Paths will be expanded using environment variables. 
+The following syntax are supported:
+
+> epxand $HOME/Pictures
+\/home\/user/Pictures
+
+> expand ${HOME}ABC
+\/home\/userABC
+
+-}
+
 setRandomWallpaper filepaths = do
     rootPaths  <- mapM expand filepaths
     candidates <- findImages rootPaths
diff --git a/src/XMonad/Wallpaper/Expand.hs b/src/XMonad/Wallpaper/Expand.hs
--- a/src/XMonad/Wallpaper/Expand.hs
+++ b/src/XMonad/Wallpaper/Expand.hs
@@ -1,4 +1,4 @@
-module XMonad.Wallpaper.Expand where
+module XMonad.Wallpaper.Expand (expand) where
 
 import Control.Monad.State
 import Data.List
@@ -26,15 +26,21 @@
     let (a, b) = variable as in a : parse b
 parse as = 
     let (a, b) = literal as in a : parse b
-    
-t0 = do
-    let ast = parse "$HOME/Pictures/Wallpapers"
-    values <- mapM interpolate ast
-    putStrLn $ show values
 
 interpolate (Variable var) = maybe "" id <$> getEnv var
 interpolate (Literal str) = return str
 
+expand :: String -> IO String
+{- |
+Expand string using environment variables.
+The following syntax are supported
+
+> epxand $HOME/Pictures
+\/home\/user/Pictures
+
+> expand ${HOME}ABC
+\/home\/userABC
+-}
 expand str = do
     let ast = parse str
     concat <$> mapM interpolate ast
diff --git a/src/XMonad/Wallpaper/Find.hs b/src/XMonad/Wallpaper/Find.hs
--- a/src/XMonad/Wallpaper/Find.hs
+++ b/src/XMonad/Wallpaper/Find.hs
@@ -1,4 +1,4 @@
-module XMonad.Wallpaper.Find where
+module XMonad.Wallpaper.Find (findImages) where
 
 import System.Posix.Directory
 import System.Posix.Files
@@ -73,6 +73,9 @@
 isImage (RegularFile filepath) = isPrefixOf "image" <$> mimetype filepath
 isImage _ = return False
 
+{- |
+Recursively search supplied paths. Files are filtered by mimetypes, which is determined by magic bits. Duplicated paths will be removed.
+-}
 findImages filepaths = do
     paths  <- catMaybes <$> mapM toUnixFile filepaths
     files  <- concat <$> mapM findDirRecursive paths
diff --git a/xmonad-wallpaper.cabal b/xmonad-wallpaper.cabal
--- a/xmonad-wallpaper.cabal
+++ b/xmonad-wallpaper.cabal
@@ -10,7 +10,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.0.1.0
+version:             0.0.1.1
 
 -- A short (one-line) description of the package.
 synopsis:            
