diff --git a/src/System/Console/Terminfo/PrettyPrint.hs b/src/System/Console/Terminfo/PrettyPrint.hs
--- a/src/System/Console/Terminfo/PrettyPrint.hs
+++ b/src/System/Console/Terminfo/PrettyPrint.hs
@@ -1,11 +1,11 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE TypeFamilies #-}
 module System.Console.Terminfo.PrettyPrint
   (
   -- * Raw Effect (requires the effect be present)
     ScopedEffect(..)
   , with
   , Effect(..) -- unpaired effects
-  , HasEffect(..)
   -- ** Graceful degradation
   , soft
   -- ** Effects (built with soft)
@@ -148,12 +148,6 @@
 type TermDoc = Doc Effect
 type SimpleTermDoc = SimpleDoc Effect
 
-class HasEffect e where
-  effect :: e -> Effect
-
-instance HasEffect Effect where
-  effect = id
-
 tryTerm :: MonadPlus m => m TermOutput -> m TermOutput
 tryTerm m = m `mplus` return mempty
 
@@ -251,9 +245,9 @@
   prettyTerm = char
   prettyTermList = prettyList
 
-instance HasEffect e => PrettyTerm (Doc e) where
-  prettyTerm = fmap effect
-  prettyTermList = list . map (fmap effect)
+instance e ~ Effect => PrettyTerm (Doc e) where
+  prettyTerm = id
+  prettyTermList = list
 
 instance PrettyTerm Strict.ByteString
 instance PrettyTerm Lazy.ByteString
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:            3.3.1
+version:            3.4
 cabal-version:      >= 1.6
 license:            BSD3
 license-file:       LICENSE
@@ -41,6 +41,7 @@
   includes: cursed.h
 
   extensions: CPP
+  other-extensions: TypeFamilies
 
   build-depends:
     base             == 4.*,
