explains (in comments) the fix for circular reference recursion