diff --git a/Changelog.md b/Changelog.md
new file mode 100644
--- /dev/null
+++ b/Changelog.md
@@ -0,0 +1,5 @@
+### 0.1.1.0
+
+- Added support for Pandoc 2.0.
+- Dropped support for GHC older than 7.8 (pattern synonyms are required).
+
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,58 @@
+styleFromMeta
+=============
+
+Pandoc filter to apply styles found in the metadata of the document for various
+objects.
+
+Styling is supported for following types of objects:
+
+- Standalone images
+- Inline images
+- Links
+- Paragraphs (with restrictions, see below)
+
+Styles are read from the metadata of the document: they may reside inside the
+document or in a separate YAML file. For example
+
+```yaml
+    ---
+    img_style :
+      html : |
+        <div style="clear: both; text-align: center; margin-bottom: 16px">
+        <a href="$SRC$" style="margin-left: 10em;" alt="$ALT$">
+        <img border="0" src="$SRC$" /></a></div>
+      latex : |
+        \begin{center}
+        \includegraphics{$SRC$}
+        \end{center}
+    link_style :
+      html : |
+        <a href="$SRC$" style="margin-left: 1em; margin-right: 1em;">$ALT$</a>
+      latex : |
+        \href{$SRC$}{\colorbox{green}{$ALT$}}
+    para_style :
+      html : |
+        <span style="display: block; margin-bottom: 16px;"></span>
+    ...
+```
+
+declares styles *img\_style*, *link\_style* and *para\_style*. Their names
+(except for the last) are arbitrarily chosen and may be referred from the
+document, for example
+
+```markdown
+    ![$img_style$](../images/an_image.png)
+    [$link_style$ *here*](http://example.com/)
+```
+
+Placeholders `$ALT$`, `$SRC$` and `$TITLE$` from style declarations are to be
+replaced by concrete data found in the object declaration. In the last example
+`*here*` corresponds to `$ALT$`, and `http://example.com/` corresponds to
+`$SRC$`.
+
+As soon as paragraphs do not have place where to put extra data, style
+*para\_style* is applied to all paragraphs in the document. Currently only
+transformation to a span block is supported. Any contents found between opening
+and closing span tags are ignored: actual paragraph contents will be inserted
+inside them.
+
diff --git a/pandoc-stylefrommeta.cabal b/pandoc-stylefrommeta.cabal
--- a/pandoc-stylefrommeta.cabal
+++ b/pandoc-stylefrommeta.cabal
@@ -1,5 +1,5 @@
 name:                pandoc-stylefrommeta
-version:             0.1.0.1
+version:             0.1.1.0
 synopsis:            Pandoc filter to customize links, images and paragraphs
 description:         Pandoc filter to customize links, images and paragraphs
         (with restrictions). Styles are read from the metadata of the document:
@@ -8,9 +8,10 @@
 homepage:            http://github.com/lyokha/styleFromMeta
 license:             BSD3
 license-file:        LICENSE
+extra-source-files:  Changelog.md README.md
 author:              Alexey Radkov <alexey.radkov@gmail.com>
 maintainer:          Alexey Radkov <alexey.radkov@gmail.com>
-copyright:           2016 Alexey Radkov
+copyright:           2016-2017 Alexey Radkov
 category:            Text
 build-type:          Simple
 cabal-version:       >= 1.8
@@ -22,5 +23,6 @@
                      , containers >= 0.2
                      , MissingH >= 1.0.0
                      , HaTeX >= 3.3
+  extensions:          CPP
   main-is:             styleFromMeta.hs
 
diff --git a/styleFromMeta.hs b/styleFromMeta.hs
--- a/styleFromMeta.hs
+++ b/styleFromMeta.hs
@@ -1,27 +1,23 @@
--- styleFromMeta.hs
-
 {-# OPTIONS_HADDOCK prune, ignore-exports #-}
-{-# LANGUAGE CPP, ViewPatterns, PatternGuards #-}
-#if __GLASGOW_HASKELL__ >= 708
-{-# LANGUAGE PatternSynonyms #-}
-#endif
+{-# LANGUAGE ViewPatterns, PatternGuards, PatternSynonyms #-}
 
-import Text.Pandoc.JSON
-import Text.Pandoc.Walk (walk)
-import Text.Pandoc.Shared (stringify)
-import Text.Pandoc.XML (escapeStringForXML)
+import           Text.Pandoc.JSON
+import           Text.Pandoc.Walk (walk)
+import           Text.Pandoc.Shared (stringify)
+import           Text.Pandoc.XML (escapeStringForXML)
 import qualified Data.Map as M
-import Data.String.Utils (replace)
-import Text.LaTeX.Base.Syntax (protectString)
+import           Data.String.Utils (replace)
+import           Text.LaTeX.Base.Syntax (protectString)
 
-#if __GLASGOW_HASKELL__ >= 708
-pattern Style x <- Math InlineMath x
-pattern Alt x <- (dropWhile (==Space) -> x)
+#if MIN_VERSION_pandoc(2,0,0)
+#define MBPLAIN Plain
 #else
-#define Style Math InlineMath
-#define Alt(x) (dropWhile (==Space) -> x)
+#define MBPLAIN Para
 #endif
 
+pattern Style x <- Math InlineMath x
+pattern Alt x <- (dropWhile (== Space) -> x)
+
 type MMap = M.Map String MetaValue
 type PureInlineParams = ([Inline], Target)          -- style:(alt, target)
 type InlineParams = (Inline, [Inline], Target)      -- (style:alt, target)
@@ -86,7 +82,7 @@
 styleFromMeta _ p = return p
 
 substStyle :: Format -> MMap -> Block -> Block
-substStyle fm@(Format fmt) m b@(Para [Image attr (Style style : Alt (alt)) tgt])
+substStyle fm@(Format fmt) m b@(Para [Image attr (Style style : Alt alt) tgt])
     | Just (MetaMap mm) <- M.lookup style m =
         let params = (alt, tgt)
             substStyle' (Just (MetaBlocks [RawBlock f s])) =
@@ -101,7 +97,7 @@
     | otherwise = b
 substStyle fm@(Format fmt) m (Para cnt)
     | Just (MetaMap mm) <- M.lookup "para_style" m
-    , Just (MetaBlocks [Para [Span attr _]]) <- M.lookup fmt mm =
+    , Just (MetaBlocks [MBPLAIN [Span attr _]]) <- M.lookup fmt mm =
         walk (substInlineStyle fm m) $ Plain [Span attr cnt]
 substStyle fm m b = walk (substInlineStyle fm m) b
 
@@ -109,7 +105,8 @@
 substInlineStyle fm@(Format fmt) m
                  i@(toInlineParams -> Just ((Style style, alt, tgt), cons))
     | Just (MetaMap mm) <- M.lookup style m =
-        let substInlineStyle' (Just (MetaBlocks [Para (RawInline f s : r)])) =
+        let substInlineStyle' (Just (MetaBlocks
+                                        [MBPLAIN (RawInline f s : r)])) =
                 RawInline f $ substParams fm params $
                                 s ++ stringify' fm (map subst r)
                 where params = (alt, tgt)
@@ -121,9 +118,9 @@
 substInlineStyle _ _ i = i
 
 toInlineParams :: Inline -> Maybe (InlineParams, InlineCons)
-toInlineParams (Image attr (style@(Style _) : Alt (alt)) tgt) =
+toInlineParams (Image attr (style@(Style _) : Alt alt) tgt) =
     Just ((style, alt, tgt), Image attr)
-toInlineParams (Link attr (style@(Style _) : Alt (alt)) tgt) =
+toInlineParams (Link attr (style@(Style _) : Alt alt) tgt) =
     Just ((style, alt, tgt), Link attr)
 toInlineParams _ = Nothing
 
