diff --git a/Text/RSS.hs b/Text/RSS.hs
--- a/Text/RSS.hs
+++ b/Text/RSS.hs
@@ -111,7 +111,7 @@
 		deriving Show
 
 -- | Converts RSS to XML. 
-rssToXML :: RSS -> CFilter
+rssToXML :: RSS -> CFilter ()
 rssToXML (RSS title link description celems items) = 
     mkElemAttr "rss" [("version",literal "2.0")]
                      [mkElem "channel" ([mkTitle title, 
@@ -122,44 +122,44 @@
 				        ++ map mkItem items)]
 
 -- | Render XML as a string.
-showXML :: CFilter -> String
+showXML :: CFilter () -> String
 showXML = verbatim . cfilterToElem
 
-cfilterToElem :: CFilter -> Element
-cfilterToElem f = case f (CString False "") of
-                    [CElem e] -> xmlEscape stdXmlEscaper e
-                    []        -> error "RSS produced no output"
-                    _         -> error "RSS produced more than one output"
+cfilterToElem :: CFilter () -> Element ()
+cfilterToElem f = case f (CString False "" ()) of
+                    [CElem e _] -> xmlEscape stdXmlEscaper e
+                    []          -> error "RSS produced no output"
+                    _           -> error "RSS produced more than one output"
 
-mkSimple :: String -> String -> CFilter
+mkSimple :: String -> String -> CFilter ()
 mkSimple t str = mkElem t [literal str]
 
-mkTitle :: Title -> CFilter
+mkTitle :: Title -> CFilter ()
 mkTitle = mkSimple "title"
 
-mkLink :: Link -> CFilter
+mkLink :: Link -> CFilter ()
 mkLink = mkSimple "link" . show 
 
-mkDescription :: Description -> CFilter
+mkDescription :: Description -> CFilter ()
 mkDescription str = mkElem "description" [cdata str]
 
-mkDocs :: CFilter
+mkDocs :: CFilter ()
 mkDocs = mkSimple "docs" "http://www.rssboard.org/rss-specification"
 
-mkPubDate :: CalendarTime -> CFilter
+mkPubDate :: CalendarTime -> CFilter ()
 mkPubDate = mkSimple "pubDate" . formatDate
 
 formatDate :: CalendarTime -> String
 formatDate = formatCalendarTime defaultTimeLocale rfc822DateFormat
 
-mkCategory :: Maybe Domain -> String -> CFilter
+mkCategory :: Maybe Domain -> String -> CFilter ()
 mkCategory md s = mkElemAttr "category" attrs [literal s] 
     where attrs = maybe [] (\d -> [("domain", literal d)]) md
 
-maybeElem :: (a -> CFilter) -> Maybe a -> [CFilter]
+maybeElem :: (a -> CFilter ()) -> Maybe a -> [CFilter ()]
 maybeElem = maybe [] . ((:[]) .)
 
-mkChannelElem :: ChannelElem -> CFilter
+mkChannelElem :: ChannelElem -> CFilter ()
 mkChannelElem (Language str) = mkSimple "language" str
 mkChannelElem (Copyright str) = mkSimple "copyright" str
 mkChannelElem (ManagingEditor str) = mkSimple "managingEditor" str
@@ -192,10 +192,10 @@
 protocolName CloudProtocolXmlRpc = "xml-rpc"
 protocolName CloudProtocolSOAP = "soap"
 
-mkItem :: Item -> CFilter
+mkItem :: Item -> CFilter ()
 mkItem itemElems = mkElem "item" (map mkItemElem itemElems)
 
-mkItemElem :: ItemElem -> CFilter
+mkItemElem :: ItemElem -> CFilter ()
 mkItemElem (Title t) = mkTitle t
 mkItemElem (Link l) = mkLink l
 mkItemElem (Description d) = mkDescription d
diff --git a/rss.cabal b/rss.cabal
--- a/rss.cabal
+++ b/rss.cabal
@@ -1,5 +1,5 @@
 Name: rss
-Version: 3000.0.1
+Version: 3000.1.0
 Cabal-version: >=1.2
 Build-type: Simple
 Copyright: Jeremy Shaw 2004, Bjorn Bringert 2004-2006
@@ -13,10 +13,10 @@
 Flag split-base
 
 Library
-  build-depends: base, network, HaXml >=1.13 && <1.14
+  build-depends: base, network, HaXml >= 1.19.2 && < 1.20
   if flag(split-base)
     Build-depends: base >= 3.0, old-time, old-locale
   else
     Build-depends: base < 3.0
   Exposed-Modules: Text.RSS
-  ghc-options: -O2 -W -fwarn-incomplete-patterns
+  ghc-options: -W -fwarn-incomplete-patterns
