diff --git a/rio-prettyprint.cabal b/rio-prettyprint.cabal
--- a/rio-prettyprint.cabal
+++ b/rio-prettyprint.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           rio-prettyprint
-version:        0.1.2.0
+version:        0.1.3.0
 synopsis:       Pretty-printing for RIO
 description:    Combine RIO's log capabilities with pretty printing
 category:       Development
@@ -26,6 +26,8 @@
   exposed-modules:
       RIO.PrettyPrint
       RIO.PrettyPrint.DefaultStyles
+      RIO.PrettyPrint.PrettyException
+      RIO.PrettyPrint.Simple
       RIO.PrettyPrint.StylesUpdate
       RIO.PrettyPrint.Types
       Text.PrettyPrint.Leijen.Extended
diff --git a/src/RIO/PrettyPrint/PrettyException.hs b/src/RIO/PrettyPrint/PrettyException.hs
new file mode 100644
--- /dev/null
+++ b/src/RIO/PrettyPrint/PrettyException.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE NoImplicitPrelude         #-}
+{-# LANGUAGE ExistentialQuantification #-}
+
+{-|
+This module provides a type representing pretty exceptions. It can be used as in
+the example below:
+
+@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Main (main) where
+
+import RIO
+         ( Exception, Handler (..), IO, RIO, Show, SomeException (..), Typeable
+         , ($), catches, displayException, exitFailure, fromString, logError
+         , mempty, throwIO
+         )
+import RIO.PrettyPrint
+         ( Pretty (..), Style (..), (<+>), prettyError, prettyInfo, style )
+import RIO.PrettyPrint.PrettyException ( PrettyException (..) )
+import RIO.PrettyPrint.Simple ( SimplePrettyApp, runSimplePrettyApp )
+
+main :: IO ()
+main = runSimplePrettyApp 80 mempty (action `catches` handleExceptions)
+ where
+  action :: RIO SimplePrettyApp ()
+  action = do
+      prettyInfo "Running action!"
+      throwIO (PrettyException MyPrettyException)
+
+  handleExceptions :: [Handler (RIO SimplePrettyApp) ()]
+  handleExceptions =
+    [ Handler handlePrettyException
+    , Handler handleSomeException
+    ]
+
+  handlePrettyException :: PrettyException -> RIO SimplePrettyApp ()
+  handlePrettyException e = do
+    prettyError $ pretty e
+    exitFailure
+
+  handleSomeException :: SomeException -> RIO SimplePrettyApp ()
+  handleSomeException (SomeException e) = do
+    logError $ fromString $ displayException e
+    exitFailure
+
+data MyPrettyException
+  = MyPrettyException
+  deriving (Show, Typeable)
+
+instance Pretty MyPrettyException where
+  pretty MyPrettyException =
+    "My" <+> style Highlight "pretty" <+> "exception!"
+
+instance Exception MyPrettyException
+@
+-}
+module RIO.PrettyPrint.PrettyException
+  ( PrettyException (..)
+  ) where
+
+import RIO (Exception, Show (..), Typeable)
+import Text.PrettyPrint.Leijen.Extended (Pretty (..))
+
+-- | Type representing pretty exceptions.
+--
+-- @since 0.1.3.0
+data PrettyException
+  = forall e. (Exception e, Pretty e) => PrettyException e
+  deriving Typeable
+
+instance Show PrettyException where
+  show (PrettyException e) = show e
+
+instance Pretty PrettyException where
+  pretty (PrettyException e) = pretty e
+
+instance Exception PrettyException
diff --git a/src/RIO/PrettyPrint/Simple.hs b/src/RIO/PrettyPrint/Simple.hs
new file mode 100644
--- /dev/null
+++ b/src/RIO/PrettyPrint/Simple.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+{-|
+This module exports a 'SimplePrettyApp' type, for providing a basic environment
+including pretty printing functionality.
+-}
+module RIO.PrettyPrint.Simple
+  ( SimplePrettyApp
+  , mkSimplePrettyApp
+  , runSimplePrettyApp
+  ) where
+
+import System.Environment (lookupEnv)
+
+import RIO
+         ( Bool (..), HasLogFunc (..), Int, LogFunc, Maybe (..), MonadIO, RIO
+         , ($), (<$>), isJust, lens, liftIO, logOptionsHandle, maybe, pure
+         , runRIO, setLogUseColor, stderr, withLogFunc
+         )
+import RIO.Process
+         ( HasProcessContext (..), ProcessContext, mkDefaultProcessContext )
+
+import RIO.PrettyPrint (HasTerm (..))
+import RIO.PrettyPrint.StylesUpdate (HasStylesUpdate (..), StylesUpdate (..))
+
+-- | A simple, non-customizable environment type, which provides
+-- pretty printing functionality.
+--
+-- @since 0.1.3.0
+data SimplePrettyApp = SimplePrettyApp
+  { spaLogFunc :: !LogFunc
+  , spaProcessContext :: !ProcessContext
+  , spaUseColor :: !Bool
+  , spaTermWidth :: !Int
+  , spaStylesUpdate :: !StylesUpdate
+  }
+
+instance HasLogFunc SimplePrettyApp where
+  logFuncL = lens spaLogFunc (\x y -> x { spaLogFunc = y })
+
+instance HasProcessContext SimplePrettyApp where
+  processContextL = lens spaProcessContext (\x y -> x { spaProcessContext = y })
+
+instance HasStylesUpdate SimplePrettyApp where
+  stylesUpdateL = lens spaStylesUpdate (\x y -> x { spaStylesUpdate = y })
+
+instance HasTerm SimplePrettyApp where
+  useColorL = lens spaUseColor (\x y -> x { spaUseColor = y })
+  termWidthL = lens spaTermWidth (\x y -> x { spaTermWidth = y })
+
+-- | Constructor for 'SimplePrettyApp'. If 'ProcessContext' is not supplied
+-- 'mkDefaultProcessContext' will be used to create it.
+--
+-- @since 0.1.3.0
+mkSimplePrettyApp
+  :: MonadIO m
+  => LogFunc
+  -> Maybe ProcessContext
+  -> Bool
+     -- ^ Use color?
+  -> Int
+     -- ^ Terminal width
+  -> StylesUpdate
+  -> m SimplePrettyApp
+mkSimplePrettyApp logFunc mProcessContext useColor termWidth stylesUpdate = do
+  processContext <- maybe mkDefaultProcessContext pure mProcessContext
+  pure $ SimplePrettyApp
+    { spaLogFunc = logFunc
+    , spaProcessContext = processContext
+    , spaUseColor = useColor
+    , spaTermWidth = termWidth
+    , spaStylesUpdate = stylesUpdate
+    }
+
+-- | Run with a default configured @SimplePrettyApp@, consisting of:
+--
+-- * Logging to 'stderr'
+--
+-- * If the @RIO_VERBOSE@ environment variable is set, turns on verbose logging
+--
+-- * Default process context
+--
+-- * Logging using color
+--
+-- @since 0.1.3.0
+runSimplePrettyApp
+  :: MonadIO m
+  => Int
+     -- ^ Terminal width
+  -> StylesUpdate
+  -> RIO SimplePrettyApp a
+  -> m a
+runSimplePrettyApp termWidth stylesUpdate m = liftIO $ do
+  verbose <- isJust <$> lookupEnv "RIO_VERBOSE"
+  lo <- setLogUseColor True <$> logOptionsHandle stderr verbose
+  withLogFunc lo $ \lf -> do
+    simplePrettyApp <- mkSimplePrettyApp lf Nothing True termWidth stylesUpdate
+    runRIO simplePrettyApp m
