diff --git a/mmorph.cabal b/mmorph.cabal
--- a/mmorph.cabal
+++ b/mmorph.cabal
@@ -1,5 +1,5 @@
 Name: mmorph
-Version: 1.0.3
+Version: 1.0.4
 Cabal-Version: >= 1.8.0.2
 Build-Type: Simple
 License: BSD3
diff --git a/src/Control/Monad/Morph.hs b/src/Control/Monad/Morph.hs
--- a/src/Control/Monad/Morph.hs
+++ b/src/Control/Monad/Morph.hs
@@ -74,6 +74,9 @@
 
 import Control.Monad.Trans.Class (MonadTrans(lift))
 import qualified Control.Monad.Trans.Error         as E
+#if MIN_VERSION_transformers(0,4,0)
+import qualified Control.Monad.Trans.Except         as Ex
+#endif
 import qualified Control.Monad.Trans.Identity      as I
 import qualified Control.Monad.Trans.List          as L
 import qualified Control.Monad.Trans.Maybe         as M
@@ -113,6 +116,11 @@
 instance MFunctor (E.ErrorT e) where
     hoist nat m = E.ErrorT (nat (E.runErrorT m))
 
+#if MIN_VERSION_transformers(0,4,0)
+instance MFunctor (Ex.ExceptT e) where
+    hoist nat m = Ex.ExceptT (nat (Ex.runExceptT m))
+#endif
+
 instance MFunctor I.IdentityT where
     hoist nat m = I.IdentityT (nat (I.runIdentityT m))
 
@@ -237,6 +245,16 @@
             Left         e  -> Left e
             Right (Left  e) -> Left e
             Right (Right a) -> Right a ) )
+
+#if MIN_VERSION_transformers(0,4,0)
+instance MMonad (Ex.ExceptT e) where
+    embed f m = Ex.ExceptT (do 
+        x <- Ex.runExceptT (f (Ex.runExceptT m))
+        return (case x of
+            Left         e  -> Left e
+            Right (Left  e) -> Left e
+            Right (Right a) -> Right a ) )
+#endif
 
 instance MMonad I.IdentityT where
     embed f m = f (I.runIdentityT m)
