diff --git a/libmpd.cabal b/libmpd.cabal
--- a/libmpd.cabal
+++ b/libmpd.cabal
@@ -1,5 +1,5 @@
 Name:               libmpd
-Version:            0.9.0
+Version:            0.9.0.1
 Synopsis:           An MPD client library.
 Description:        A client library for MPD, the Music Player Daemon.
 Category:           Network, Sound
@@ -9,7 +9,7 @@
 Copyright:          Ben Sinclair 2005-2009, Joachim Fasting 2012-2014
 Author:             Ben Sinclair
 
-Maintainer:         Joachim Fasting <joachim.fasting@gmail.com>
+Maintainer:         Joachim Fasting <joachifm@fastmail.fm>
 Stability:          beta
 Homepage:           http://github.com/vimus/libmpd-haskell#readme
 Bug-reports:        http://github.com/vimus/libmpd-haskell/issues
@@ -21,15 +21,7 @@
 Extra-Source-Files:
     README.md
     changelog.md
-    tests/Arbitrary.hs
-    tests/CommandSpec.hs
-    tests/EnvSpec.hs
-    tests/ParserSpec.hs
-    tests/StringConn.hs
-    tests/TestUtil.hs
-    tests/Unparse.hs
-    tests/UtilSpec.hs
-    tests/Main.hs
+    tests/*.hs
 
 Source-Repository head
     type:       git
@@ -60,6 +52,7 @@
     Exposed-Modules:
         Network.MPD
       , Network.MPD.Applicative
+      , Network.MPD.Applicative.ClientToClient
       , Network.MPD.Applicative.Connection
       , Network.MPD.Applicative.CurrentPlaylist
       , Network.MPD.Applicative.Database
@@ -81,6 +74,7 @@
       , Network.MPD.Commands.Parse
       , Network.MPD.Commands.Query
       , Network.MPD.Commands.Types
+      , Network.MPD.Commands.ClientToClient
       , Network.MPD.Commands.Status
       , Network.MPD.Commands.PlaybackOptions
       , Network.MPD.Commands.PlaybackControl
diff --git a/src/Network/MPD.hs b/src/Network/MPD.hs
--- a/src/Network/MPD.hs
+++ b/src/Network/MPD.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting, Simon Hengel 2012
 License     : MIT
 
-Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 Stability   : unstable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/ClientToClient.hs b/src/Network/MPD/Applicative/ClientToClient.hs
new file mode 100644
--- /dev/null
+++ b/src/Network/MPD/Applicative/ClientToClient.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+{- |
+Module      : Network.MPD.Applicative.ClientToClient
+Copyright   : (c) Joachim Fasting 2013
+License     : MIT
+
+Maintainer  : joachifm@fastmail.fm
+Stability   : stable
+Portability : unportable
+
+Client to client communication.
+-}
+
+module Network.MPD.Applicative.ClientToClient
+    ( -- * Types
+      ChannelName
+    , MessageText
+      -- * Subscribing to channels
+    , subscribe
+    , unsubscribe
+    , channels
+      -- * Communicating with other clients
+    , readMessages
+    , sendMessage
+    ) where
+
+import           Control.Applicative
+
+import           Network.MPD.Commands.Arg hiding (Command)
+import           Network.MPD.Applicative.Internal
+import           Network.MPD.Applicative.Util
+import           Network.MPD.Util
+
+import           Data.ByteString.Char8 (ByteString)
+import qualified Data.ByteString.UTF8 as UTF8
+
+------------------------------------------------------------------------
+
+type ChannelName = String
+type MessageText = String
+
+------------------------------------------------------------------------
+
+subscribe :: ChannelName -> Command ()
+subscribe name = Command emptyResponse ["subscribe" <@> name]
+
+unsubscribe :: ChannelName -> Command ()
+unsubscribe name = Command emptyResponse ["unsubscribe" <@> name]
+
+channels :: Command [ChannelName]
+channels = Command p ["channels"]
+  where
+    p = map UTF8.toString . takeValues <$> getResponse
+
+------------------------------------------------------------------------
+
+readMessages :: Command [(ChannelName, MessageText)]
+readMessages = Command (liftParser p) ["readmessages"]
+  where
+    p = mapM parseMessage . splitGroups ["channel"] . toAssocList
+
+    parseMessage :: [(ByteString, ByteString)] -> Either String (ChannelName, MessageText)
+    parseMessage [("channel", ch),("message", msg)] = Right (UTF8.toString ch, UTF8.toString msg)
+    parseMessage _ = Left "Unexpected result from readMessages"
+
+sendMessage :: ChannelName -> MessageText -> Command ()
+sendMessage name text = Command emptyResponse ["sendmessage" <@> name <++> text]
diff --git a/src/Network/MPD/Applicative/Connection.hs b/src/Network/MPD/Applicative/Connection.hs
--- a/src/Network/MPD/Applicative/Connection.hs
+++ b/src/Network/MPD/Applicative/Connection.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/CurrentPlaylist.hs b/src/Network/MPD/Applicative/CurrentPlaylist.hs
--- a/src/Network/MPD/Applicative/CurrentPlaylist.hs
+++ b/src/Network/MPD/Applicative/CurrentPlaylist.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/Database.hs b/src/Network/MPD/Applicative/Database.hs
--- a/src/Network/MPD/Applicative/Database.hs
+++ b/src/Network/MPD/Applicative/Database.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/Internal.hs b/src/Network/MPD/Applicative/Internal.hs
--- a/src/Network/MPD/Applicative/Internal.hs
+++ b/src/Network/MPD/Applicative/Internal.hs
@@ -7,7 +7,7 @@
 Copyright   : (c) Simon Hengel 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/Output.hs b/src/Network/MPD/Applicative/Output.hs
--- a/src/Network/MPD/Applicative/Output.hs
+++ b/src/Network/MPD/Applicative/Output.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/PlaybackControl.hs b/src/Network/MPD/Applicative/PlaybackControl.hs
--- a/src/Network/MPD/Applicative/PlaybackControl.hs
+++ b/src/Network/MPD/Applicative/PlaybackControl.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/PlaybackOptions.hs b/src/Network/MPD/Applicative/PlaybackOptions.hs
--- a/src/Network/MPD/Applicative/PlaybackOptions.hs
+++ b/src/Network/MPD/Applicative/PlaybackOptions.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/Reflection.hs b/src/Network/MPD/Applicative/Reflection.hs
--- a/src/Network/MPD/Applicative/Reflection.hs
+++ b/src/Network/MPD/Applicative/Reflection.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/Status.hs b/src/Network/MPD/Applicative/Status.hs
--- a/src/Network/MPD/Applicative/Status.hs
+++ b/src/Network/MPD/Applicative/Status.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/Stickers.hs b/src/Network/MPD/Applicative/Stickers.hs
--- a/src/Network/MPD/Applicative/Stickers.hs
+++ b/src/Network/MPD/Applicative/Stickers.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Applicative/StoredPlaylists.hs b/src/Network/MPD/Applicative/StoredPlaylists.hs
--- a/src/Network/MPD/Applicative/StoredPlaylists.hs
+++ b/src/Network/MPD/Applicative/StoredPlaylists.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands.hs b/src/Network/MPD/Commands.hs
--- a/src/Network/MPD/Commands.hs
+++ b/src/Network/MPD/Commands.hs
@@ -3,7 +3,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Arg.hs b/src/Network/MPD/Commands/Arg.hs
--- a/src/Network/MPD/Commands/Arg.hs
+++ b/src/Network/MPD/Commands/Arg.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting, Simon Hengel 2012
 License     : MIT
 
-Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 Stability   : alpha
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/ClientToClient.hs b/src/Network/MPD/Commands/ClientToClient.hs
new file mode 100644
--- /dev/null
+++ b/src/Network/MPD/Commands/ClientToClient.hs
@@ -0,0 +1,47 @@
+{-|
+Module      : Network.MPD.Commands.ClientToClient
+Copyright   : (c) Joachim Fasting 2013
+License     : MIT (see LICENSE)
+
+Maintainer  : joachifm@fastmail.fm
+Stability   : stable
+Portability : unportable
+
+Client-to-client communication.
+-}
+
+module Network.MPD.Commands.ClientToClient
+    ( -- * Types
+      A.ChannelName
+    , A.MessageText
+      -- * Subscribing to channels
+    , subscribe
+    , unsubscribe
+    , channels
+      -- * Communicating with other clients
+    , readMessages
+    , sendMessage
+    ) where
+
+------------------------------------------------------------------------
+
+import qualified Network.MPD.Applicative.Internal as A
+import qualified Network.MPD.Applicative.ClientToClient as A
+import           Network.MPD.Core
+
+------------------------------------------------------------------------
+
+subscribe :: MonadMPD m => A.ChannelName -> m ()
+subscribe = A.runCommand . A.subscribe
+
+unsubscribe :: MonadMPD m => A.ChannelName -> m ()
+unsubscribe = A.runCommand . A.subscribe
+
+channels :: MonadMPD m => m [A.ChannelName]
+channels = A.runCommand A.channels
+
+readMessages :: MonadMPD m => m [(A.ChannelName, A.MessageText)]
+readMessages = A.runCommand A.readMessages
+
+sendMessage :: MonadMPD m => A.ChannelName -> A.MessageText -> m ()
+sendMessage name text = A.runCommand (A.sendMessage name text)
diff --git a/src/Network/MPD/Commands/Connection.hs b/src/Network/MPD/Commands/Connection.hs
--- a/src/Network/MPD/Commands/Connection.hs
+++ b/src/Network/MPD/Commands/Connection.hs
@@ -3,7 +3,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/CurrentPlaylist.hs b/src/Network/MPD/Commands/CurrentPlaylist.hs
--- a/src/Network/MPD/Commands/CurrentPlaylist.hs
+++ b/src/Network/MPD/Commands/CurrentPlaylist.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Database.hs b/src/Network/MPD/Commands/Database.hs
--- a/src/Network/MPD/Commands/Database.hs
+++ b/src/Network/MPD/Commands/Database.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Extensions.hs b/src/Network/MPD/Commands/Extensions.hs
--- a/src/Network/MPD/Commands/Extensions.hs
+++ b/src/Network/MPD/Commands/Extensions.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 Stability   : unstable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Output.hs b/src/Network/MPD/Commands/Output.hs
--- a/src/Network/MPD/Commands/Output.hs
+++ b/src/Network/MPD/Commands/Output.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Parse.hs b/src/Network/MPD/Commands/Parse.hs
--- a/src/Network/MPD/Commands/Parse.hs
+++ b/src/Network/MPD/Commands/Parse.hs
@@ -3,7 +3,7 @@
 -- | Module    : Network.MPD.Commands.Parse
 -- Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2010
 -- License     : MIT (see LICENSE)
--- Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+-- Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 -- Stability   : alpha
 --
 -- Parsers for MPD data types.
diff --git a/src/Network/MPD/Commands/PlaybackControl.hs b/src/Network/MPD/Commands/PlaybackControl.hs
--- a/src/Network/MPD/Commands/PlaybackControl.hs
+++ b/src/Network/MPD/Commands/PlaybackControl.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/PlaybackOptions.hs b/src/Network/MPD/Commands/PlaybackOptions.hs
--- a/src/Network/MPD/Commands/PlaybackOptions.hs
+++ b/src/Network/MPD/Commands/PlaybackOptions.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Query.hs b/src/Network/MPD/Commands/Query.hs
--- a/src/Network/MPD/Commands/Query.hs
+++ b/src/Network/MPD/Commands/Query.hs
@@ -3,7 +3,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 Stability   : unstable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Reflection.hs b/src/Network/MPD/Commands/Reflection.hs
--- a/src/Network/MPD/Commands/Reflection.hs
+++ b/src/Network/MPD/Commands/Reflection.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Status.hs b/src/Network/MPD/Commands/Status.hs
--- a/src/Network/MPD/Commands/Status.hs
+++ b/src/Network/MPD/Commands/Status.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Stickers.hs b/src/Network/MPD/Commands/Stickers.hs
--- a/src/Network/MPD/Commands/Stickers.hs
+++ b/src/Network/MPD/Commands/Stickers.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/StoredPlaylists.hs b/src/Network/MPD/Commands/StoredPlaylists.hs
--- a/src/Network/MPD/Commands/StoredPlaylists.hs
+++ b/src/Network/MPD/Commands/StoredPlaylists.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
 License     : MIT (see LICENSE)
 
-Maintainer  : joachim.fasting@gmail.com
+Maintainer  : joachifm@fastmail.fm
 Stability   : stable
 Portability : unportable
 
diff --git a/src/Network/MPD/Commands/Types.hs b/src/Network/MPD/Commands/Types.hs
--- a/src/Network/MPD/Commands/Types.hs
+++ b/src/Network/MPD/Commands/Types.hs
@@ -2,7 +2,7 @@
 -- | Module    : Network.MPD.Commands.Types
 -- Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2010
 -- License     : MIT (see LICENSE)
--- Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+-- Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 -- Stability   : alpha
 --
 -- Various MPD data structures and types
diff --git a/src/Network/MPD/Core.hs b/src/Network/MPD/Core.hs
--- a/src/Network/MPD/Core.hs
+++ b/src/Network/MPD/Core.hs
@@ -4,7 +4,7 @@
 -- | Module    : Network.MPD.Core
 -- Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2010
 -- License     : MIT (see LICENSE)
--- Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+-- Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 -- Stability   : alpha
 --
 -- The core datatypes and operations are defined here, including the
diff --git a/src/Network/MPD/Core/Class.hs b/src/Network/MPD/Core/Class.hs
--- a/src/Network/MPD/Core/Class.hs
+++ b/src/Network/MPD/Core/Class.hs
@@ -3,7 +3,7 @@
 -- | Module    : Network.MPD.Core.Class
 -- Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2010
 -- License     : MIT (see LICENSE)
--- Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+-- Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 -- Stability   : alpha
 --
 -- The MPD typeclass.
diff --git a/src/Network/MPD/Core/Error.hs b/src/Network/MPD/Core/Error.hs
--- a/src/Network/MPD/Core/Error.hs
+++ b/src/Network/MPD/Core/Error.hs
@@ -5,7 +5,7 @@
 Copyright   : (c) Joachim Fasting 2012
 License     : MIT
 
-Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 Stability   : unstable
 Portability : unportable
 
diff --git a/src/Network/MPD/Util.hs b/src/Network/MPD/Util.hs
--- a/src/Network/MPD/Util.hs
+++ b/src/Network/MPD/Util.hs
@@ -2,7 +2,7 @@
 -- | Module    : Network.MPD.Util
 -- Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2010
 -- License     : MIT (see LICENSE)
--- Maintainer  : Joachim Fasting <joachim.fasting@gmail.com>
+-- Maintainer  : Joachim Fasting <joachifm@fastmail.fm>
 -- Stability   : alpha
 --
 -- Utilities.
