allowing for recursion limiting