Switch to MonadError + EitherT, because that is good for you.