refactor by CH10