id replaced by instancetype