fu takes objective function