  
          For align/mask (2nd/3rd pass operations) the :attr:`ExtractMedia.detected_faces` should
          also be populated by calling :func:`ExtractMedia.set_detected_faces`.
          """
          qname = "extract_{}_in".format(self._current_phase[0])
          retval = self._queues[qname]
          logger.trace("%s: %s", qname, retval)
          return retval
  
      @property
 
</s> remove             qname = "extract_{}_in".format(self._phases[self._phase_index + 1][0])
 </s> add             qname = "extract{}_{}_in".format(self._instance,
                                             self._phases[self._phase_index + 1][0]) </s> remove             qname = "extract_{}_out".format(self._final_phase)
 </s> add             qname = "extract{}_{}_out".format(self._instance, self._final_phase) </s> remove 
 </s> add     instance: int, optional
        If this plugin is being executed multiple times (i.e. multiple pipelines have been
        launched), the instance of the plugin must be passed in for naming convention reasons.
        Default: 0
        qname = "extract{}_{}_in".format(self._instance, self._current_phase[0])
  
          For align/mask (2nd/3rd pass operations) the :attr:`ExtractMedia.detected_faces` should
          also be populated by calling :func:`ExtractMedia.set_detected_faces`.
          """
        qname = "extract{}_{}_in".format(self._instance, self._current_phase[0])
          retval = self._queues[qname]
          logger.trace("%s: %s", qname, retval)
          return retval
  
      @property
keep keep keep keep replace keep keep keep keep keep
 Extract - Allow multiple pipelines to be loaded 
plugins/extract/pipeline.py