slightly refactor codes, no function changes