fix optional parameters and callbacks