tested to recalc #d