restore diff_derivative