use digest instead of evalAsync