lots of lemmas, leading to some progress at the top level