I have tried to implement option 2 and it is was a mess. You have to pass through all the `score_func`s, `loss_funcs` etc. I think option 1 is the best one if we want to get that PR merged as fast as possible. I would try to refactor that again when score_funcs and loss_funcs are not allowed any more.