IAtom을 인터페이스로 만들어놓는 바람에 중복 코드가 너무 많다...

nil만 없었어도 상속관계가 복잡해지지 않았을텐데