diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,23 @@
+Copyright 2008, Daan Leijen and Max Bolingbroke, 2016 David Luposchainsky. 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.
+
+This software is provided by the copyright holders "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 holders 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.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,13 @@
+wl-pprint-ansi compatibility module
+===================================
+
+This module defines a compatibility layer between the old `wl-pprint-ansi`
+module, and the new one (version 1+).
+
+This allows easily transitioning dependent packages from the old to the new
+package, by simply replacing `wl-pprint-ansi` with `wl-pprint-compat-old-ansi`
+in the `.cabal` file.
+
+Note that this module is **only for transitional purposes**, and therefore
+deprecated and wholly undocumented. For new development, use the current version
+of `wl-pprint`, and the ANSI terminal backend provided in `wl-pprint-ansi`.
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+> import Distribution.Simple
+> main = defaultMain
diff --git a/prettyprinter-compat-ansi-wl-pprint.cabal b/prettyprinter-compat-ansi-wl-pprint.cabal
new file mode 100644
--- /dev/null
+++ b/prettyprinter-compat-ansi-wl-pprint.cabal
@@ -0,0 +1,35 @@
+name:                prettyprinter-compat-ansi-wl-pprint
+version:             0.1
+cabal-version:       >= 1.10
+category:            User Interfaces, Text
+synopsis:            Prettyprinter compatibility module for previous users of the ansi-wl-pprint package.
+description:         See README.md
+license:             BSD2
+license-file:        LICENSE.md
+extra-source-files:  README.md
+author:              David Luposchainsky
+maintainer:          David Luposchainsky <dluposchainsky at google>
+bug-reports:         http://github.com/quchen/prettyprinter/issues
+homepage:            http://github.com/quchen/prettyprinter
+build-type:          Simple
+tested-with:         GHC==7.8.4, GHC==7.10.2, GHC==7.10.3, GHC==8.0.1, GHC==8.0.2
+
+source-repository head
+  type: git
+  location: git://github.com/quchen/prettyprinter.git
+
+library
+    exposed-modules:  Text.PrettyPrint.ANSI.Leijen
+    ghc-options:      -Wall
+    hs-source-dirs:   src
+    default-language: Haskell2010
+    other-extensions:
+          CPP
+        , LambdaCase
+        , OverloadedStrings
+
+    build-depends:
+          base < 127
+        , text
+        , prettyprinter >= 0 && < 0.2
+        , prettyprinter-ansi-terminal >= 0 && < 0.2
diff --git a/src/Text/PrettyPrint/ANSI/Leijen.hs b/src/Text/PrettyPrint/ANSI/Leijen.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/PrettyPrint/ANSI/Leijen.hs
@@ -0,0 +1,260 @@
+module Text.PrettyPrint.ANSI.Leijen {-# DEPRECATED "Compatibility module for users of ansi-wl-pprint - use Data.Text.Prettyprint.Doc instead" #-} (
+
+    Doc, putDoc, hPutDoc, empty, char, text, (<>), nest, line, linebreak, group,
+    softline, softbreak, hardline, flatAlt, renderSmart, align, hang, indent,
+    encloseSep, list, tupled, semiBraces, (<+>), (<$>), (</>), (<$$>), (<//>),
+    hsep, vsep, fillSep, sep, hcat, vcat, fillCat, cat, punctuate, fill,
+    fillBreak, enclose, squotes, dquotes, parens, angles, braces, brackets,
+    lparen, rparen, langle, rangle, lbrace, rbrace, lbracket, rbracket, squote,
+    dquote, semi, colon, comma, space, dot, backslash, equals, black, red,
+    green, yellow, blue, magenta, cyan, white, dullblack, dullred, dullgreen,
+    dullyellow, dullblue, dullmagenta, dullcyan, dullwhite, onblack, onred,
+    ongreen, onyellow, onblue, onmagenta, oncyan, onwhite, ondullblack,
+    ondullred, ondullgreen, ondullyellow, ondullblue, ondullmagenta, ondullcyan,
+    ondullwhite, bold, debold, underline, deunderline, plain, string, int,
+    integer, float, double, rational, Pretty(..), SimpleDoc, renderPretty,
+    renderCompact, displayS, displayIO, bool, column, columns, nesting, width
+
+) where
+
+
+
+import Prelude hiding ((<$>))
+
+import           Data.Monoid
+import qualified Data.Text.Lazy as TL
+import           System.IO
+
+import           Data.Text.Prettyprint.Doc                 (Pretty (..))
+import qualified Data.Text.Prettyprint.Doc                 as New
+import qualified Data.Text.Prettyprint.Doc.Render.Terminal as NewT
+
+
+
+type Doc = New.Doc NewT.AnsiTerminal
+type SimpleDoc = New.SimpleDoc NewT.AnsiTerminal
+
+
+
+putDoc :: Doc -> IO ()
+putDoc = NewT.putDoc
+
+hPutDoc :: Handle -> Doc -> IO ()
+hPutDoc = NewT.hPutDoc
+
+empty :: Doc
+empty = New.emptyDoc
+
+char :: Char -> Doc
+char = New.pretty
+
+text :: String -> Doc
+text = New.pretty
+
+nest :: Int -> Doc -> Doc
+nest  = New.nest
+
+line :: Doc
+line = New.line
+
+linebreak :: Doc
+linebreak = New.flatAlt New.line mempty
+
+group :: Doc -> Doc
+group = New.group
+
+softline :: Doc
+softline = New.softline
+
+softbreak :: Doc
+softbreak = New.group linebreak
+
+hardline :: Doc
+hardline = New.hardline
+
+flatAlt :: Doc -> Doc -> Doc
+flatAlt = New.flatAlt
+
+renderSmart :: Float -> Int -> Doc -> SimpleDoc
+renderSmart ribbonFraction pageWidth
+    = New.layoutSmart New.LayoutOptions
+        { New.layoutPageWidth = New.AvailablePerLine pageWidth (realToFrac ribbonFraction) }
+
+align :: Doc -> Doc
+align = New.align
+
+hang :: Int -> Doc -> Doc
+hang = New.hang
+
+indent :: Int -> Doc -> Doc
+indent = New.indent
+
+encloseSep :: Doc -> Doc -> Doc -> [Doc] -> Doc
+encloseSep = New.encloseSep
+
+list :: [Doc] -> Doc
+list = New.list
+
+tupled :: [Doc] -> Doc
+tupled = New.tupled
+
+semiBraces :: [Doc] -> Doc
+semiBraces = New.encloseSep New.lbrace New.rbrace New.semi
+
+(<+>), (<$>), (</>), (<$$>), (<//>) :: Doc -> Doc -> Doc
+(<+>) = (New.<+>)
+(<$>) = \x y -> x <> New.line <> y
+(</>) = \x y -> x <> softline <> y
+(<$$>) = \x y -> x <> linebreak <> y
+(<//>) = \x y -> x <> softbreak <> y
+
+hsep, vsep, fillSep, sep, hcat, vcat, fillCat, cat :: [Doc] -> Doc
+hsep = New.hsep
+vsep = New.vsep
+fillSep = New.fillSep
+sep = New.sep
+hcat = New.hcat
+vcat = New.vcat
+fillCat = New.fillCat
+cat = New.cat
+
+punctuate :: Doc -> [Doc] -> [Doc]
+punctuate = New.punctuate
+
+fill :: Int -> Doc -> Doc
+fill = New.fill
+
+fillBreak :: Int -> Doc -> Doc
+fillBreak = New.fillBreak
+
+enclose :: Doc -> Doc -> Doc -> Doc
+enclose = New.enclose
+
+squotes, dquotes, parens, angles, braces, brackets :: Doc -> Doc
+squotes = New.squotes
+dquotes = New.dquotes
+parens = New.parens
+angles = New.angles
+braces = New.braces
+brackets = New.brackets
+
+lparen, rparen, langle, rangle, lbrace, rbrace, lbracket, rbracket, squote,
+    dquote, semi, colon, comma, space, dot, backslash, equals :: Doc
+lparen = New.lparen
+rparen = New.rparen
+langle = New.langle
+rangle = New.rangle
+lbrace = New.lbrace
+rbrace = New.rbrace
+lbracket = New.lbracket
+rbracket = New.rbracket
+squote = New.squote
+dquote = New.dquote
+semi = New.semi
+colon = New.colon
+comma = New.comma
+space = New.space
+dot = New.dot
+backslash = New.backslash
+equals = New.equals
+
+black, red, green, yellow, blue, magenta, cyan, white, dullblack, dullred,
+    dullgreen, dullyellow, dullblue, dullmagenta, dullcyan, dullwhite, onblack,
+    onred, ongreen, onyellow, onblue, onmagenta, oncyan, onwhite, ondullblack,
+    ondullred, ondullgreen, ondullyellow, ondullblue, ondullmagenta, ondullcyan,
+    ondullwhite, bold, debold, underline, deunderline :: Doc -> Doc
+black         = NewT.color       NewT.Black
+red           = NewT.color       NewT.Red
+green         = NewT.color       NewT.Green
+yellow        = NewT.color       NewT.Yellow
+blue          = NewT.color       NewT.Blue
+magenta       = NewT.color       NewT.Magenta
+cyan          = NewT.color       NewT.Cyan
+white         = NewT.color       NewT.White
+dullblack     = NewT.colorDull   NewT.Black
+dullred       = NewT.colorDull   NewT.Red
+dullgreen     = NewT.colorDull   NewT.Green
+dullyellow    = NewT.colorDull   NewT.Yellow
+dullblue      = NewT.colorDull   NewT.Blue
+dullmagenta   = NewT.colorDull   NewT.Magenta
+dullcyan      = NewT.colorDull   NewT.Cyan
+dullwhite     = NewT.colorDull   NewT.White
+onblack       = NewT.bgColor     NewT.Black
+onred         = NewT.bgColor     NewT.Red
+ongreen       = NewT.bgColor     NewT.Green
+onyellow      = NewT.bgColor     NewT.Yellow
+onblue        = NewT.bgColor     NewT.Blue
+onmagenta     = NewT.bgColor     NewT.Magenta
+oncyan        = NewT.bgColor     NewT.Cyan
+onwhite       = NewT.bgColor     NewT.White
+ondullblack   = NewT.bgColorDull NewT.Black
+ondullred     = NewT.bgColorDull NewT.Red
+ondullgreen   = NewT.bgColorDull NewT.Green
+ondullyellow  = NewT.bgColorDull NewT.Yellow
+ondullblue    = NewT.bgColorDull NewT.Blue
+ondullmagenta = NewT.bgColorDull NewT.Magenta
+ondullcyan    = NewT.bgColorDull NewT.Cyan
+ondullwhite   = NewT.bgColorDull NewT.White
+bold = NewT.bold
+debold = id
+{-# WARNING debold "Debold does not do anything" #-}
+underline = NewT.underline
+deunderline = id
+{-# WARNING deunderline "Debold does not do anything" #-}
+
+plain :: Doc -> Doc
+plain = New.unAnnotate
+
+string :: String -> Doc
+string = New.pretty
+
+int :: Int -> Doc
+int = New.pretty
+
+integer :: Integer -> Doc
+integer = New.pretty
+
+float :: Float -> Doc
+float = New.pretty
+
+double :: Double -> Doc
+double = New.pretty
+
+rational :: Rational -> Doc
+rational = New.pretty . show
+
+renderPretty :: Float -> Int -> Doc -> SimpleDoc
+renderPretty ribbonFraction pageWidth
+    = New.layoutSmart New.LayoutOptions
+        { New.layoutPageWidth = New.AvailablePerLine pageWidth (realToFrac ribbonFraction) }
+
+
+renderCompact :: Doc -> SimpleDoc
+renderCompact = New.layoutCompact
+
+displayS :: SimpleDoc -> ShowS
+displayS sdoc =
+    let rendered = NewT.renderLazy sdoc
+    in (TL.unpack rendered ++)
+
+displayIO :: Handle -> SimpleDoc -> IO ()
+displayIO = NewT.renderIO
+
+bool :: Bool -> Doc
+bool = New.pretty
+
+column :: (Int -> Doc) -> Doc
+column = New.column
+
+columns :: (Maybe Int -> Doc) -> Doc
+columns f = New.pageWidth (f . toMaybeInt)
+  where
+    toMaybeInt :: New.PageWidth -> Maybe Int
+    toMaybeInt (New.AvailablePerLine cpl _) = Just cpl
+    toMaybeInt New.Unbounded = Nothing
+
+nesting :: (Int -> Doc) -> Doc
+nesting = New.nesting
+
+width :: Doc -> (Int -> Doc) -> Doc
+width = New.width
