요구 사항 1,2,3,4,5 구현