diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Pretty library change log
 
+## 1.1.1.2 -- 18th August, 2014
+
+* Add NFData and Eq instances (by Ivan Lazar Miljenovic)
+
 ## 1.1.1.1
 
 * Update pretty cabal file and readme.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -5,9 +5,10 @@
 This is useful for compilers and related tools.
 
 It is based on the pretty-printer outlined in the  paper 'The Design
-of a Pretty-printing Library' in Advanced Functional Programming,
-Johan Jeuring and Erik Meijer (eds), LNCS 925
-<http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps>
+of a Pretty-printing Library' by John Hughes in Advanced Functional
+Programming, 1995. It can be found
+[here](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.8777).
+
 
 ## Licensing
 
diff --git a/pretty.cabal b/pretty.cabal
--- a/pretty.cabal
+++ b/pretty.cabal
@@ -1,5 +1,5 @@
 name:          pretty
-version:       1.1.1.1
+version:       1.1.1.2
 synopsis:      Pretty-printing library
 description:
         This package contains a pretty-printing library, a set of API's
@@ -30,7 +30,8 @@
     exposed-modules:
         Text.PrettyPrint
         Text.PrettyPrint.HughesPJ
-    build-depends: base >= 3 && < 5
+    build-depends: base >= 3 && < 5,
+                   deepseq >= 1.1 && < 1.4
     extensions: CPP, BangPatterns
     ghc-options: -Wall -fwarn-tabs
 
diff --git a/src/Text/PrettyPrint/HughesPJ.hs b/src/Text/PrettyPrint/HughesPJ.hs
--- a/src/Text/PrettyPrint/HughesPJ.hs
+++ b/src/Text/PrettyPrint/HughesPJ.hs
@@ -75,8 +75,10 @@
     ) where
 #endif
 
-import Data.Monoid ( Monoid(mempty, mappend) )
-import Data.String ( IsString(fromString) )
+import Control.DeepSeq ( NFData(rnf) )
+import Data.Function   ( on )
+import Data.Monoid     ( Monoid(mempty, mappend) )
+import Data.String     ( IsString(fromString) )
 
 -- ---------------------------------------------------------------------------
 -- The Doc calculus
@@ -235,6 +237,24 @@
   showsPrec _ doc cont = fullRender (mode style) (lineLength style)
                                     (ribbonsPerLine style)
                                     txtPrinter cont doc
+
+instance Eq Doc where
+  (==) = (==) `on` render
+
+instance NFData Doc where
+  rnf Empty               = ()
+  rnf (NilAbove d)        = rnf d
+  rnf (TextBeside td i d) = rnf td `seq` rnf i `seq` rnf d
+  rnf (Nest k d)          = rnf k  `seq` rnf d
+  rnf (Union ur ul)       = rnf ur `seq` rnf ul
+  rnf NoDoc               = ()
+  rnf (Beside ld s rd)    = rnf ld `seq` rnf s `seq` rnf rd
+  rnf (Above ud s ld)     = rnf ud `seq` rnf s `seq` rnf ld
+
+instance NFData TextDetails where
+  rnf (Chr c)    = rnf c
+  rnf (Str str)  = rnf str
+  rnf (PStr str) = rnf str
 
 -- ---------------------------------------------------------------------------
 -- Values and Predicates on GDocs and TextDetails
