diff --git a/sen2chain/download_eodag.py b/sen2chain/download_eodag.py
index cc9dc5b4b22eeff31f4719df0d64f2573d6a9927..dbe9752f69689f79c97b054a4747cb4a8ab9ea8b 100644
--- a/sen2chain/download_eodag.py
+++ b/sen2chain/download_eodag.py
@@ -55,13 +55,20 @@ class S2cEodag:
     
     def search(
         self,
-        productType = "S2_MSI_L1C",
+        productType: str = "L1C",
         start: str = "2015-01-01",
         end: str = "9999-01-01",
     
     ):
+        if productType == "L1C":
+            self.productType = "S2_MSI_L1C"
+            outputs_prefix = Path(Config().get("l1c_path")) / self.name
+        elif productType == "L2A":
+            self.productType = "S2_MSI_L2A"
+            outputs_prefix = Path(Config().get("l2a_path")) / self.name
+
         default_search_criteria = dict(
-            productType = productType,
+            productType = self.productType,
             start = start,
             end = end
         )
@@ -71,11 +78,56 @@ class S2cEodag:
             **default_search_criteria
         )
         
-        logger.info("{} products were found given the above search criteria".format(len(self.products)))
-        logger.info(self.products)
-        logger.info([p.properties["storageStatus"] for p in self.products])
+        #### Vériffier ici si le produit existe déjà en local
+        # ~ logger.info(outputs_prefix)
+        
+        for p in self.products:
+            
+
+            # ~ logger.info("location: {}".format(p.location))
+            if (outputs_prefix / (p.properties["title"] + ".SAFE")).exists():
+                p.location = "file://" + str(outputs_prefix / (p.properties["title"] + ".SAFE"))
+                logger.info("Product {} locally present ".format(p.properties["title"]))
+            else:
+                logger.info("Product {} locally absent ".format(p.properties["title"]))
+            # ~ logger.info("location: {}".format(p.location))
+            
+        # ~ logger.info("{} products were found given the above search criteria".format(len(self.products)))
+        # ~ logger.info(self.products)
+        # ~ logger.info([p.properties["storageStatus"] for p in self.products])
         
-        logger.info("{} products were found given the above search criteria".format(len(self.products)))
-        logger.info("{} products were found given the above search criteria, online".format(len(self.products.filter_online())))
+        # ~ logger.info("{} products were found given the above search criteria".format(len(self.products)))
+        # ~ logger.info("{} products were found given the above search criteria, online".format(len(self.products.filter_online())))
 
+    def download(
+        self,
+        product_id, 
+        outputs_prefix: str = None,
+        extract: bool = True,
+        delete_archive: bool = True,
+    ):
+        ######### faudrait ici récupérer le type de produit L1C/L2A du nom du product_id et adapter le dossier en conséquence
+        if not outputs_prefix:
+            if self.productType == "S2_MSI_L1C":
+                root_path = "l1c_path"
+            elif self.productType == "S2_MSI_L2A":
+                root_path = "l2a_path"
+            outputs_prefix = str(Path(Config().get(root_path)) / self.name)
         
+        ########## faudrait aussi mettre une condition sur le online
+        ########## et si offline supprimer les retry
+        downloaded_path = self.dag.download(
+            product_id, 
+            outputs_prefix = outputs_prefix, 
+            extract = extract, 
+            delete_archive = delete_archive,
+        )
+
+        if Path(downloaded_path).stem == Path(downloaded_path).parent.stem:
+            upper_location = Path(downloaded_path).parent.parent / Path(downloaded_path).name
+            Path(downloaded_path).replace(upper_location)
+            product_id.location = "file://" + str(upper_location)
+            Path(downloaded_path).parent.rmdir()
+            logger.info("Moving up SAVE file")
+
+