modify by jzr