refactor by comments