Use ErrorT instead of EitherT