diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
 # Revision history for either-result
 
+## 0.3.0.0
+
+*2020.08.05*
+
+### Breaking changes
+
+- Change `Either String` to `Result` for some monad transformer functions' types
+  - `Control.Monad.Result.liftEither` → `Control.Monad.Result.liftResult`
+  - `Control.Monad.Trans.Result.ResultT`
+  - `Control.Monad.Trans.Result.runResultT`
+  - `Control.Monad.Trans.Result.mapResultT`
+
 ## 0.2.0.0
 
 *2020.08.04*
diff --git a/either-result.cabal b/either-result.cabal
--- a/either-result.cabal
+++ b/either-result.cabal
@@ -1,9 +1,9 @@
 cabal-version: 2.2
 
 name: either-result
-version: 0.2.0.0
-synopsis: ‘Result a’ is a wrapper of ‘Either String a’.
-description: ‘Result a’ is a wrapper of ‘Either String a’, but ‘Result’ is an instance of ‘MonadFail’.
+version: 0.3.0.0
+synopsis: ‘MonadFail’ instance for a wrapper of ‘ExceptT String m a’.
+description: ‘ResultT m a’ is a wrapper of ‘ExceptT String m a’ which are similar except ‘MonadFail’ instance.
 homepage: https://github.com/kakkun61/either-result
 bug-reports: https://github.com/kakkun61/either-result/issues
 license: Apache-2.0
diff --git a/src/Control/Monad/Result.hs b/src/Control/Monad/Result.hs
--- a/src/Control/Monad/Result.hs
+++ b/src/Control/Monad/Result.hs
@@ -13,7 +13,7 @@
 module Control.Monad.Result
   ( -- * The class
     MonadError (throwError, catchError)
-  , liftEither
+  , liftResult
     -- * The ResultT monad transformer
   , type ResultT (ResultT)
   , runResultT
@@ -52,7 +52,7 @@
   catchError = catchE
   {-# INLINE catchError #-}
 
--- | Lift 'Either' into 'MonadError'.
-liftEither :: MonadError String m => Either String a -> m a
-liftEither = either throwError pure
-{-# INLINE liftEither #-}
+-- | Lift 'Result' into 'MonadError'.
+liftResult :: MonadError String m => Result a -> m a
+liftResult = result throwError pure
+{-# INLINE liftResult #-}
diff --git a/src/Control/Monad/Trans/Result.hs b/src/Control/Monad/Trans/Result.hs
--- a/src/Control/Monad/Trans/Result.hs
+++ b/src/Control/Monad/Trans/Result.hs
@@ -138,18 +138,18 @@
 {-# INLINE toMonadFail #-}
 
 -- | Construct and destruct 'T.Result'.
-pattern ResultT :: Functor m => m (Either String a) -> T.ResultT m a
-pattern ResultT m <- (runExceptT . T.runResultT -> m)
-  where ResultT m = T.ResultT $ ExceptT m
+pattern ResultT :: Functor m => m (T.Result a) -> T.ResultT m a
+pattern ResultT m <- ((Result <$>) . runExceptT . T.runResultT -> m)
+  where ResultT m = T.ResultT $ ExceptT $ runResult <$> m
 
 {-# COMPLETE ResultT #-}
 
 -- | Unwrap 'ResultT'.
-runResultT :: Functor m => T.ResultT m a -> m (Either String a)
+runResultT :: Functor m => T.ResultT m a -> m (T.Result a)
 runResultT (ResultT m) = m
 {-# INLINE runResultT #-}
 
 -- | Map the unwrapped computation using the given function.
-mapResultT :: (Functor m, Functor n) => (m (Either String a) -> n (Either String b)) -> T.ResultT m a -> T.ResultT n b
+mapResultT :: (Functor m, Functor n) => (m (T.Result a) -> n (T.Result b)) -> T.ResultT m a -> T.ResultT n b
 mapResultT f = T.mapResultT $ T.runResultT . ResultT . f . runResultT . T.ResultT
 {-# INLINE mapResultT #-}
