improved efficiency on recursive calling by removing the dynamic call (call_user_func_array()), while keeping it dynamic.