revised some parts