Progressive diagonalization and applications