don't recurse infinitely