some minor additions, some comments removed