some improvment has been added.