some mistakes are fixed