some typos were amended