exception 및 전체적인 리팩토링