optimise digest loop