Index: src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py	(revision ee18d3342afd576de16503265ff92e34821fca74)
+++ src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py	(revision 38eb4333d5860a0b0cd2a67d14482ca79a181bf4)
@@ -32,6 +32,9 @@
         self.currentTab = 0
 
-        # The current optimizer
+        # The default optimizer
         self.optimizer = 'Levenberg-Marquardt'
+
+        # Dataset inde -> Fitting tab mapping
+        self.dataToFitTab = {}
 
         # The tabs need to be closeable
@@ -45,4 +48,5 @@
         # Deal with signals
         self.tabCloseRequested.connect(self.tabCloses)
+        self.communicate.dataDeletedSignal.connect(self.dataDeleted)
 
         # Perspective window not allowed to close by default
@@ -104,27 +108,84 @@
         tab.is_batch_fitting = is_batch
         # Add this tab to the object library so it can be retrieved by scripting/jupyter
-        ObjectLibrary.addObject(self.tabName(), tab)
+        tab_name = self.tabName(is_batch=is_batch)
+        ObjectLibrary.addObject(tab_name, tab)
         self.tabs.append(tab)
+        if data:
+            self.updateFitDict(data, tab_name)
         self.maxIndex += 1
-        self.addTab(tab, self.tabName())
-
-    def tabName(self):
+        self.addTab(tab, tab_name)
+
+    def updateFitDict(self, item_key, tab_name):
+        """
+        Create a list if none exists and append if there's already a list
+        """
+        if item_key in self.dataToFitTab.keys():
+            self.dataToFitTab[item_key].append(tab_name)
+        else:
+            self.dataToFitTab[item_key] = [tab_name]
+
+        #print "CURRENT dict: ", self.dataToFitTab
+
+    def tabName(self, is_batch=False):
         """
         Get the new tab name, based on the number of fitting tabs so far
         """
-        page_name = "FitPage" + str(self.maxIndex)
+        page_name = "BatchPage" if is_batch else "FitPage"
+        page_name = page_name + str(self.maxIndex)
         return page_name
 
+    def resetTab(self, index):
+        """
+        Adds a new tab and removes the last tab
+        as a way of resetting the fit tabs
+        """
+        # If data on tab empty - do nothing
+        if not self.tabs[index].data:
+            return
+        # Add a new, empy tab
+        self.addFit(None)
+        # Remove the previous last tab
+        self.tabCloses(index)
+
     def tabCloses(self, index):
         """
         Update local bookkeeping on tab close
         """
-        assert len(self.tabs) >= index
+        #assert len(self.tabs) >= index
         # don't remove the last tab
         if len(self.tabs) <= 1:
+            self.resetTab(index)
             return
-        ObjectLibrary.deleteObjectByRef(self.tabs[index])
-        del self.tabs[index]
-        self.removeTab(index)
+        try:
+            ObjectLibrary.deleteObjectByRef(self.tabs[index])
+            self.removeTab(index)
+            del self.tabs[index]
+        except IndexError:
+            # The tab might have already been deleted previously
+            pass
+
+    def closeTabByName(self, tab_name):
+        """
+        Given name of the fitting tab - close it
+        """
+        for tab_index in xrange(len(self.tabs)):
+            if self.tabText(tab_index) == tab_name:
+                self.tabCloses(tab_index)
+        pass # debug hook
+
+    def dataDeleted(self, index_list):
+        """
+        Delete fit tabs referencing given data
+        """
+        if not index_list or not self.dataToFitTab:
+            return
+        for index_to_delete in index_list:
+            if index_to_delete in self.dataToFitTab.keys():
+                for tab_name in self.dataToFitTab[index_to_delete]:
+                    # delete tab #index after corresponding data got removed
+                    self.closeTabByName(tab_name)
+                self.dataToFitTab.pop(index_to_delete)
+
+        #print "CURRENT dict: ", self.dataToFitTab
 
     def allowBatch(self):
@@ -158,5 +219,8 @@
 
             if numpy.any(available_tabs):
-                self.tabs[available_tabs.index(True)].data = data
+                first_good_tab = available_tabs.index(True)
+                self.tabs[first_good_tab].data = data
+                tab_name = str(self.tabText(first_good_tab))
+                self.updateFitDict(data, tab_name)
             else:
                 self.addFit(data, is_batch=is_batch)
Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision ee18d3342afd576de16503265ff92e34821fca74)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 38eb4333d5860a0b0cd2a67d14482ca79a181bf4)
@@ -311,4 +311,6 @@
                 self.cbFileNames.addItem(filename)
             self.cbFileNames.setVisible(True)
+            # This panel is not designed to view individual fits, so disable plotting
+            self.cmdPlot.setVisible(False)
         # Similarly on other tabs
         self.options_widget.setEnablementOnDataLoad()
Index: src/sas/qtgui/Perspectives/Fitting/UI/FittingWidgetUI.ui
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UI/FittingWidgetUI.ui	(revision ee18d3342afd576de16503265ff92e34821fca74)
+++ src/sas/qtgui/Perspectives/Fitting/UI/FittingWidgetUI.ui	(revision 38eb4333d5860a0b0cd2a67d14482ca79a181bf4)
@@ -34,4 +34,7 @@
        <item row="0" column="0">
         <widget class="QComboBox" name="cbFileNames">
+         <property name="toolTip">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Choose a file to set initial fit parameters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
          <property name="sizeAdjustPolicy">
           <enum>QComboBox::AdjustToContents</enum>
