diff --git a/midi.cabal b/midi.cabal
--- a/midi.cabal
+++ b/midi.cabal
@@ -1,12 +1,12 @@
 Name:             midi
-Version:          0.1.2
+Version:          0.1.3
 License:          GPL
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
 Maintainer:       Henning Thielemann <haskell@henning-thielemann.de>
 Homepage:         http://www.haskell.org/haskellwiki/MIDI
 Package-URL:      http://darcs.haskell.org/midi/
-Category:         Sound
+Category:         Sound, Music
 Build-Type:       Simple
 Synopsis:         Handling of MIDI messages and files
 Description:
@@ -29,16 +29,13 @@
 
 Library
   Build-Depends: event-list >=0.0.6 && < 0.1, non-negative>=0.0.1 && <0.1
-  Build-Depends: explicit-exception >=0.0.1 && <0.1
+  Build-Depends: explicit-exception >=0.1 && <0.2
   Build-Depends: bytestring >=0.9.0.1 && <0.10, binary >=0.4.2 && <0.5
-  Build-Depends: mtl >=1 && <2, QuickCheck >=1 && <2
+  Build-Depends: transformers >=0.0.1 && <0.1, QuickCheck >=1 && <2
   If flag(splitBase)
     Build-Depends: base >= 2, random
   Else
     Build-Depends: base >= 1.0 && < 2
-    -- Instead of the full-blown Monad Template Library with multi-parameter type classes with functional dependencies
-    -- we would also be happy with the less expensive
-    -- http://darcs.haskell.org/packages/mtl-split/Control/Monad/Trans/State.hs
 
   GHC-Options:      -Wall
   Hs-Source-Dirs:   src
diff --git a/src/Sound/MIDI/File/Load.hs b/src/Sound/MIDI/File/Load.hs
--- a/src/Sound/MIDI/File/Load.hs
+++ b/src/Sound/MIDI/File/Load.hs
@@ -36,7 +36,6 @@
 import qualified Sound.MIDI.Parser.File   as FileParser
 import qualified Sound.MIDI.Parser.Status as StatusParser
 import qualified Sound.MIDI.Parser.Report as Report
-import qualified Control.Monad.State as State
 import Control.Monad.Trans (lift, )
 import Control.Monad (liftM, liftM2, )
 
diff --git a/src/Sound/MIDI/File/Save.hs b/src/Sound/MIDI/File/Save.hs
--- a/src/Sound/MIDI/File/Save.hs
+++ b/src/Sound/MIDI/File/Save.hs
@@ -20,7 +20,7 @@
 import qualified Sound.MIDI.Writer.Status as StatusWriter
 import qualified Sound.MIDI.Writer.Basic  as Writer
 
-import Control.Monad.Reader (ask, )
+import Control.Monad.Trans.Reader (ask, )
 import Control.Monad.Trans (lift, )
 import Sound.MIDI.IO (ByteList, writeBinaryFile, )
 
diff --git a/src/Sound/MIDI/Parser/Class.hs b/src/Sound/MIDI/Parser/Class.hs
--- a/src/Sound/MIDI/Parser/Class.hs
+++ b/src/Sound/MIDI/Parser/Class.hs
@@ -17,7 +17,7 @@
 import qualified Control.Monad.Exception.Synchronous  as Sync
 
 import Control.Monad.Trans (lift, )
-import Control.Monad.State (StateT, )
+import Control.Monad.Trans.State (StateT, )
 import Control.Monad (liftM, liftM2, when, )
 
 import Data.Word (Word8)
diff --git a/src/Sound/MIDI/Parser/File.hs b/src/Sound/MIDI/Parser/File.hs
--- a/src/Sound/MIDI/Parser/File.hs
+++ b/src/Sound/MIDI/Parser/File.hs
@@ -5,7 +5,9 @@
 import qualified Sound.MIDI.Parser.Class as Parser
 import Sound.MIDI.Parser.Class (UserMessage, PossiblyIncomplete, )
 
-import Control.Monad.Reader (ReaderT(runReaderT), ask, liftM, lift, )
+import Control.Monad.Trans.Reader (ReaderT(runReaderT), ask, )
+import Control.Monad.Trans (lift, )
+import Control.Monad (liftM, )
 
 import qualified System.IO.Error as IOE
 import qualified Control.Exception as Exc
diff --git a/src/Sound/MIDI/Parser/Primitive.hs b/src/Sound/MIDI/Parser/Primitive.hs
--- a/src/Sound/MIDI/Parser/Primitive.hs
+++ b/src/Sound/MIDI/Parser/Primitive.hs
@@ -10,7 +10,6 @@
     getEnum, makeEnum, ) where
 
 import qualified Sound.MIDI.Parser.Class as Parser
-import qualified Control.Monad.State as State
 import Control.Monad (replicateM, liftM, )
 
 import Sound.MIDI.IO (ByteList, listCharFromByte, )
diff --git a/src/Sound/MIDI/Parser/Restricted.hs b/src/Sound/MIDI/Parser/Restricted.hs
--- a/src/Sound/MIDI/Parser/Restricted.hs
+++ b/src/Sound/MIDI/Parser/Restricted.hs
@@ -9,9 +9,10 @@
 import qualified Sound.MIDI.Parser.Class as Parser
 
 import qualified Control.Monad.Exception.Synchronous  as Sync
+import qualified Control.Monad.Trans.State as State
 import qualified Control.Monad.Trans as Trans
-import qualified Control.Monad.State as State
-import Control.Monad.State (StateT(runStateT), gets, get, put, when, )
+import Control.Monad.Trans.State (StateT(runStateT), gets, get, put, )
+import Control.Monad (when, )
 
 import qualified Numeric.NonNegative.Wrapper as NonNeg
 
@@ -33,7 +34,7 @@
 
 
 lift :: Monad parser => Parser.Fallible parser a -> Parser.Fallible (T parser) a
-lift = Sync.mapExceptionalT State.lift
+lift = Sync.mapExceptionalT Trans.lift
 
 
 
@@ -45,7 +46,7 @@
    x >>= y = Cons $ decons . y =<< decons x
 
 instance Trans.MonadTrans T where
-   lift = Cons . State.lift
+   lift = Cons . Trans.lift
 
 
 getRemaining :: Monad parser => Parser.Fallible (T parser) NonNeg.Integer
diff --git a/src/Sound/MIDI/Parser/Status.hs b/src/Sound/MIDI/Parser/Status.hs
--- a/src/Sound/MIDI/Parser/Status.hs
+++ b/src/Sound/MIDI/Parser/Status.hs
@@ -10,8 +10,9 @@
 import qualified Sound.MIDI.Parser.Class as Parser
 
 import qualified Control.Monad.Exception.Synchronous  as Sync
-import Control.Monad.State (StateT, evalStateT, )
-import qualified Control.Monad.State as State
+import Control.Monad.Trans.State (StateT, evalStateT, )
+import qualified Control.Monad.Trans.State as State
+import qualified Control.Monad.Trans as Trans
 
 import Sound.MIDI.Utility (checkRange, )
 import Data.Ix (Ix)
@@ -32,17 +33,17 @@
 
 
 set :: Monad parser => Status -> Parser.Fallible (T parser) ()
-set = State.lift . State.put
+set = Trans.lift . State.put
 
 get :: Monad parser => Parser.Fallible (T parser) Status
-get = State.lift State.get
+get = Trans.lift State.get
 
 run :: Monad parser => T parser a -> parser a
 run = flip evalStateT Nothing
 
 
 lift :: Monad parser => Parser.Fallible parser a -> Parser.Fallible (T parser) a
-lift = Sync.mapExceptionalT State.lift
+lift = Sync.mapExceptionalT Trans.lift
 
 
 -- * Channel definition
diff --git a/src/Sound/MIDI/Parser/Stream.hs b/src/Sound/MIDI/Parser/Stream.hs
--- a/src/Sound/MIDI/Parser/Stream.hs
+++ b/src/Sound/MIDI/Parser/Stream.hs
@@ -4,10 +4,10 @@
     PossiblyIncomplete, UserMessage, ) where
 
 
-import Control.Monad.State
-   (State(runState), evalState,
-    get, put, liftM, when, )
+import Control.Monad.Trans.State
+   (State, runState, evalState, get, put, )
 import Control.Monad.Trans (lift, )
+import Control.Monad (liftM, when, )
 
 import qualified Sound.MIDI.Parser.Report as Report
 import qualified Sound.MIDI.Parser.Class as Parser
diff --git a/src/Sound/MIDI/Parser/Warning.hs b/src/Sound/MIDI/Parser/Warning.hs
--- a/src/Sound/MIDI/Parser/Warning.hs
+++ b/src/Sound/MIDI/Parser/Warning.hs
@@ -6,7 +6,7 @@
 import qualified Sound.MIDI.Parser.Report as Report
 
 import qualified Control.Monad.Exception.Synchronous as Sync
-import qualified Control.Monad.Writer as Writer
+import qualified Control.Monad.Trans.Writer as Writer
 
 
 type T m = Writer.WriterT [Report.UserMessage] m
diff --git a/src/Sound/MIDI/String.hs b/src/Sound/MIDI/String.hs
--- a/src/Sound/MIDI/String.hs
+++ b/src/Sound/MIDI/String.hs
@@ -4,7 +4,7 @@
 
 module Sound.MIDI.String where
 
-import Control.Monad.State (State, runState)
+import Control.Monad.Trans.State (State, runState)
 
 unlinesS :: [ShowS] -> ShowS
 unlinesS = concatS . map (. showString "\n")
diff --git a/src/Sound/MIDI/Writer/Basic.hs b/src/Sound/MIDI/Writer/Basic.hs
--- a/src/Sound/MIDI/Writer/Basic.hs
+++ b/src/Sound/MIDI/Writer/Basic.hs
@@ -6,11 +6,12 @@
 import Data.Bits ((.|.))
 import qualified Sound.MIDI.IO as MIO
 import Sound.MIDI.IO (listByteFromChar, )
-import Control.Monad.Writer (Writer, execWriter, tell, )
-import Control.Monad.Reader (ReaderT, runReaderT, ask, lift, )
+import Control.Monad.Trans.Writer (Writer, execWriter, tell, )
+import Control.Monad.Trans.Reader (ReaderT, runReaderT, ask, )
+import Control.Monad.Trans (lift, )
 import Data.List (genericLength, )
-import Data.Word (Word8)
-import Data.Char (chr)
+import Data.Word (Word8, )
+import Data.Char (chr, )
 
 import qualified Data.ByteString.Lazy as B
 import qualified Data.Binary as Binary
diff --git a/src/Sound/MIDI/Writer/Status.hs b/src/Sound/MIDI/Writer/Status.hs
--- a/src/Sound/MIDI/Writer/Status.hs
+++ b/src/Sound/MIDI/Writer/Status.hs
@@ -4,8 +4,8 @@
 
 import Sound.MIDI.Parser.Status (Channel)
 
-import Control.Monad.State  (StateT, evalStateT, get, put, )
-import Control.Monad.Reader (ReaderT, runReaderT, ask, )
+import Control.Monad.Trans.State  (StateT, evalStateT, get, put, )
+import Control.Monad.Trans.Reader (ReaderT, runReaderT, ask, )
 import Control.Monad.Trans  (MonadTrans, lift, )
 
 
