recurse add