modify by libaosheng