diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,13 @@
-Copyright (c) 2012,2014 Joachim Fasting
+Copyright (c) 2005-2009 Ben Sinclair
+Copyright (c) 2007-2015 Joachim Fasting
+Copyright (c) 2009 Daniel Schoepe
+Copyright (c) 2010 Andrzej Rybczak
+Copyright (c) 2011-2014 Simon Hengel
+Copyright (c) 2012 Niklas Haas
+Copyright (c) 2014 Matvey Aksenov
+Copyright (c) 2014 Wieland Hoffmann
+Copyright (c) 2014 Tim Heap
+Copyright (c) 2014 Tobias Brandt
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -28,7 +28,7 @@
     - `LsResult` replaces `EntryType` (nandykins)
     - hspec based testing added to the test-suite
     - More extensive parser testing
-    - 'MPDError' now has an 'Exception' instance
+    - `MPDError` now has an `Exception` instance
     - Lower bound on Cabal bumped to 1.10
 
 * v0.7.2, 2012-02-13
@@ -50,69 +50,69 @@
       most notably the parser improvements have been removed for now.
     - Support for GHC 7
     - Removed support for building against the deprecated base 3 package
-    - Added an `Enum' instance for `Metadata'
-    - Removed the `old_base' flag
+    - Added an `Enum` instance for `Metadata`
+    - Removed the `old_base` flag
 
 * v0.5.0, 2010-09-08
-	- Moved extensions to Network.MPD.Commands.Extensions
-	These might be removed in a later version
-	- Non-blocking `idle'
-	- The API is closer to the MPD spec, by untangling functionality
-	- Better MPD API coverage
-	- Improved parser implementation, now runs in constant space
-	- Constructors of the `Subsystem' type have been renamed
-	- Passwords can be changed using `setPassword'
-	- The connection handle can be accessed via `getHandle'
-	- The version of the MPD server is available via `getVersion'
-	- Added support for connecting via unix sockets
+    - Moved extensions to Network.MPD.Commands.Extensions
+      These might be removed in a later version
+    - Non-blocking `idle`
+    - The API is closer to the MPD spec, by untangling functionality
+    - Better MPD API coverage
+    - Improved parser implementation, now runs in constant space
+    - Constructors of the `Subsystem` type have been renamed
+    - Passwords can be changed using `setPassword`
+    - The connection handle can be accessed via `getHandle`
+    - The version of the MPD server is available via `getVersion`
+    - Added support for connecting via unix sockets
 
 * v0.4.2, 2010-08-31
-	- Only depend on QuickCheck when building the test target
+    - Only depend on QuickCheck when building the test target
 
 * v0.4.1, 2010-03-26
-	- Fix building test and coverage targets
+    - Fix building test and coverage targets
 
 * v0.4.0, 2010-03-26
-	- New maintainer: Joachim Fasting <joachim.fasting@gmail.com>
-	- Support QuickCheck 2
-	- Better MPD api support
-	Should be mostly compatible with mpd 0.16
-	- Separated operations on current playlist from those on specific
-	playlists
-	- Fixed password sending
-	- Several minor fixes and cleanups
+    - New maintainer: Joachim Fasting \<joachim.fasting@gmail.com\>
+    - Support QuickCheck 2
+    - Better MPD api support
+      Should be mostly compatible with mpd 0.16
+    - Separated operations on current playlist from those on specific
+      playlists
+    - Fixed password sending
+    - Several minor fixes and cleanups
 
 * v0.3.1, 2008-09-14
-	- Now reconnects if MPD closes the connection.
+    - Now reconnects if MPD closes the connection.
 
 * v0.3.0, 2008-05-06
-	- UTF-8 support (now depends on utf8-string package).
-	- Fixed corruption by `show' of command parameters.
-	- Tidied up `Query' interface.
-	- Moved StringConn out of Network.MPD to the tests directory.
+    - UTF-8 support (now depends on utf8-string package).
+    - Fixed corruption by `show` of command parameters.
+    - Tidied up `Query` interface.
+    - Moved StringConn out of Network.MPD to the tests directory.
 
 * v0.2.1, 2008-04-14
-	- Cleaned up libmpd.cabal.
+    - Cleaned up libmpd.cabal.
 
 * v0.2.0, 2008-04-14
-	- A connection stub for testing purposes.
-	- QuickCheck tests for parsing.
-	- Partial unit test coverage.
-	- Many bug fixes.
-	- Precise error handling.
-	- Parsing improvements.
-	- Code coverage generation.
-	- Cabal 1.2 support.
-	- Uniform command names.
+    - A connection stub for testing purposes.
+    - QuickCheck tests for parsing.
+    - Partial unit test coverage.
+    - Many bug fixes.
+    - Precise error handling.
+    - Parsing improvements.
+    - Code coverage generation.
+    - Cabal 1.2 support.
+    - Uniform command names.
 
 * v0.1.3, 2007-10-02
-	- Bugfixes.
+    - Bugfixes.
 
 * v0.1.2, 2007-09-29
-	- Changed name to libmpd.
+    - Changed name to libmpd.
 
 * v0.1.1, 2007-09-28
-	- Missing files added to the source distribution.
+    - Missing files added to the source distribution.
 
 * v0.1, 2007-09-28
-	- Initial public release.
+    - Initial public release.
diff --git a/libmpd.cabal b/libmpd.cabal
--- a/libmpd.cabal
+++ b/libmpd.cabal
@@ -1,12 +1,17 @@
 Name:               libmpd
-Version:            0.9.0.1
+Version:            0.9.0.2
 Synopsis:           An MPD client library.
 Description:        A client library for MPD, the Music Player Daemon.
 Category:           Network, Sound
 
 License:            MIT
 License-file:       LICENSE
-Copyright:          Ben Sinclair 2005-2009, Joachim Fasting 2012-2014
+Copyright:          Ben Sinclair 2005-2009, Joachim Fasting 2007-2015,
+                    Daniel Schoepe 2009, Andrzej Rybczak 2010,
+                    Simon Hengel 2011-2014, Niklas Haas 2012,
+                    Matvey Aksenov 2014, Wieland Hoffmann 2014,
+                    Tim Heap 2014, Tobias Brandt 2014
+
 Author:             Ben Sinclair
 
 Maintainer:         Joachim Fasting <joachifm@fastmail.fm>
@@ -42,13 +47,19 @@
       , mtl >= 2.0 && < 3
       , old-locale >= 1 && < 2
       , text >= 0.11 && < 2
-      , time >= 1.1 && < 2
 
         -- Additional dependencies
-      , data-default >= 0.4 && < 1
+      , data-default-class >= 0.0.1 && < 1
       , network >= 2.1 && < 3
-      , utf8-string >= 0.3.1 && < 1
+      , utf8-string >= 0.3.1 && < 1.1
 
+    if impl(ghc >= 7.10.0)
+        Build-Depends:
+            time >= 1.5 && <1.6
+    else
+        Build-Depends:
+            time >= 1.1 && <1.5
+
     Exposed-Modules:
         Network.MPD
       , Network.MPD.Applicative
@@ -89,7 +100,6 @@
       , Network.MPD.Applicative.Internal
       , Network.MPD.Util
 
-    ghc-prof-options:   -auto-all -prof
     ghc-options:        -Wall
 
 Test-Suite specs
@@ -113,7 +123,7 @@
       , time
 
         -- Additional dependencies
-      , data-default
+      , data-default-class
       , network
       , utf8-string
 
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
@@ -60,7 +60,7 @@
 instance MPDArg String where
     -- We do this to avoid mangling
     -- non-ascii characters with 'show'
-    prep x = Args ['"' : x ++ "\""]
+    prep x = Args ['"' : addSlashes x ++ "\""]
 
 instance MPDArg ByteString where
     prep = prep . UTF8.toString
@@ -75,3 +75,11 @@
 instance MPDArg Int
 instance MPDArg Integer
 instance MPDArg Bool where prep = Args . return . showBool
+instance MPDArg Double
+
+addSlashes :: String -> String
+addSlashes = concatMap escapeSpecial
+    where specials = "\\\""
+          escapeSpecial x
+              | x `elem` specials = ['\\', x]
+              | otherwise = [x]
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
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE OverloadedStrings, FlexibleContexts #-}
 
 {- |
 Module      : Network.MPD.Commands.CurrentPlaylist
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
@@ -108,6 +108,7 @@
         readMeta "MUSICBRAINZ_ALBUMID" = Just MUSICBRAINZ_ALBUMID
         readMeta "MUSICBRAINZ_ALBUMARTISTID" = Just MUSICBRAINZ_ALBUMARTISTID
         readMeta "MUSICBRAINZ_TRACKID" = Just MUSICBRAINZ_TRACKID
+        readMeta "MUSICBRAINZ_RELEASETRACKID" = Just MUSICBRAINZ_RELEASETRACKID
         readMeta _ = Nothing
 
 -- | A helper that runs a parser on a string and, depending on the
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
@@ -38,7 +38,7 @@
 
 import           Network.MPD.Commands.Arg (MPDArg(prep), Args(Args))
 
-import           Data.Default
+import           Data.Default.Class
 
 import qualified Data.Map as M
 import           Data.Time.Clock (UTCTime)
@@ -113,6 +113,7 @@
               | MUSICBRAINZ_ALBUMID
               | MUSICBRAINZ_ALBUMARTISTID
               | MUSICBRAINZ_TRACKID
+              | MUSICBRAINZ_RELEASETRACKID
               deriving (Eq, Enum, Ord, Bounded, Show)
 
 instance MPDArg Metadata
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
@@ -36,7 +36,6 @@
 import           Network (PortID(..), withSocketsDo, connectTo)
 import           System.IO (Handle, hPutStrLn, hReady, hClose, hFlush)
 import           System.IO.Error (isEOFError, tryIOError, ioeGetErrorType)
-import qualified System.IO.UTF8 as U
 import           Text.Printf (printf)
 import qualified GHC.IO.Exception as GE
 
@@ -45,7 +44,6 @@
 import           Data.ByteString.Char8 (ByteString, isPrefixOf, break, drop, dropWhile)
 import qualified Data.ByteString.Char8 as B
 import qualified Data.ByteString.UTF8 as UTF8
-
 --
 -- Data types.
 --
@@ -169,7 +167,7 @@
         send' = MPD $ gets stHandle >>= maybe (throwError NoMPD) go
 
         go handle = (liftIO . tryIOError $ do
-            unless (null str) $ U.hPutStrLn handle str >> hFlush handle
+            unless (null str) $ B.hPutStrLn handle (UTF8.fromString str) >> hFlush handle
             getLines handle [])
                 >>= either (\err -> modify (\st -> st { stHandle = Nothing })
                                  >> throwError (ConnectionError err)) return
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
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE OverloadedStrings, CPP #-}
 -- | Module    : Network.MPD.Util
 -- Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2010
 -- License     : MIT (see LICENSE)
@@ -16,7 +16,12 @@
 import           Control.Arrow
 
 import           Data.Time.Format (ParseTime, parseTime, FormatTime, formatTime)
+
+#if MIN_VERSION_time(1,5,0)
+import           Data.Time.Format (defaultTimeLocale)
+#else
 import           System.Locale (defaultTimeLocale)
+#endif
 
 import qualified Prelude
 import           Prelude hiding        (break, take, drop, dropWhile, read)
