more EitherT for more concise error handling
various minor syntactic cleanups