fu takes objective function
add objective test