diff --git a/DEPENDENCY-LICENSES.md b/DEPENDENCY-LICENSES.md
new file mode 100644
--- /dev/null
+++ b/DEPENDENCY-LICENSES.md
@@ -0,0 +1,145 @@
+# BSD3
+
+- HUnit
+- MonadCatchIO-transformers
+- QuickCheck
+- aeson
+- array
+- asn1-encoding
+- asn1-parse
+- asn1-types
+- attoparsec
+- base
+- base64-bytestring
+- bifunctors
+- binary
+- blaze-builder
+- blaze-builder-enumerator
+- blaze-html
+- blaze-markup
+- byteable
+- bytestring
+- bytestring-mmap
+- case-insensitive
+- cereal
+- cipher-aes
+- cipher-des
+- cipher-rc4
+- clientsession
+- comonad
+- configurator
+- connection
+- containers
+- contravariant
+- cookie
+- cprng-aes
+- crypto-api
+- crypto-cipher-types
+- crypto-numbers
+- crypto-pubkey
+- crypto-pubkey-types
+- crypto-random
+- cryptohash
+- data-default
+- data-default-class
+- data-default-instances-base
+- data-default-instances-containers
+- data-default-instances-dlist
+- data-default-instances-old-locale
+- deepseq
+- directory
+- directory-tree
+- distributive
+- dlist
+- either
+- email-validate
+- entropy
+- errors
+- exceptions
+- extensible-exceptions
+- filepath
+- free
+- ghc-prim
+- hashable
+- heist
+- http-types
+- integer-gmp
+- lens
+- lens-aeson
+- logict
+- monad-control
+- monads-tf
+- mtl
+- mwc-random
+- nats
+- network
+- network-uri
+- old-locale
+- parallel
+- parsec
+- pem
+- prelude-extras
+- pretty
+- primitive
+- process
+- profunctors
+- publicsuffixlist
+- pwstore-fast
+- random
+- reflection
+- regex-base
+- regex-posix
+- rts
+- safe
+- scientific
+- securemem
+- semigroupoids
+- semigroups
+- skein
+- snap
+- snap-core
+- snap-server
+- socks
+- split
+- stm
+- syb
+- tagged
+- template-haskell
+- text
+- tf-random
+- time
+- tls
+- transformers
+- transformers-base
+- transformers-compat
+- unix
+- unix-compat
+- unordered-containers
+- utf8-string
+- vector
+- vector-algorithms
+- void
+- wreq
+- x509
+- x509-store
+- x509-system
+- x509-validation
+- xmlhtml
+- zlib
+- zlib-bindings
+
+# OtherLicense
+
+- MonadRandom
+
+# MIT
+
+- attoparsec-enumerator
+- enumerator
+- http-client
+- http-client-tls
+- mandrill
+- mime-types
+- streaming-commons
+- zlib-enum
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) 2014, Parnell Springmeyer
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the {organization} nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/README.org b/README.org
new file mode 100644
--- /dev/null
+++ b/README.org
@@ -0,0 +1,34 @@
+* Welcome!
+  =snaplet-amqp= provides a convenience interface to the Haskell AMQP
+  package.
+
+  #+BEGIN_SRC
+  import           Control.Lens
+  import           Snap
+  import           Snap.Snaplet
+  import           Snap.Snaplet.Mandrill
+  import           Network.API.Mandrill  hiding (runMandrill)
+
+  data App = App
+      { _mandrill :: Snaplet Mandrill }
+
+  makeLenses ''App
+
+  instance HasMandrill (Handler b App) where
+      getMandrill = with mandrill getMandrill
+
+  app :: SnapletInit App App
+  app = makeSnaplet "app" "An snaplet example application." Nothing $ do
+      a <- nestSnaplet "mandrill" mandrill initMandrill
+      addRoutes appRoutes -- Your routes, I haven't defined any here
+      return $ App a
+
+  handler = do
+      runMandrill $ 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)
+
+  #+END_SRC
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/resources/mandrill/devel.cfg b/resources/mandrill/devel.cfg
new file mode 100644
--- /dev/null
+++ b/resources/mandrill/devel.cfg
@@ -0,0 +1,1 @@
+token  = "mandrilltokenhere"
diff --git a/snaplet-mandrill.cabal b/snaplet-mandrill.cabal
new file mode 100644
--- /dev/null
+++ b/snaplet-mandrill.cabal
@@ -0,0 +1,57 @@
+Name:                snaplet-mandrill
+Version:             0.1.0.1
+Synopsis:            Snap framework snaplet for the Mandrill API library.
+Homepage:            https://github.com/ixmatus/snaplet-mandrill
+License:             BSD3
+License-file:        LICENSE
+Author:              Parnell Springmeyer
+Maintainer:          parnell@digitalmentat.com
+Copyright:           (c) 2014 Parnell Springmeyer
+Category:            Web
+Build-type:          Simple
+Stability:           stable
+Bug-reports:         https://github.com/ixmatus/snaplet-mandrill/issues
+Package-url:         http://hackage.haskell.org/package/snaplet-mandrill
+Tested-with:         GHC == 7.6.3
+Cabal-version:       >=1.14.0
+
+description:
+  `snaplet-mandrill` is a snaplet for the Snap web framework providing
+  convenience functions and state management for the Haskell Mandrill
+  package.
+  .
+  Please refer to the README for an example - Cabal descriptions don't
+  make it easy to do so.
+
+Extra-source-files:
+    LICENSE
+    DEPENDENCY-LICENSES.md
+    README.org
+
+Data-files:
+    resources/mandrill/devel.cfg
+
+Library
+  Default-Language:     Haskell2010
+  HS-Source-Dirs:       src
+  Ghc-options: -Wall -fwarn-tabs -funbox-strict-fields
+               -fno-warn-orphans -fno-warn-unused-do-bind
+
+  Exposed-Modules:
+    Snap.Snaplet.Mandrill
+
+  Other-Modules:
+    Paths_snaplet_mandrill
+
+  Build-Depends:
+    base                >= 4.4     && < 5,
+    snap                >= 0.13    && < 0.14,
+    mandrill            >= 0.1     && < 0.2,
+    transformers        >= 0.4     && < 0.5,
+    configurator        >= 0.3     && < 0.4,
+    network             >= 2.5     && < 2.7,
+    mtl                 >= 2       && < 3
+
+Source-Repository head
+  Type:                 git
+  Location:             https://github.com/ixmatus/snaplet-mandrill
diff --git a/src/Snap/Snaplet/Mandrill.hs b/src/Snap/Snaplet/Mandrill.hs
new file mode 100644
--- /dev/null
+++ b/src/Snap/Snaplet/Mandrill.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+
+module Snap.Snaplet.Mandrill
+  ( initMandrill
+  , runMandrill
+  , MandrillState (..)
+  , HasMandrill   (..)
+  ) where
+
+import           Control.Applicative
+import           Control.Monad.State
+import           Control.Monad.Trans.Reader
+import           Data.Configurator
+import qualified Network.API.Mandrill       as M
+import           Paths_snaplet_mandrill
+import           Snap.Snaplet
+
+-------------------------------------------------------------------------------
+newtype MandrillState = MandrillState { token :: M.MandrillKey }
+
+-------------------------------------------------------------------------------
+class MonadIO m => HasMandrill m where
+    getMandrill :: m M.MandrillKey
+
+instance HasMandrill (Handler b MandrillState) where
+    getMandrill = gets token
+
+instance MonadIO m => HasMandrill (ReaderT M.MandrillKey m) where
+    getMandrill = ask
+
+-- | Initialize the Mandrill Snaplet.
+initMandrill :: SnapletInit b MandrillState
+initMandrill = makeSnaplet "mandrill" description datadir $ do
+    conf <- getSnapletUserConfig
+    return =<< MandrillState <$> (liftIO $ require conf "token")
+
+  where
+    description = "Snaplet for Mandrill library"
+    datadir = Just $ liftM (++"/resources/mandrill") getDataDir
+
+-------------------------------------------------------------------------------
+-- | Runs an Mandrill action in any monad with a HasAmqpConn instance.
+runMandrill :: (HasMandrill m) => M.MandrillT m a -> m (m a)
+runMandrill action = do
+    tk <- getMandrill
+    return $ M.runMandrill tk action
