diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+4.9
+---
+* Remove `either` support. Why? It dragged in a large number of dependencies we otherwise don't support, and so is probably best inverted.
+
 4.8.0.1
 -------
 * Allow complation with older versions of `base`. (Foldable didn't add foldl' until base 4.6)
diff --git a/free.cabal b/free.cabal
--- a/free.cabal
+++ b/free.cabal
@@ -1,6 +1,6 @@
 name:          free
 category:      Control, Monads
-version:       4.8.0.1
+version:       4.9
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -70,7 +70,6 @@
     bifunctors           == 4.*,
     comonad              == 4.*,
     distributive         >= 0.2.1,
-    either               >= 4.1.1,
     mtl                  >= 2.0.1.0 && < 2.3,
     prelude-extras       >= 0.4 && < 1,
     profunctors          == 4.*,
diff --git a/src/Control/Monad/Free/Class.hs b/src/Control/Monad/Free/Class.hs
--- a/src/Control/Monad/Free/Class.hs
+++ b/src/Control/Monad/Free/Class.hs
@@ -39,7 +39,7 @@
 import Control.Monad.Trans.List
 import Control.Monad.Trans.Error
 import Control.Monad.Trans.Identity
-import Control.Monad.Trans.Either
+-- import Control.Monad.Trans.Either
 import Data.Monoid
 
 -- |
@@ -136,8 +136,8 @@
 instance (Functor f, MonadFree f m, Error e) => MonadFree f (ErrorT e m) where
   wrap = ErrorT . wrap . fmap runErrorT
 
-instance (Functor f, MonadFree f m) => MonadFree f (EitherT e m) where
-  wrap = EitherT . wrap . fmap runEitherT
+-- instance (Functor f, MonadFree f m) => MonadFree f (EitherT e m) where
+--   wrap = EitherT . wrap . fmap runEitherT
 
 -- | A version of lift that can be used with just a Functor for f.
 liftF :: (Functor f, MonadFree f m) => f a -> m a
