new recursive inner function is much much better
caching fix
better ancestors: fitter, happier, more productive. fixed descendants too.
more caching improvements; increased giveup limit