diff --git a/library/Success/Impure.hs b/library/Success/Impure.hs
--- a/library/Success/Impure.hs
+++ b/library/Success/Impure.hs
@@ -11,6 +11,8 @@
 where
 
 import Prelude
+import Data.Foldable
+import Data.Traversable
 import Control.Applicative
 import Control.Monad
 import Control.Monad.IO.Class
@@ -23,7 +25,7 @@
 
 newtype Success a m b =
   Success (m (Success.Pure.Success a b))
-  deriving (Functor)
+  deriving (Functor, Foldable, Traversable)
 
 instance Applicative m => Applicative (Success e m) where
   {-# INLINE pure #-}
diff --git a/library/Success/Pure.hs b/library/Success/Pure.hs
--- a/library/Success/Pure.hs
+++ b/library/Success/Pure.hs
@@ -15,6 +15,8 @@
 where
 
 import Prelude
+import Data.Foldable
+import Data.Traversable
 import Control.Applicative
 import Control.Monad
 import Control.Monad.Error.Class
@@ -22,7 +24,7 @@
 
 newtype Success a b =
   Success (Either (Maybe a) b)
-  deriving (Functor, Applicative, Monad, MonadError (Maybe a), Show)
+  deriving (Functor, Applicative, Monad, MonadError (Maybe a), Show, Foldable, Traversable)
 
 instance Alternative (Success a) where
   {-# INLINE empty #-}
diff --git a/success.cabal b/success.cabal
--- a/success.cabal
+++ b/success.cabal
@@ -1,7 +1,7 @@
 name:
   success
 version:
-  0.2.3.1
+  0.2.4
 synopsis:
   A version of Either specialised for encoding of success or failure
 description:
@@ -53,5 +53,5 @@
     monad-control >= 1 && < 2,
     mtl >= 2 && < 3,
     transformers >= 0.3 && < 0.5,
-    base >= 4.6 && < 5
+    base >= 4.7 && < 5
 
