do not update self.name when extension is provided, instead, return a new component