Particularly with respect to calcNewField(). Needs thought about optimum trade-off between power, flexibility and simplicity.