diff --git a/src/main/java/nsusbloader/AppPreferences.java b/src/main/java/nsusbloader/AppPreferences.java
index d9f7968..b82d73f 100644
--- a/src/main/java/nsusbloader/AppPreferences.java
+++ b/src/main/java/nsusbloader/AppPreferences.java
@@ -23,7 +23,8 @@ public class AppPreferences {
             String HostIp,
             String HostPort,
             String HostExtra,
-            boolean autoCheck4Updates
+            boolean autoCheck4Updates,
+            boolean tinfoilXciSupport
             ){
         setProtocol(Protocol);
         setRecent(PreviouslyOpened);
@@ -38,6 +39,7 @@ public class AppPreferences {
         setHostPort(HostPort);
         setHostExtra(HostExtra);
         setAutoCheckUpdates(autoCheck4Updates);
+        setTfXCI(tinfoilXciSupport);
     }
     public String getTheme(){
         String theme = preferences.get("THEME", "/res/app_dark.css");           // Don't let user to change settings manually
@@ -100,4 +102,7 @@ public class AppPreferences {
 
     public boolean getAutoCheckUpdates(){return preferences.getBoolean("AUTOCHECK4UPDATES", false); }
     public void setAutoCheckUpdates(boolean prop){preferences.putBoolean("AUTOCHECK4UPDATES", prop); }
+
+    public boolean getTfXCI(){return preferences.getBoolean("TF_XCI", false);}
+    public void setTfXCI(boolean prop){ preferences.putBoolean("TF_XCI", prop); }
 }
diff --git a/src/main/java/nsusbloader/Controllers/NSLMainController.java b/src/main/java/nsusbloader/Controllers/NSLMainController.java
index 2faa075..51f9a86 100644
--- a/src/main/java/nsusbloader/Controllers/NSLMainController.java
+++ b/src/main/java/nsusbloader/Controllers/NSLMainController.java
@@ -108,8 +108,12 @@ public class NSLMainController implements Initializable {
         else
             fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
 
-        fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP ROM", "*.nsp"));
-
+        if (SettingsTabController.getTfXCISupport() && FrontTabController.getSelectedProtocol().equals("TinFoil")){
+            fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP/XCI", "*.nsp", "*.xci"));
+        }
+        else
+            fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("NSP ROM", "*.nsp"));
+        
         filesList = fileChooser.showOpenMultipleDialog(logArea.getScene().getWindow());
         if (filesList != null && !filesList.isEmpty()) {
             FrontTabController.tableFilesListController.setFiles(filesList);
@@ -234,13 +238,25 @@ public class NSLMainController implements Initializable {
         }
         List<File> filesDropped = new ArrayList<>();
         try {
-            for (File fileOrDir : event.getDragboard().getFiles()) {
-                if (fileOrDir.getName().toLowerCase().endsWith(".nsp"))
-                    filesDropped.add(fileOrDir);
-                else if (fileOrDir.isDirectory())
-                    for (File file : fileOrDir.listFiles())
-                        if (file.getName().toLowerCase().endsWith(".nsp"))
-                            filesDropped.add(file);
+            if (SettingsTabController.getTfXCISupport() && FrontTabController.getSelectedProtocol().equals("TinFoil")){
+                for (File fileOrDir : event.getDragboard().getFiles()) {
+                    if (fileOrDir.getName().toLowerCase().endsWith(".nsp") || fileOrDir.getName().toLowerCase().endsWith(".xci"))
+                        filesDropped.add(fileOrDir);
+                    else if (fileOrDir.isDirectory())
+                        for (File file : fileOrDir.listFiles())
+                            if (file.getName().toLowerCase().endsWith(".nsp") || file.getName().toLowerCase().endsWith(".xci"))
+                                filesDropped.add(file);
+                }
+            }
+            else {
+                for (File fileOrDir : event.getDragboard().getFiles()) {
+                    if (fileOrDir.getName().toLowerCase().endsWith(".nsp"))
+                        filesDropped.add(fileOrDir);
+                    else if (fileOrDir.isDirectory())
+                        for (File file : fileOrDir.listFiles())
+                            if (file.getName().toLowerCase().endsWith(".nsp"))
+                                filesDropped.add(file);
+                }
             }
         }
         catch (SecurityException se){
@@ -268,7 +284,8 @@ public class NSLMainController implements Initializable {
                 SettingsTabController.getHostIp(),
                 SettingsTabController.getHostPort(),
                 SettingsTabController.getHostExtra(),
-                SettingsTabController.getAutoCheckForUpdates()
+                SettingsTabController.getAutoCheckForUpdates(),
+                SettingsTabController.getTfXCISupport()
         );
     }
 }
diff --git a/src/main/java/nsusbloader/Controllers/NSTableViewController.java b/src/main/java/nsusbloader/Controllers/NSTableViewController.java
index ba20ffa..896fe81 100644
--- a/src/main/java/nsusbloader/Controllers/NSTableViewController.java
+++ b/src/main/java/nsusbloader/Controllers/NSTableViewController.java
@@ -25,6 +25,7 @@ import java.io.File;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.ResourceBundle;
 
 public class NSTableViewController implements Initializable {
@@ -259,9 +260,16 @@ public class NSTableViewController implements Initializable {
                 model.setMarkForUpload(true);
         }
         else {
-            for (NSLRowModel model: rowsObsLst)
-                model.setMarkForUpload(false);
-            rowsObsLst.get(0).setMarkForUpload(true);
+            ListIterator<NSLRowModel> iterator = rowsObsLst.listIterator();
+            while (iterator.hasNext()){
+                NSLRowModel current = iterator.next();
+                if (current.getNspFileName().toLowerCase().endsWith("xci"))
+                    iterator.remove();
+                else
+                    current.setMarkForUpload(false);
+            }
+            if (!rowsObsLst.isEmpty())
+                rowsObsLst.get(0).setMarkForUpload(true);
         }
         table.refresh();
     }
diff --git a/src/main/java/nsusbloader/Controllers/SettingsController.java b/src/main/java/nsusbloader/Controllers/SettingsController.java
index c985934..51caa83 100644
--- a/src/main/java/nsusbloader/Controllers/SettingsController.java
+++ b/src/main/java/nsusbloader/Controllers/SettingsController.java
@@ -45,6 +45,8 @@ public class SettingsController implements Initializable {
     private Hyperlink newVersionLink;
     @FXML
     private Button checkForUpdBtn;
+    @FXML
+    private CheckBox tfXciSpprtCb;
 
     private HostServices hs;
 
@@ -176,6 +178,7 @@ public class SettingsController implements Initializable {
             updates.setDaemon(true);
             updates.start();
         });
+        tfXciSpprtCb.setSelected(AppPreferences.getInstance().getTfXCI());
     }
 
     public boolean getExpertModeSelected(){ return expertModeCb.isSelected(); }
@@ -189,6 +192,7 @@ public class SettingsController implements Initializable {
     public String getHostPort(){ return pcPortTextField.getText(); }
     public String getHostExtra(){ return pcExtraTextField.getText(); }
     public boolean getAutoCheckForUpdates(){ return autoCheckUpdCb.isSelected(); }
+    public boolean getTfXCISupport(){ return tfXciSpprtCb.isSelected(); }
 
     public void registerHostServices(HostServices hostServices){this.hs = hostServices;}
 
diff --git a/src/main/resources/SettingsTab.fxml b/src/main/resources/SettingsTab.fxml
index a54e779..d4c2e9f 100644
--- a/src/main/resources/SettingsTab.fxml
+++ b/src/main/resources/SettingsTab.fxml
@@ -84,9 +84,11 @@
                   <Button fx:id="checkForUpdBtn" mnemonicParsing="false" />
                </children>
             </HBox>
+            <CheckBox fx:id="tfXciSpprtCb" mnemonicParsing="false" text="%netTabAllowXciCb" />
+            <Label disable="true" text="%netTabAllowXciTextField" wrapText="true" />
          </children>
          <padding>
-            <Insets left="5.0" right="5.0" top="5.0" />
+            <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
          </padding>
       </VBox>
    </children>
diff --git a/src/main/resources/locale.properties b/src/main/resources/locale.properties
index 54fb33d..ee47e5c 100644
--- a/src/main/resources/locale.properties
+++ b/src/main/resources/locale.properties
@@ -41,3 +41,5 @@ windowTitleNewVersionNOTAval=No new versions available
 windowTitleNewVersionUnknown=Unable to check for new versions
 windowBodyNewVersionUnknown=Something went wrong\nMaybe internet unavailable, or GitHub is down
 windowBodyNewVersionNOTAval=You're using the latest version
+netTabAllowXciCb=Allow XCI files selection for TinFoil
+netTabAllowXciTextField=Used by some third-party applications that support XCI and utilizes TinFoil transfer protocol. Don't change if not sure.
diff --git a/src/main/resources/locale_fra.properties b/src/main/resources/locale_fra.properties
index 270fb67..76eb9bf 100644
--- a/src/main/resources/locale_fra.properties
+++ b/src/main/resources/locale_fra.properties
@@ -40,4 +40,6 @@ windowTitleNewVersionNOTAval=Aucune nouvelle version disponible
 windowTitleNewVersionUnknown=Impossible de v\u00E9rifier les nouvelles versions
 windowBodyNewVersionNOTAval=Vous utilisez la derni\u00E8re version
 windowBodyNewVersionUnknown=Une erreur s'est produite\nPeut-\u00EAtre des probl\u00E8mes de connexion Internet ou GitHub est en panne
+netTabAllowXciCb=Autoriser la s\u00E9lection de fichiers XCI pour TinFoil
+netTabAllowXciTextField=Utilis\u00E9 par certaines applications tierces prenant en charge XCI et utilisant le protocole de transfert TinFoil. Ne changez pas en cas de doute.
 
diff --git a/src/main/resources/locale_rus.properties b/src/main/resources/locale_rus.properties
index 5b9cefc..061ddf6 100644
--- a/src/main/resources/locale_rus.properties
+++ b/src/main/resources/locale_rus.properties
@@ -42,4 +42,6 @@ windowTitleNewVersionNOTAval=\u041D\u0435\u0442 \u043D\u043E\u0432\u044B\u0445 \
 windowTitleNewVersionUnknown=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u043D\u0430\u043B\u0438\u0447\u0438\u0435 \u043D\u043E\u0432\u044B\u0445 \u0432\u0435\u0440\u0441\u0438\u0439
 windowBodyNewVersionNOTAval=\u0412\u044B \u0443\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044E\u044E \u0432\u0435\u0440\u0441\u0438\u044E
 windowBodyNewVersionUnknown=\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A.\n\u041C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043D\u0435\u0442 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0430 \u0438\u043B\u0438 GitHub \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D.
+netTabAllowXciCb=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0432\u044B\u0431\u0438\u0440\u0430\u0442\u044C XCI \u0444\u0430\u0439\u043B\u044B \u0434\u043B\u044F TinFoil
+netTabAllowXciTextField=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u043C\u0438 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u043C\u0438 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442 XCI \u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0438 TinFoil. \u041D\u0435 \u043C\u0435\u043D\u044F\u0439\u0442\u0435 \u0435\u0441\u043B\u0438 \u043D\u0435 \u0443\u0432\u0435\u0440\u0435\u043D\u044B.
 
diff --git a/src/main/resources/locale_ukr.properties b/src/main/resources/locale_ukr.properties
index 46cadde..69ae4e1 100644
--- a/src/main/resources/locale_ukr.properties
+++ b/src/main/resources/locale_ukr.properties
@@ -40,4 +40,6 @@ windowTitleNewVersionAval=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u043
 windowTitleNewVersionNOTAval=\u041D\u0435\u043C\u0430\u0454 \u043D\u043E\u0432\u0438\u0445 \u0432\u0435\u0440\u0441\u0456\u0439
 windowTitleNewVersionUnknown=\u041D\u0435\u043C\u043E\u0436\u043B\u0438\u0432\u043E \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u043D\u0430\u044F\u0432\u043D\u0456\u0441\u0442\u044C \u043D\u043E\u0432\u0438\u0445 \u0432\u0435\u0440\u0441\u0456\u0439
 windowBodyNewVersionNOTAval=\u0412\u0438 \u0432\u0436\u0435 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0454\u0442\u0435 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0432\u0435\u0440\u0441\u0456\u044E
-windowBodyNewVersionUnknown=\u0429\u043E\u0441\u044C \u043F\u0456\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A.\n\u041C\u043E\u0436\u043B\u0438\u0432\u043E, \u0456\u043D\u0442\u0435\u0440\u043D\u0435\u0442 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0439, \u0430\u0431\u043E GitHub \u043D\u0435 \u043F\u0440\u0430\u0446\u044E\u0454.
\ No newline at end of file
+windowBodyNewVersionUnknown=\u0429\u043E\u0441\u044C \u043F\u0456\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A.\n\u041C\u043E\u0436\u043B\u0438\u0432\u043E, \u0456\u043D\u0442\u0435\u0440\u043D\u0435\u0442 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0439, \u0430\u0431\u043E GitHub \u043D\u0435 \u043F\u0440\u0430\u0446\u044E\u0454.
+netTabAllowXciCb=\u0414\u043E\u0437\u0432\u043E\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 XCI \u0444\u0430\u0439\u043B\u0456\u0432 \u0434\u043B\u044F \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u0443 TinFoil
+netTabAllowXciTextField=\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0454\u0442\u044C\u0441\u044F \u0434\u0435\u044F\u043A\u0438\u043C\u0438 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0456\u043C\u0438 \u0434\u043E\u0434\u0430\u0442\u043A\u0430\u043C\u0438, \u044F\u043A\u0456 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u044E\u0442\u044C XCI \u0456 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u044E\u0442\u044C \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0456 TinFoil. \u042F\u043A\u0449\u043E \u043D\u0435 \u0432\u043F\u0435\u0432\u043D\u0435\u043D\u0456 \u2014\u00A0\u043D\u0435 \u0437\u043C\u0456\u043D\u044E\u0439\u0442\u0435.
\ No newline at end of file