refactor by changes