inject recursor as arg3