diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.4.2.0
+-------
+
+* Add default MTL instances for DispatchT.
+
 0.4.1.0
 -------
 
diff --git a/ether.cabal b/ether.cabal
--- a/ether.cabal
+++ b/ether.cabal
@@ -1,5 +1,5 @@
 name:                ether
-version:             0.4.1.0
+version:             0.4.2.0
 synopsis:            Monad transformers and classes
 description:
     Ether is a Haskell library that extends @mtl@ and @transformers@ with
diff --git a/src/Control/Monad/Trans/Ether/Dispatch.hs b/src/Control/Monad/Trans/Ether/Dispatch.hs
--- a/src/Control/Monad/Trans/Ether/Dispatch.hs
+++ b/src/Control/Monad/Trans/Ether/Dispatch.hs
@@ -1,5 +1,10 @@
 {-# LANGUAGE CPP #-}
 
+#if __GLASGOW_HASKELL__ < 710
+{-# LANGUAGE OverlappingInstances #-}
+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}
+#endif
+
 #if __GLASGOW_HASKELL__ >= 710
 {-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-}
 #endif
@@ -84,6 +89,7 @@
 import Control.Monad.Ether.Except.Class
 import Control.Monad.Ether.Writer.Class
 
+import qualified Control.Monad.Cont   as Class
 import qualified Control.Monad.Reader as Class
 import qualified Control.Monad.State  as Class
 import qualified Control.Monad.Except as Class
@@ -207,3 +213,44 @@
   tell   _ = let t = Proxy :: Proxy tNew in Lift.lift . tell t
   listen _ = let t = Proxy :: Proxy tNew in Lift.liftListen (listen t)
   pass   _ = let t = Proxy :: Proxy tNew in Lift.liftPass (pass t)
+
+
+-- Instances for mtl classes
+
+instance {-# OVERLAPPABLE #-}
+    ( Class.MonadCont m
+    ) => Class.MonadCont (DispatchT dp m)
+  where
+    callCC = Lift.liftCallCC' Class.callCC
+
+instance {-# OVERLAPPABLE #-}
+    ( Class.MonadReader r m
+    ) => Class.MonadReader r (DispatchT dp m)
+  where
+    ask = Class.lift Class.ask
+    local = Lift.liftLocal Class.ask Class.local
+    reader = Class.lift . Class.reader
+
+instance {-# OVERLAPPABLE #-}
+    ( Class.MonadState s m
+    ) => Class.MonadState s (DispatchT dp m)
+  where
+    get = Class.lift Class.get
+    put = Class.lift . Class.put
+    state = Class.lift . Class.state
+
+instance {-# OVERLAPPABLE #-}
+    ( Class.MonadWriter w m
+    ) => Class.MonadWriter w (DispatchT dp m)
+  where
+    writer = Class.lift . Class.writer
+    tell   = Class.lift . Class.tell
+    listen = Lift.liftListen Class.listen
+    pass   = Lift.liftPass Class.pass
+
+instance {-# OVERLAPPABLE #-}
+    ( Class.MonadError e m
+    ) => Class.MonadError e (DispatchT dp m)
+  where
+    throwError = Class.lift . Class.throwError
+    catchError = Lift.liftCatch Class.catchError
