perturbation method added