modify by chenlong