parts of this loop are common to several methods. outsource ?
would need argument for extra things to calculate in the loop, I guess