modify by longbo