modify by youok