some typos removed and some synonyms added