adding perturbation implementaions