diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2015, Liam O'Connor
+
+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 Liam O'Connor nor the names of other
+      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
+OWNER 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/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/filter/Main.hs b/filter/Main.hs
new file mode 100644
--- /dev/null
+++ b/filter/Main.hs
@@ -0,0 +1,9 @@
+import Image.LaTeX.Render.Pandoc
+import Image.LaTeX.Render
+import Text.Pandoc.JSON
+
+main :: IO ()
+main = toJSONFilter $ convertFormulaDataURI 2 defaultEnv eqopts
+ where eqopts InlineMath  = math
+       eqopts DisplayMath = displaymath
+
diff --git a/latex-formulae-pandoc.cabal b/latex-formulae-pandoc.cabal
new file mode 100644
--- /dev/null
+++ b/latex-formulae-pandoc.cabal
@@ -0,0 +1,46 @@
+name:                latex-formulae-pandoc
+version:             0.1.0.0
+synopsis:            Render LaTeX formulae in pandoc documents to images with an actual LaTeX installation
+description:         This library provides utility functions to convert LaTeX equations to images in Pandoc documents using the @latex-formulae-image@ package.
+                     It requires an actual LaTeX installation to work (@latex@,@dvips@), along with ImageMagick's @convert@ (which needs to understand PostScript)
+                     .
+                     An executable is also provided which can be used as a Pandoc filter from the commandline, which allows this technique to be used
+                     even for standalone Pandoc jobs.
+homepage:            http://github.com/liamoc/latex-formulae#readme
+license:             BSD3
+license-file:        LICENSE
+author:              Liam O'Connor
+maintainer:          liamoc@cse.unsw.edu.au
+copyright:           Liam O'Connor, 2015
+category:            Image
+build-type:          Simple
+cabal-version:       >=1.10
+source-repository head
+  type:     git
+  location: https://github.com/liamoc/latex-formulae
+
+library
+  exposed-modules:     Image.LaTeX.Render.Pandoc
+  build-depends:       base >=4.7 && <5
+                     , pandoc-types >= 1.12 && < 1.13 
+                     , latex-formulae-image >= 0.1 && < 0.2
+                     , JuicyPixels >= 3.2 && < 3.3
+                     , directory >= 1.2 && < 1.3
+                     , filepath >= 1.3 && < 1.5
+                     , base64-bytestring >= 1.0 && < 1.1
+                     , bytestring >= 0.10 && <0.11
+  hs-source-dirs:      src
+  ghc-options:         -Wall
+  default-language:    Haskell2010
+
+executable latex-formulae-filter
+  hs-source-dirs:      filter
+  main-is:             Main.hs
+  ghc-options:         -Wall
+  build-depends:       base >=4.7 && <5, latex-formulae-pandoc
+                     , pandoc-types >= 1.12 && < 1.13
+                     , latex-formulae-image >= 0.1 && < 0.2
+  default-language:    Haskell2010
+   
+
+  
diff --git a/src/Image/LaTeX/Render/Pandoc.hs b/src/Image/LaTeX/Render/Pandoc.hs
new file mode 100644
--- /dev/null
+++ b/src/Image/LaTeX/Render/Pandoc.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE LambdaCase #-}
+module Image.LaTeX.Render.Pandoc
+       ( -- * Data URIs
+         convertFormulaDataURI
+       , convertAllFormulaeDataURI
+         -- * Separate Files
+       , convertFormulaFiles
+       , convertAllFormulaeFiles
+         -- ** Name Supplies
+       , NameSupply
+       , newNameSupply
+         -- * Scaling
+       , ShrinkSize
+       ) where
+
+import Text.Pandoc.Definition
+import Text.Pandoc.Walk
+import Image.LaTeX.Render
+import Codec.Picture
+import Control.Applicative
+import Data.IORef
+import System.FilePath
+
+import qualified Data.ByteString.Base64.Lazy as B64
+import qualified Data.ByteString.Lazy.Char8 as BS
+
+dims :: Image a -> (Int,Int)
+dims = liftA2 (,) imageWidth imageHeight
+
+dimensions :: DynamicImage -> (Int,Int)
+dimensions (ImageRGB8 i)   = dims i
+dimensions (ImageRGBA8 i)  = dims i
+dimensions (ImageRGB16 i)  = dims i
+dimensions (ImageRGBA16 i) = dims i
+dimensions (ImageY8 i)     = dims i
+dimensions (ImageY16 i)    = dims i
+dimensions (ImageYA8 i)    = dims i
+dimensions (ImageYA16 i)   = dims i
+dimensions _               = error "Unsupported image format somehow!"
+
+-- | Denominator for various dimensions. For high DPI displays, it can be useful to use values of 2 or 4, so that the dimensions
+--   of the image are a fraction of the actual image size, and the image appears more crisp. Otherwise, a value of 1 will always
+--   produce sensible, if somewhat pixelated results.
+type ShrinkSize = Int
+
+-- | Convert a formula in a pandoc document to an image, embedding the image into the HTML using Data URIs.
+convertFormulaDataURI
+  :: ShrinkSize                   -- ^ Denominator for all dimensions. Useful for displaying high DPI images in small sizes, for retina displays. Otherwise set to 1.
+  -> EnvironmentOptions           -- ^ System environment settings
+  -> (MathType -> FormulaOptions) -- ^ LaTeX environment settings for each equation type (display and inline)
+  -> Inline -> IO Inline
+convertFormulaDataURI sh o1 o2 (Math t s) = imageForFormula o1 (o2 t) s >>= \case
+   Left e -> return $ Str (show e)
+   Right (b,i) -> let
+       Right bs = encodeDynamicPng i
+       dataUri = "data:image/png;base64," ++ BS.unpack (B64.encode bs)
+       (ow,oh) = dimensions i
+       (w,h) = (ow `div` sh, oh `div` sh)
+     in return $ RawInline (Format "html") $
+        "<img width="  ++ show w ++
+            " height=" ++ show h ++
+            " src=\""  ++ dataUri ++ "\"" ++
+            " class="  ++ (case t of InlineMath -> "inline-math"; _ -> "display-math") ++
+            " style=\"margin:0; vertical-align:-" ++ show (b `div` sh) ++ "px;\"/>"
+convertFormulaDataURI sh o1 o2 x = return x
+
+-- | Convert all formulae in a pandoc document to images, embedding the images into the HTML using Data URIs.
+convertAllFormulaeDataURI
+  :: ShrinkSize                   -- ^ Denominator for all dimensions. Useful for displaying high DPI images in small sizes, for retina displays. Otherwise set to 1.
+  -> EnvironmentOptions           -- ^ System environment settings
+  -> (MathType -> FormulaOptions) -- ^ LaTeX environment settings for each equation type (display and inline)
+  -> Pandoc -> IO Pandoc
+convertAllFormulaeDataURI a b c = walkM $ convertFormulaDataURI a b c 
+
+
+-- | If we use files for the images, we need some way of naming the image files we produce
+--   A NameSupply provides us with a source of unique names via an ever-increasing integer.
+--   It's important that any invocation of 'convertFormulaFiles' or 'convertAllFormulaeFiles'
+--   that shares the same image storage directory will also use the same name supply, or they
+--   will overwrite each others images.
+type NameSupply = IORef Int
+
+-- | Create a new name supply.
+newNameSupply :: IO NameSupply
+newNameSupply = newIORef 0
+
+-- | Convert a formula in a pandoc document to an image, embedding the image into the HTML using Data URIs.
+convertFormulaFiles
+  :: NameSupply                   -- ^ Unique file name supply. Reuse this for every invocation that shares the same image directory.
+  -> FilePath                     -- ^ Name of image directory where images will be stored
+  -> ShrinkSize                   -- ^ Denominator for all dimensions. Useful for displaying high DPI images in small sizes, for retina displays. Otherwise set to 1.
+  -> EnvironmentOptions           -- ^ System environment settings
+  -> (MathType -> FormulaOptions) -- ^ LaTeX environment settings for each equation type (display and inline)
+  -> Inline -> IO Inline
+convertFormulaFiles ns bn sh o1 o2 (Math t s) = imageForFormula o1 (o2 t) s >>= \case
+   Left e -> return $ Str (show e)
+   Right (b,i) -> do
+     fn <- readIORef ns
+     modifyIORef ns (+1)
+     let uri = bn </> show fn <.> "png"
+         (ow,oh) = dimensions i
+         (w,h) = (ow `div` sh, oh `div` sh)
+     _ <- writeDynamicPng uri i
+     return $ RawInline (Format "html") $
+        "<img width="  ++ show w ++
+            " height=" ++ show h ++
+            " src=\""  ++ uri ++ "\"" ++
+            " class="  ++ (case t of InlineMath -> "inline-math"; _ -> "display-math") ++
+            " style=\"margin:0; vertical-align:-" ++ show (b `div` sh) ++ "px;\"/>"
+convertFormulaFiles _ _ _ _ _ x = return x
+
+convertAllFormulaeFiles
+  :: NameSupply                   -- ^ Unique file name supply. Reuse this for every invocation that shares the same image directory.
+  -> FilePath                     -- ^ Name of image directory where images will be stored
+  -> ShrinkSize                   -- ^ Denominator for all dimensions. Useful for displaying high DPI images in small sizes, for retina displays. Otherwise set to 1.
+  -> EnvironmentOptions           -- ^ System environment settings
+  -> (MathType -> FormulaOptions) -- ^ LaTeX environment settings for each equation type (display and inline)
+  -> Pandoc -> IO Pandoc
+convertAllFormulaeFiles x y a b c = walkM $ convertFormulaFiles x y a b c
