some errors corrected