add recalc_every option