published version, fixed typos and stuffs