Should this not use `self.part_factory`?