Feat/issue 219

#219 를 구현하였습니다.

#201 구현이 어쩌다보니 섞여들어갔는데 어중간하게 코드를 쪼개는 바람에 굉장히 난해해진 것 같네요.
#268 고치면서 논리적으로 다시 다듬어보겠습니다 ㅠㅠㅠ