some errors been corrected