Reverted all the new code except the _execute_child() arguments fix.
I don't think I can trust it and the old code has worked perfectly for years.