diff --git a/explicit-exception.cabal b/explicit-exception.cabal
--- a/explicit-exception.cabal
+++ b/explicit-exception.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:    2.2
 Name:             explicit-exception
-Version:          0.2.0.1
+Version:          0.2.0.2
 License:          BSD-3-Clause
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -41,7 +41,7 @@
 Source-Repository this
   type:     darcs
   location: https://hub.darcs.net/thielema/explicit-exception/
-  tag:      0.2.0.1
+  tag:      0.2.0.2
 
 Flag buildTests
   description: Build executables that demonstrate some space leaks
@@ -58,7 +58,7 @@
       applicative >=1.0 && <1.1,
       base >= 1 && <2
   Else
-    Build-Depends: base >= 2 && <5
+    Build-Depends: base >=4.11 && <5
 
   GHC-Options:      -Wall
   Hs-Source-Dirs:   src
@@ -86,7 +86,7 @@
       explicit-exception,
       bytestring >=0.9.0.1 && <0.13,
       tar >=0.4 && <0.6,
-      base >=2 && <5
+      base >=4.11 && <5
   Else
     Buildable: False
   GHC-Options: -Wall
@@ -99,7 +99,7 @@
     Build-Depends:
       explicit-exception,
       bytestring >=0.9.0.1 && <0.13,
-      base >=2 && <5
+      base >=4.11 && <5
   Else
     Buildable: False
   GHC-Options: -Wall
@@ -110,7 +110,7 @@
 Executable ee-unzip
   If flag(buildTests)
     Build-Depends:
-      base >=2 && <5
+      base >=4.11 && <5
   Else
     Buildable: False
   GHC-Options: -Wall
@@ -122,7 +122,7 @@
   If flag(buildTests)
     Build-Depends:
       transformers,
-      base >=2 && <5
+      base >=4.11 && <5
   Else
     Buildable: False
   GHC-Options: -Wall
diff --git a/src/Control/Monad/Exception/Asynchronous/Lazy.hs b/src/Control/Monad/Exception/Asynchronous/Lazy.hs
--- a/src/Control/Monad/Exception/Asynchronous/Lazy.hs
+++ b/src/Control/Monad/Exception/Asynchronous/Lazy.hs
@@ -218,8 +218,6 @@
 -}
 instance Monoid a => Monoid (Exceptional e a) where
    mempty = pure mempty
---   mappend = append
-   mappend = (<>)
 
 
 {- | construct Exceptional constructor lazily -}
@@ -403,7 +401,6 @@
 
 instance (Monad m, Monoid a) => Monoid (ExceptionalT e m a) where
    mempty = ExceptionalT $ return mempty
-   mappend = (<>)
 
 {-
 instance Applicative m => Applicative (ExceptionalT e m) where
@@ -412,7 +409,6 @@
       ExceptionalT (fmap (<*>) f <*> x)
 
 instance Monad m => Monad (ExceptionalT e m) where
-   return = ExceptionalT . return . return
    x0 >>= f =
       ExceptionalT $
       do Exceptional ex x <- runExceptionalT x0
diff --git a/src/Control/Monad/Exception/Asynchronous/Strict.hs b/src/Control/Monad/Exception/Asynchronous/Strict.hs
--- a/src/Control/Monad/Exception/Asynchronous/Strict.hs
+++ b/src/Control/Monad/Exception/Asynchronous/Strict.hs
@@ -212,8 +212,6 @@
 -}
 instance Monoid a => Monoid (Exceptional e a) where
    mempty = pure mempty
---   mappend = append
-   mappend = (<>)
 
 
 {- | construct Exceptional constructor lazily -}
@@ -310,7 +308,6 @@
                Exceptional e1 y -> Exceptional (mplus e0 e1) (g y)
 
 instance Monad (Exceptional e) where
-   return = pure
    fail _msg =
       Exceptional
          [Just (error "Asynchronous.fail exception")]
@@ -383,7 +380,6 @@
 
 instance (Monad m, Monoid a) => Monoid (ExceptionalT e m a) where
    mempty = ExceptionalT $ return mempty
-   mappend = (<>)
 
 {-
 instance Applicative m => Applicative (ExceptionalT e m) where
@@ -392,7 +388,6 @@
       ExceptionalT (fmap (<*>) f <*> x)
 
 instance Monad m => Monad (ExceptionalT e m) where
-   return = ExceptionalT . return . return
    x0 >>= f =
       ExceptionalT $
       do Exceptional ex x <- runExceptionalT x0
diff --git a/src/Control/Monad/Exception/Synchronous.hs b/src/Control/Monad/Exception/Synchronous.hs
--- a/src/Control/Monad/Exception/Synchronous.hs
+++ b/src/Control/Monad/Exception/Synchronous.hs
@@ -264,7 +264,6 @@
                Exception e -> Exception e
 
 instance Monad (Exceptional e) where
-   return = pure
    x >>= f =
       case x of
          Exception e -> Exception e
@@ -476,7 +475,6 @@
       ExceptionalT (fmap (<*>) f <*> x)
 
 instance Monad m => Monad (ExceptionalT e m) where
-   return = ExceptionalT . return . return
    x0 >>= f =
       ExceptionalT $
          runExceptionalT x0 >>= \x1 ->
