diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+4.3.2.1
+-------
+* Support `monad-control` 1.0
+
 4.3.2
 -----
 * Added `Validation`.
diff --git a/either.cabal b/either.cabal
--- a/either.cabal
+++ b/either.cabal
@@ -1,6 +1,6 @@
 name:          either
 category:      Control, Monads
-version:       4.3.2
+version:       4.3.2.1
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -31,7 +31,7 @@
     bifunctors        >= 4       && < 5,
     exceptions        >= 0.5     && < 0.7,
     free              >= 4.9     && < 5,
-    monad-control     >= 0.3.2   && < 0.4,
+    monad-control     >= 0.3.2   && < 1.1,
     MonadRandom       >= 0.1     && < 0.4,
     mtl               >= 2.0     && < 2.3,
     profunctors       >= 4       && < 5,
diff --git a/src/Control/Monad/Trans/Either.hs b/src/Control/Monad/Trans/Either.hs
--- a/src/Control/Monad/Trans/Either.hs
+++ b/src/Control/Monad/Trans/Either.hs
@@ -287,16 +287,36 @@
   liftBase = liftBaseDefault
   {-# INLINE liftBase #-}
 
+#if MIN_VERSION_monad_control(1,0,0)
+
 instance MonadTransControl (EitherT e) where
+  type StT (EitherT e) a = Either e a
+  liftWith f = EitherT $ liftM return $ f runEitherT
+  {-# INLINE liftWith #-}
+  restoreT = EitherT
+  {-# INLINE restoreT #-}
+
+instance MonadBaseControl b m => MonadBaseControl b (EitherT e m) where
+  type StM (EitherT e m) a = StM m (StT (EitherT e) a)
+  liftBaseWith = defaultLiftBaseWith
+  {-# INLINE liftBaseWith #-}
+  restoreM     = defaultRestoreM
+  {-# INLINE restoreM #-}
+
+#else
+
+instance MonadTransControl (EitherT e) where
   newtype StT (EitherT e) a = StEitherT {unStEitherT :: Either e a}
   liftWith f = EitherT $ liftM return $ f $ liftM StEitherT . runEitherT
   {-# INLINE liftWith #-}
   restoreT = EitherT . liftM unStEitherT
   {-# INLINE restoreT #-}
-
+ 
 instance MonadBaseControl b m => MonadBaseControl b (EitherT e m) where
   newtype StM (EitherT e m) a = StMEitherT { unStMEitherT :: StM m (StT (EitherT e) a) }
   liftBaseWith = defaultLiftBaseWith StMEitherT
   {-# INLINE liftBaseWith #-}
   restoreM     = defaultRestoreM unStMEitherT
   {-# INLINE restoreM #-}
+
+#endif
