remove references of hasChanged in source code
decoupling metrics of objective function