reverted call_user_func_array change; this could call internal protected methods