diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,25 @@
+5.3.7 [2022.01.09]
+------------------
+* Relax the `Bind` constraints in the following instances to `Functor`:
+
+  ```diff
+  -instance (Bind f,    Monad f) => Alt  (MaybeT f)
+  -instance (Bind f,    Monad f) => Plus (MaybeT f)
+  +instance (Functor f, Monad f) => Alt  (MaybeT f)
+  +instance (Functor f, Monad f) => Plus (MaybeT f)
+
+  -instance (Bind f,    Monad f, Semigroup e)           => Alt  (ExceptT e f)
+  -instance (Bind f,    Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f)
+  +instance (Functor f, Monad f, Semigroup e)           => Alt  (ExceptT e f)
+  +instance (Functor f, Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f)
+
+   -- If building with transformers-0.5.* or older
+  -instance (Bind f,    Monad f)          => Alt  (ErrorT e f)
+  -instance (Bind f,    Monad f, Error e) => Plus (ErrorT e f
+  +instance (Functor f, Monad f)          => Alt  (ErrorT e f)
+  +instance (Functor f, Monad f, Error e) => Plus (ErrorT e f)
+  ```
+
 5.3.6 [2021.10.07]
 ------------------
 * Allow building with GHC 9.2.
diff --git a/semigroupoids.cabal b/semigroupoids.cabal
--- a/semigroupoids.cabal
+++ b/semigroupoids.cabal
@@ -1,6 +1,6 @@
 name:          semigroupoids
 category:      Control, Comonads
-version:       5.3.6
+version:       5.3.7
 license:       BSD2
 cabal-version: 1.18
 license-file:  LICENSE
@@ -54,7 +54,7 @@
   indicate a subclass relationship that actually exists; dashed edges indicate a
   subclass relationship that /should/ exist, but currently doesn't.
   .
-  <<img/classes.svg Relationships among type classes from this package and others>>
+  <<https://raw.githubusercontent.com/ekmett/semigroupoids/master/img/classes.svg Relationships among type classes from this package and others>>
   .
   Apply, Bind, and Extend (not shown) give rise the Static, Kleisli and Cokleisli semigroupoids respectively.
   .
@@ -164,10 +164,10 @@
 
   if flag(unordered-containers)
     if impl(ghc >= 7.4)
-      build-depends: hashable >= 1.2.7.0  && < 1.4,
+      build-depends: hashable >= 1.2.7.0  && < 1.5,
                      unordered-containers >= 0.2.8.0  && < 0.3
     else
-      build-depends: hashable >= 1.2.5.0  && < 1.4,
+      build-depends: hashable >= 1.2.5.0  && < 1.5,
                      unordered-containers >= 0.2.8.0  && < 0.3
 
   hs-source-dirs: src
diff --git a/src/Data/Functor/Alt.hs b/src/Data/Functor/Alt.hs
--- a/src/Data/Functor/Alt.hs
+++ b/src/Data/Functor/Alt.hs
@@ -50,7 +50,6 @@
 import qualified Control.Monad.Trans.State.Lazy as Lazy
 import qualified Control.Monad.Trans.Writer.Lazy as Lazy
 import Data.Functor.Apply
-import Data.Functor.Bind
 import Data.Functor.Compose
 import Data.Functor.Identity (Identity (Identity))
 import Data.Functor.Product
@@ -253,7 +252,7 @@
 instance Alt f => Alt (ReaderT e f) where
   ReaderT a <!> ReaderT b = ReaderT $ \e -> a e <!> b e
 
-instance (Bind f, Monad f) => Alt (MaybeT f) where
+instance (Functor f, Monad f) => Alt (MaybeT f) where
   MaybeT a <!> MaybeT b = MaybeT $ do
     v <- a
     case v of
@@ -261,7 +260,7 @@
       Just _ -> return v
 
 #if !(MIN_VERSION_transformers(0,6,0))
-instance (Bind f, Monad f) => Alt (ErrorT e f) where
+instance (Functor f, Monad f) => Alt (ErrorT e f) where
   ErrorT m <!> ErrorT n = ErrorT $ do
     a <- m
     case a of
@@ -272,7 +271,7 @@
   ListT a <!> ListT b = ListT $ (<!>) <$> a <.> b
 #endif
 
-instance (Bind f, Monad f, Semigroup e) => Alt (ExceptT e f) where
+instance (Functor f, Monad f, Semigroup e) => Alt (ExceptT e f) where
   ExceptT m <!> ExceptT n = ExceptT $ do
     a <- m
     case a of
diff --git a/src/Data/Functor/Plus.hs b/src/Data/Functor/Plus.hs
--- a/src/Data/Functor/Plus.hs
+++ b/src/Data/Functor/Plus.hs
@@ -43,7 +43,6 @@
 import Data.Foldable hiding (asum)
 import Data.Functor.Apply
 import Data.Functor.Alt
-import Data.Functor.Bind
 import Data.Functor.Compose
 import Data.Functor.Product
 import Data.Functor.Reverse
@@ -158,18 +157,18 @@
 instance Plus f => Plus (ReaderT e f) where
   zero = ReaderT $ \_ -> zero
 
-instance (Bind f, Monad f) => Plus (MaybeT f) where
+instance (Functor f, Monad f) => Plus (MaybeT f) where
   zero = MaybeT $ return zero
 
 #if !(MIN_VERSION_transformers(0,6,0))
-instance (Bind f, Monad f, Error e) => Plus (ErrorT e f) where
+instance (Functor f, Monad f, Error e) => Plus (ErrorT e f) where
   zero = ErrorT $ return $ Left noMsg
 
 instance (Apply f, Applicative f) => Plus (ListT f) where
   zero = ListT $ pure []
 #endif
 
-instance (Bind f, Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f) where
+instance (Functor f, Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f) where
   zero = ExceptT $ return $ Left mempty
 
 instance Plus f => Plus (Strict.StateT e f) where
