completes recursion, destructuring, and refs