re-add recursion guard