add comment explaing recurison avoidance