factory pattern 완료.