id -> instancetype