Event의 union 같은 느낌의 기능을 멤버함수로 분리+유닛테스트
key mapping 분리