some mistakes are corrected