modify by badao