diff --git a/System/Console/Terminfo/PrettyPrint.hs b/System/Console/Terminfo/PrettyPrint.hs
--- a/System/Console/Terminfo/PrettyPrint.hs
+++ b/System/Console/Terminfo/PrettyPrint.hs
@@ -34,7 +34,9 @@
   , displayDoc
   , displayDoc'
   , displayDoc''
-  -- * 
+  -- * A Classy Interface
+  , PrettyTerm(..)
+  -- * Evaluation
   , SimpleTermDoc
   , evalTermState
   , displayCap
@@ -204,3 +206,32 @@
     Just output -> runTermOutput term output
     Nothing     -> displayIO stdout sdoc
   where sdoc = renderPretty ribbon cols doc
+
+class Pretty t => PrettyTerm t where
+  prettyTerm :: t -> TermDoc
+  prettyTerm = pretty
+  prettyTermList :: [t] -> TermDoc
+  prettyTermList = list . map prettyTerm
+
+instance PrettyTerm t => PrettyTerm [t] where
+  prettyTerm = prettyTermList
+
+instance PrettyTerm Char where 
+  prettyTerm = char
+  prettyTermList = string
+
+instance PrettyTerm Int 
+instance PrettyTerm Bool
+instance PrettyTerm Integer
+instance PrettyTerm Float
+instance PrettyTerm Double
+
+instance (PrettyTerm a,PrettyTerm b) => PrettyTerm (a,b) where
+  prettyTerm (x,y) = tupled [prettyTerm x, prettyTerm y]
+
+instance (PrettyTerm a,PrettyTerm b,PrettyTerm c) => PrettyTerm (a,b,c) where
+  prettyTerm (x,y,z) = tupled [prettyTerm x, prettyTerm y, prettyTerm z]
+
+instance PrettyTerm a => PrettyTerm (Maybe a) where
+  prettyTerm Nothing  = empty
+  prettyTerm (Just x) = prettyTerm x
diff --git a/wl-pprint-terminfo.cabal b/wl-pprint-terminfo.cabal
--- a/wl-pprint-terminfo.cabal
+++ b/wl-pprint-terminfo.cabal
@@ -1,6 +1,6 @@
 name:          wl-pprint-terminfo
 category:      Control, Monads, Text
-version:       0.2.1.3
+version:       0.2.2
 cabal-version: >= 1.6
 license:       BSD3
 license-file:  LICENSE
