diff --git a/src/Text/XML/Stream/Parse.hs b/src/Text/XML/Stream/Parse.hs
--- a/src/Text/XML/Stream/Parse.hs
+++ b/src/Text/XML/Stream/Parse.hs
@@ -10,6 +10,7 @@
 {-# LANGUAGE RankNTypes                 #-}
 {-# LANGUAGE StandaloneDeriving         #-}
 {-# LANGUAGE TypeFamilies               #-}
+{-# LANGUAGE TypeOperators              #-}
 -- | This module provides both a native Haskell solution for parsing XML
 -- documents into a stream of events, and a set of parser combinators for
 -- dealing with a stream of events.
@@ -148,7 +149,6 @@
 import           Control.Monad.Trans.Maybe    (MaybeT (..))
 import           Control.Monad.Trans.Resource (MonadResource, MonadThrow (..),
                                                throwM)
-import           Data.Attoparsec.Internal     (concatReverse)
 import           Data.Attoparsec.Text         (Parser, anyChar, char, manyTill,
                                                skipWhile, string, takeWhile,
                                                takeWhile1, (<?>),
@@ -161,7 +161,7 @@
 import           Data.Char                    (isSpace)
 import           Data.Conduit.Attoparsec      (PositionRange, conduitParser)
 import qualified Data.Conduit.Text            as CT
-import           Data.Default.Class           (Default (..))
+import           Data.Default           (Default (..))
 import           Data.List                    (foldl', intercalate)
 import qualified Data.Map                     as Map
 import           Data.Maybe                   (fromMaybe, isNothing, mapMaybe)
@@ -390,8 +390,7 @@
                 let output
                         | c == '\xfeef' = cs
                         | otherwise = t
-                 in yield output >> idConduit
-    idConduit = await >>= maybe (return ()) (\x -> yield x >> idConduit)
+                 in yield output >> awaitForever yield
 
 -- | Parses a character stream into 'Event's. This function is implemented
 -- fully in Haskell using attoparsec-text for parsing. The produced error
@@ -417,10 +416,10 @@
         .| addBeginEnd
   where
     tokenize = conduitToken de
-    addBeginEnd = yield (Nothing, EventBeginDocument) >> addEnd
-    addEnd = await >>= maybe
-        (yield (Nothing, EventEndDocument))
-        (\e -> yield e >> addEnd)
+    addBeginEnd = do
+      yield (Nothing, EventBeginDocument)
+      awaitForever yield
+      yield (Nothing, EventEndDocument)
 
 toEventC :: Monad m => ParseSettings -> ConduitT (PositionRange, Token) EventPos m ()
 toEventC ps =
@@ -1152,13 +1151,12 @@
 newtype AttrParser a = AttrParser { runAttrParser :: [(Name, [Content])] -> Either SomeException ([(Name, [Content])], a) }
 
 instance Monad AttrParser where
-    return a = AttrParser $ \as -> Right (as, a)
     (AttrParser f) >>= g = AttrParser $ \as ->
         either Left (\(as', f') -> runAttrParser (g f') as') (f as)
 instance Functor AttrParser where
     fmap = liftM
 instance Applicative AttrParser where
-    pure = return
+    pure a = AttrParser $ \as -> Right (as, a)
     (<*>) = ap
 instance Alternative AttrParser where
     empty = AttrParser $ const $ Left $ toException $ XmlException "AttrParser.empty" Nothing
diff --git a/src/Text/XML/Stream/Render.hs b/src/Text/XML/Stream/Render.hs
--- a/src/Text/XML/Stream/Render.hs
+++ b/src/Text/XML/Stream/Render.hs
@@ -35,7 +35,7 @@
 import           Data.ByteString              (ByteString)
 import           Data.ByteString.Builder      (Builder)
 import           Conduit
-import           Data.Default.Class           (Default (def))
+import           Data.Default           (Default (def))
 import           Data.List                    (foldl')
 import           Data.Map                     (Map)
 import qualified Data.Map                     as Map
@@ -62,6 +62,7 @@
 renderText :: (PrimMonad m, MonadThrow m) => RenderSettings -> ConduitT Event Text m ()
 renderText rs = renderBytes rs .| decodeUtf8C
 
+{-# DEPRECATED rsPretty "Will be removed in future versions of `xml-conduit`. See <https://github.com/snoyberg/xml/issues/196>." #-}
 data RenderSettings = RenderSettings
     { rsPretty     :: Bool
     , rsNamespaces :: [(Text, Text)]
@@ -293,6 +294,7 @@
 
 -- | Convert a stream of 'Event's into a prettified one, adding extra
 -- whitespace. Note that this can change the meaning of your XML.
+{-# DEPRECATED prettify "Will be removed in future versions of `xml-conduit`. See <https://github.com/snoyberg/xml/issues/196>." #-}
 prettify :: Monad m => ConduitT (Flush Event) (Flush Event) m ()
 prettify = prettify' 0
 
diff --git a/xml-conduit.cabal b/xml-conduit.cabal
--- a/xml-conduit.cabal
+++ b/xml-conduit.cabal
@@ -1,7 +1,7 @@
 cabal-version:   1.14
 
 name:            xml-conduit
-version:         1.9.1.3
+version:         1.9.1.4
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>, Aristid Breitkreuz <aristidb@googlemail.com>
@@ -30,7 +30,7 @@
                    , xml-types                 >= 0.3.4    && < 0.4
                    , attoparsec                >= 0.10
                    , transformers              >= 0.2      && < 0.7
-                   , data-default-class
+                   , data-default
                    , blaze-markup              >= 0.5
                    , blaze-html                >= 0.5
                    , deepseq                   >= 1.1.0.0
