diff --git a/pandoc-crossref.cabal b/pandoc-crossref.cabal
--- a/pandoc-crossref.cabal
+++ b/pandoc-crossref.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                pandoc-crossref
-version:             0.1.5.1
+version:             0.1.5.2
 synopsis:            Pandoc filter for cross-references
 description:         pandoc-crossref is a pandoc filter for numbering figures, equations, tables and cross-references to them.
 license:             GPL-2
@@ -23,7 +23,7 @@
 source-repository this
   type: git
   location: https://github.com/lierdakil/pandoc-crossref
-  tag: v0.1.5.1
+  tag: v0.1.5.2
 
 library
   exposed-modules:     Text.Pandoc.CrossRef
diff --git a/src/Text/Pandoc/CrossRef.hs b/src/Text/Pandoc/CrossRef.hs
--- a/src/Text/Pandoc/CrossRef.hs
+++ b/src/Text/Pandoc/CrossRef.hs
@@ -1,10 +1,60 @@
+{- |
+   Module      : Text.Pandoc.CrossRef
+   Copyright   : Copyright (C) 2015 Nikolay Yakimov
+   License     : GNU GPL, version 2 or above
+
+   Maintainer  : Nikolay Yakimov <root@livid.pp.ru>
+   Stability   : alpha
+   Portability : portable
+
+Public interface to pandoc-crossref library
+
+Example of use:
+
+> import Text.Pandoc
+> import Text.Pandoc.JSON
+>
+> import Text.Pandoc.CrossRef
+>
+> main :: IO ()
+> main = toJSONFilter go
+>   where
+>     go fmt p@(Pandoc meta _) = runCrossRefIO meta fmt action p
+>       where
+>         action (Pandoc _ bs) = do
+>           meta' <- crossRefMeta
+>           bs' <- crossRefBlocks bs
+>           return $ Pandoc meta' bs'
+
+This module also exports utility functions for setting up meta-settings for
+pandoc-crossref. Refer to documentation for a complete list of metadata field
+names. All functions accept a single argument of type, returned by
+"Text.Pandoc.Builder" functions, and return 'Meta'.
+
+Example:
+
+> runCrossRefIO meta fmt crossRefBlocks blocks
+>   where
+>     meta =
+>          figureTitle (str "Figura")
+>       <> tableTitle (str "Tabla")
+>       <> figPrefix (str "fig.")
+>       <> eqnPrefix (str "ec.")
+>       <> tblPrefix (str "tbl.")
+>       <> loftitle (header 1 $ text "Lista de figuras")
+>       <> lotTitle (header 1 $ text "Lista de tablas")
+>       <> chaptersDepth (MetaString "2")
+
+-}
+
 module Text.Pandoc.CrossRef (
-    getSettings
-  , crossRefBlocks
+    crossRefBlocks
   , crossRefMeta
   , runCrossRef
   , runCrossRefIO
   , module SG
+  , CrossRefM
+  , CrossRefEnv(..)
   ) where
 
 import Control.Monad.State
@@ -20,13 +70,18 @@
 import Text.Pandoc.CrossRef.Util.ModifyMeta
 import Text.Pandoc.CrossRef.Util.Settings.Gen as SG
 
+-- | Enviromnent for 'CrossRefM'
 data CrossRefEnv = CrossRefEnv {
-                      creSettings :: Meta
-                    , creOptions :: Options
+                      creSettings :: Meta -- ^Metadata settings
+                    , creOptions :: Options -- ^Internal pandoc-crossref options
                    }
 
+-- | Essentially a reader monad for basic pandoc-crossref environment
 type CrossRefM a = R.Reader CrossRefEnv a
 
+{- | Walk over blocks, while inserting cross-references, list-of, etc.
+
+Works in 'CrossRefM' monad. -}
 crossRefBlocks :: [Block] -> CrossRefM [Block]
 crossRefBlocks blocks = do
   opts <- R.asks creOptions
@@ -38,12 +93,21 @@
       >>= bottomUpM (listOf opts)
   return $ evalState doWalk def
 
+{- | Modifies metadata for LaTeX output, adding header-includes instructions
+to setup custom and builtin environments.
+
+Note, that if output format is not "latex", this function does nothing.
+
+Works in 'CrossRefM' monad. -}
 crossRefMeta :: CrossRefM Meta
 crossRefMeta = do
   opts <- R.asks creOptions
   dtv <- R.asks creSettings
   return $ modifyMeta opts dtv
 
+{- | Run an action in 'CrossRefM' monad with argument, and return pure result.
+
+This is primary function to work with 'CrossRefM' -}
 runCrossRef :: (Walkable a b) => Meta -> Maybe Format -> (a -> CrossRefM b) -> a -> b
 runCrossRef meta fmt action arg = R.runReader (action arg) env
   where
@@ -53,6 +117,10 @@
           , creOptions = getOptions settings fmt
          }
 
+{- | Run an action in 'CrossRefM' monad with argument, and return 'IO' result.
+
+This function will attempt to read pandoc-crossref settings from settings
+file specified by crossrefYaml metadata field. -}
 runCrossRefIO :: (Walkable a b) => Meta -> Maybe Format -> (a -> CrossRefM b) -> a -> IO b
 runCrossRefIO meta fmt action arg = do
   settings <- getSettings meta
