diff --git a/mandrill.cabal b/mandrill.cabal
--- a/mandrill.cabal
+++ b/mandrill.cabal
@@ -1,5 +1,5 @@
 name:                mandrill
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Library for interfacing with the Mandrill JSON API
 description:         Pure Haskell client for the Mandrill JSON API
 license:             MIT
diff --git a/src/Network/API/Mandrill.hs b/src/Network/API/Mandrill.hs
--- a/src/Network/API/Mandrill.hs
+++ b/src/Network/API/Mandrill.hs
@@ -1,4 +1,11 @@
+{-| This package is an attempt to expose the Mandrill JSON API in pure Haskell.
+    To do that, the library API comes in two flavours:
 
+    * An IO-based, low-level 1:1 mapping of the JSON API,
+      as described on <https://mandrillapp.com/api/docs/ the website>.
+    * A handy monad transformer which can be plugged in your stack of choice.
+-}
+
 module Network.API.Mandrill (
     module M
   , sendEmail
@@ -6,6 +13,9 @@
   , newTextMessage
   , newHtmlMessage
   , liftIO
+
+  -- * Appendix: Example Usage
+  -- $exampleusage
   ) where
 
 import Control.Monad.Reader
@@ -21,16 +31,39 @@
 import qualified Data.Text as T
 import qualified Data.Aeson as JSON
 
+{- $exampleusage
 
+The API was designed to allow to get you started as quickly as possible:
+
+> {-# LANGUAGE OverloadedStrings #-}
+> import Text.Email.Validate
+> import Network.API.Mandrill
+> 
+> main :: IO ()
+> main = do
+>   case validate "foo@example.com" of
+>     Left err   -> print $ "Invalid email!" ++ show err
+>     Right addr -> runMandrill "MYTOKENHERE" $ do
+>       let msg = "<p>My Html</p>"
+>       res <- sendEmail (newTextMessage addr [addr] "Hello" msg)
+>       case res of
+>         MandrillSuccess k -> liftIO (print k)
+>         MandrillFailure f -> liftIO (print f)
+
+-}
+
 --------------------------------------------------------------------------------
-emptyMessage :: EmailAddress -> EmailAddress -> MandrillMessage
+-- | Builds an empty message, given only the email of the sender and
+-- the emails of the receiver. Please note that the "Subject" will be empty,
+-- so you need to use either @newTextMessage@ or @newHtmlMessage@ to populate it.
+emptyMessage :: EmailAddress -> [EmailAddress] -> MandrillMessage
 emptyMessage f t = MandrillMessage {
    _mmsg_html = mempty
  , _mmsg_text = Nothing
  , _mmsg_subject = T.empty
  , _mmsg_from_email = f
  , _mmsg_from_name = Nothing
- , _mmsg_to = [newRecipient t]
+ , _mmsg_to = map newRecipient t
  , _mmsg_headers = JSON.Null
  , _mmsg_important = Nothing
  , _mmsg_track_opens = Nothing
@@ -59,22 +92,33 @@
   }
 
 
-
 --------------------------------------------------------------------------------
+-- | Create a new HTML message.
 newHtmlMessage :: EmailAddress
-               -> EmailAddress
+               -- ^ Sender email
+               -> [EmailAddress]
+               -- ^ Receivers email
                -> T.Text
+               -- ^ Subject
                -> Html
+               -- ^ The HTML body
                -> MandrillMessage
 newHtmlMessage f t subj html = let body = mkMandrillHtml html in
   ((mmsg_html .~ body) . (mmsg_subject .~ subj)) $ (emptyMessage f t)
 
 
 --------------------------------------------------------------------------------
+-- | Create a new textual message. By default Mandrill doesn't require you
+-- to specify the @mmsg_text@ when sending out the JSON Payload, and this
+-- function ensure it will be present.
 newTextMessage :: EmailAddress
-               -> EmailAddress
+               -- ^ Sender email
+               -> [EmailAddress]
+               -- ^ Receivers email
                -> T.Text
+               -- ^ Subject
                -> T.Text
+               -- ^ The body, as normal text.
                -> MandrillMessage
 newTextMessage f t subj txt = let body = unsafeMkMandrillHtml txt in
   ((mmsg_html .~ body) .
@@ -83,6 +127,11 @@
 
 
 --------------------------------------------------------------------------------
+-- | The simplest way to use the API. All you need to provide is a valid
+-- 'MandrillMessage' and this function will send an email inside a
+-- 'MandrillT' transformer. You are not forced to use the 'MandrillT' context
+-- though. Have a look at "Network.API.Mandrill.Messages" for an IO-based,
+-- low lever function for sending email.
 sendEmail :: MonadIO m
           => MandrillMessage
           -> MandrillT m (MandrillResponse [MessagesResponse])
