some improvements, a lot of admitted lemmas