Switch to using EitherT for handing errors