Used EitherT and State