adding Broyden's method