          masker = PluginLoader.get_masker(masker_name)(exclude_gpus=self._exclude_gpus,
                                                        image_is_aligned=image_is_aligned,
                                                        configfile=configfile,
                                                        instance=self._instance)
          return masker
  
      def _launch_plugin(self, phase):
          """ Launch an extraction plugin """
          logger.debug("Launching %s plugin", phase)
          in_qname = f"extract{self._instance}_{phase}_in"
 
</s> remove     def _launch_plugin(self, phase):
 </s> add     def _launch_plugin(self, phase: str) -> None: </s> remove         masker = PluginLoader.get_masker(masker_name)(exclude_gpus=self._exclude_gpus,
 </s> add         plugin = PluginLoader.get_masker(masker_name)(exclude_gpus=self._exclude_gpus, </s> remove         detector = PluginLoader.get_detector(detector_name)(exclude_gpus=self._exclude_gpus,
                                                            rotation=rotation,
                                                            min_size=min_size,
                                                            configfile=configfile,
                                                            instance=self._instance)
        return detector

    def _load_mask(self, masker, image_is_aligned, configfile):
 </s> add         plugin = PluginLoader.get_detector(detector_name)(exclude_gpus=self._exclude_gpus,
                                                          rotation=rotation,
                                                          min_size=min_size,
                                                          configfile=configfile,
                                                          instance=self._instance)
        return plugin

    def _load_mask(self,
                   masker: str,
                   image_is_aligned: bool,
                   configfile: Optional[str]) -> Optional["Masker"]: </s> remove         aligner = PluginLoader.get_aligner(aligner_name)(exclude_gpus=self._exclude_gpus,
                                                         configfile=configfile,
                                                         normalize_method=normalize_method,
                                                         re_feed=re_feed,
                                                         instance=self._instance)
        return aligner

    def _load_detect(self, detector, rotation, min_size, configfile):
 </s> add         plugin = PluginLoader.get_aligner(aligner_name)(exclude_gpus=self._exclude_gpus,
                                                        configfile=configfile,
                                                        normalize_method=normalize_method,
                                                        re_feed=re_feed,
                                                        instance=self._instance)
        return plugin

    def _load_detect(self,
                     detector: str,
                     rotation: Optional[List[int]],
                     min_size: int,
                     configfile: Optional[str]) -> Optional["Detector"]: </s> remove     def get_masker(name, disable_logging=False):
 </s> add     def get_masker(name: str, disable_logging: bool = False) -> Type["Masker"]:
        return plugin
          masker = PluginLoader.get_masker(masker_name)(exclude_gpus=self._exclude_gpus,
                                                        image_is_aligned=image_is_aligned,
                                                        configfile=configfile,
                                                        instance=self._instance)
        return plugin
  
      def _launch_plugin(self, phase):
          """ Launch an extraction plugin """
          logger.debug("Launching %s plugin", phase)
          in_qname = f"extract{self._instance}_{phase}_in"
keep keep keep keep replace keep keep keep keep keep
 extract: Add batch processing mode 
plugins/extract/pipeline.py