some minor changes have been added.