diff --git a/explicit-exception.cabal b/explicit-exception.cabal
--- a/explicit-exception.cabal
+++ b/explicit-exception.cabal
@@ -1,5 +1,5 @@
 Name:             explicit-exception
-Version:          0.1.7.3
+Version:          0.1.8
 License:          BSD3
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -37,6 +37,7 @@
    and may cause further damage.
 Tested-With:       GHC==6.8.2
 Tested-With:       GHC==7.4.2, GHC==7.6.1, GHC==7.8.2
+Tested-With:       GHC==8.0.1
 Cabal-Version:     >=1.6
 Build-Type:        Simple
 
@@ -47,7 +48,7 @@
 Source-Repository this
   type:     darcs
   location: http://code.haskell.org/explicit-exception/
-  tag:      0.1.7.3
+  tag:      0.1.8
 
 Flag buildTests
   description: Build executables that demonstrate some space leaks
@@ -58,7 +59,9 @@
 
 
 Library
-  Build-Depends: transformers >=0.2 && <0.5
+  Build-Depends:
+    transformers >=0.2 && <0.6,
+    deepseq >=1.1 && <1.5
   If impl(jhc)
     Build-Depends:
       applicative >=1.0 && <1.1,
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
@@ -47,6 +47,7 @@
 
 import Control.Monad (Monad, return, liftM, mplus, join, (>>=), (>>), )
 import Control.Applicative (Applicative, liftA, )
+import Control.DeepSeq (NFData, rnf, )
 import Data.Functor (Functor, fmap, )
 {-
 import Data.Traversable (Traversable, )
@@ -202,6 +203,9 @@
 maybeAbort ~(Exceptional ea a) eb =
    Exceptional (mplus ea eb) a
 
+
+instance (NFData e, NFData a) => NFData (Exceptional e a) where
+   rnf (Exceptional e a) = rnf (e, a)
 
 {- |
 'mappend' must be strict in order to fulfill the Monoid laws
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
@@ -47,6 +47,7 @@
 
 import Control.Monad (Monad, return, liftM, mplus, join, (>>=), (>>), )
 import Control.Applicative (Applicative, liftA, )
+import Control.DeepSeq (NFData, rnf, )
 import Data.Functor (Functor, fmap, )
 {-
 import Data.Traversable (Traversable, )
@@ -196,6 +197,9 @@
 maybeAbort (Exceptional ea a) eb =
    Exceptional (mplus ea eb) a
 
+
+instance (NFData e, NFData a) => NFData (Exceptional e a) where
+   rnf (Exceptional e a) = rnf (e, a)
 
 {- |
 'mappend' must be strict in order to fulfill the Monoid laws
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
@@ -70,6 +70,7 @@
 import Control.Monad.Trans.Class (MonadTrans, lift, )
 import Control.Monad.Trans.Error (ErrorT(ErrorT, runErrorT))
 import Control.Monad.Trans.Maybe (MaybeT(MaybeT, runMaybeT))
+import Control.DeepSeq (NFData, rnf, )
 import Data.Functor (Functor, fmap, )
 import Data.Monoid(Monoid, mappend, mempty, Endo(Endo, appEndo), )
 import Data.Function (flip, const, (.), ($), )
@@ -223,6 +224,9 @@
       (Success _, Exception e) -> Exception e
       (Exception e0, Exception e1) -> Exception $ mappend e0 e1
 
+
+instance (NFData e, NFData a) => NFData (Exceptional e a) where
+   rnf = switch rnf rnf
 
 instance Functor (Exceptional e) where
    fmap f x =
