diff --git a/dbus.cabal b/dbus.cabal
--- a/dbus.cabal
+++ b/dbus.cabal
@@ -1,5 +1,5 @@
 name: dbus
-version: 0.10.9
+version: 0.10.9.1
 license: GPL-3
 license-file: license.txt
 author: John Millikin <john@john-millikin.com>
@@ -83,7 +83,7 @@
 source-repository this
   type: git
   location: https://john-millikin.com/code/haskell-dbus/
-  tag: haskell-dbus_0.10.9
+  tag: haskell-dbus_0.10.9.1
 
 library
   ghc-options: -Wall -O2
diff --git a/lib/DBus/Introspection.hs b/lib/DBus/Introspection.hs
--- a/lib/DBus/Introspection.hs
+++ b/lib/DBus/Introspection.hs
@@ -74,7 +74,8 @@
 	, propertyWrite
 	) where
 
-import           Control.Monad ((>=>))
+import qualified Control.Applicative
+import           Control.Monad ((>=>), ap, liftM)
 import           Control.Monad.ST (runST)
 import           Data.List (isPrefixOf)
 import qualified Data.STRef as ST
@@ -284,6 +285,13 @@
 children f p = mapM f . concatMap p . X.elementChildren
 
 newtype XmlWriter a = XmlWriter { runXmlWriter :: Maybe (a, String) }
+
+instance Functor XmlWriter where
+	fmap = liftM
+
+instance Control.Applicative.Applicative XmlWriter where
+	pure = return
+	(<*>) = ap
 
 instance Monad XmlWriter where
 	return a = XmlWriter $ Just (a, "")
diff --git a/lib/DBus/Wire.hs b/lib/DBus/Wire.hs
--- a/lib/DBus/Wire.hs
+++ b/lib/DBus/Wire.hs
@@ -26,7 +26,8 @@
 	, unmarshalMessageM
 	) where
 
-import           Control.Monad (liftM, when, unless)
+import qualified Control.Applicative
+import           Control.Monad (ap, liftM, when, unless)
 import qualified Data.ByteString
 import           Data.ByteString (ByteString)
 import qualified Data.ByteString.Char8
@@ -95,6 +96,17 @@
 	{ unWire :: Endianness -> s -> WireR s a
 	}
 
+instance Functor (Wire s) where
+	{-# INLINE fmap #-}
+	fmap = liftM
+
+instance Control.Applicative.Applicative (Wire s) where
+	{-# INLINE pure #-}
+	pure = return
+	
+	{-# INLINE (<*>) #-}
+	(<*>) = ap
+
 instance Monad (Wire s) where
 	{-# INLINE return #-}
 	return a = Wire (\_ s -> WireRR a s)
@@ -708,6 +720,10 @@
 		Left err -> Left err
 		Right x -> Right (f x)
 
+instance Control.Applicative.Applicative (ErrorM e) where
+	pure = return
+	(<*>) = ap
+
 instance Monad (ErrorM e) where
 	return = ErrorM . Right
 	(>>=) m k = case runErrorM m of
@@ -721,6 +737,10 @@
 
 instance Monad m => Functor (ErrorT e m) where
 	fmap = liftM
+
+instance Monad m => Control.Applicative.Applicative (ErrorT e m) where
+	pure = return
+	(<*>) = ap
 
 instance Monad m => Monad (ErrorT e m) where
 	return = ErrorT . return . Right
