diff --git a/src/Text/XML/Writer.hs b/src/Text/XML/Writer.hs
--- a/src/Text/XML/Writer.hs
+++ b/src/Text/XML/Writer.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverloadedStrings, TypeSynonymInstances, FlexibleInstances #-}
+{-# LANGUAGE OverloadedStrings, TypeSynonymInstances, FlexibleInstances, CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-} -- IsString for XML
 
 -- | Overcome XML insanity, node by node.
@@ -17,7 +17,11 @@
 module Text.XML.Writer
     (
     -- * Documents
-      document, soap
+      document
+    , documentA
+    , documentD
+    , documentAD
+    , soap
     , pprint
     -- * Elements
     , XML
@@ -46,6 +50,10 @@
 import qualified Data.Text.Lazy.IO as TL
 import Data.String (IsString(..))
 
+#if MIN_VERSION_mtl(2,3,0)
+import Control.Monad
+#endif
+
 -- | Node container to be rendered as children nodes.
 type XML = Writer (DL.DList Node) ()
 
@@ -70,7 +78,7 @@
 
 -- | Create a simple Document starting with a root element with a doctype.
 documentD :: Name             -- ^ Root node name
-            -> Maybe Doctype  -- ^ DOCTYPE 
+            -> Maybe Doctype  -- ^ DOCTYPE
             -> XML            -- ^ Contents
             -> Document
 documentD name dt children = Document { documentPrologue = Prologue def dt def
@@ -130,11 +138,11 @@
 content = node . NodeContent
 
 -- | Mass-convert to nodes.
--- 
+--
 -- > let array = element "container" $ many "wrapper" [1..3]
--- 
+--
 -- Which gives:
--- 
+--
 -- > <container>
 -- >     <wrapper>1</wrapper>
 -- >     <wrapper>2</wrapper>
diff --git a/xml-conduit-writer.cabal b/xml-conduit-writer.cabal
--- a/xml-conduit-writer.cabal
+++ b/xml-conduit-writer.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                xml-conduit-writer
-version:             0.1.1.4
+version:             0.1.1.5
 synopsis:            Warm and fuzzy creation of XML documents.
 description:
     “It can scarcely be denied that the supreme goal of
