moment: bessel correction is optional
out: use environment to pass macro context