refactor 12.19 ~ 12.22.