Index: src/sas/sascalc/dataloader/file_reader_base_class.py
===================================================================
--- src/sas/sascalc/dataloader/file_reader_base_class.py	(revision a78433dd9e49c90c633ff982dc5fb97199a5f55e)
+++ src/sas/sascalc/dataloader/file_reader_base_class.py	(revision 248ff7332a99edb391f42db2a242a497473df452)
@@ -66,13 +66,12 @@
                     if not self.f_open.closed:
                         self.f_open.close()
+                    if len(self.output) > 0:
+                        # Sort the data that's been loaded
+                        self.sort_one_d_data()
+                        self.sort_two_d_data()
         else:
             msg = "Unable to find file at: {}\n".format(filepath)
             msg += "Please check your file path and try again."
             self.handle_error_message(msg)
-
-        if isinstance(self.output[0], Data1D):
-            self.sort_one_d_data()
-        elif isinstance(self.output[0], Data2D):
-            self.sort_two_d_data()
 
         # Return a list of parsed entries that data_loader can manage
@@ -122,11 +121,11 @@
                 if data.dlam is not None:
                     data.dlam = np.asarray([data.dlam[i] for i in ind]).astype(np.float64)
-                data.xmin = np.min(data.x)
-                data.xmax = np.max(data.x)
-                data.ymin = np.min(data.y)
-                data.ymax = np.max(data.y)
-            final_list.append(data)
-        self.output = final_list
-        self.remove_empty_q_values()
+                if len(data.x > 0):
+                    data.xmin = np.min(data.x)
+                    data.xmax = np.max(data.x)
+                    data.ymin = np.min(data.y)
+                    data.ymax = np.max(data.y)
+        #     final_list.append(data)
+        # self.output = final_list
 
     def sort_two_d_data(self):
@@ -157,6 +156,6 @@
                     dataset.x_bins = dataset.qx_data[:int(n_cols)]
                 dataset.data = dataset.data.flatten()
-                final_list.append(dataset)
-        self.output = final_list
+        #         final_list.append(dataset)
+        # self.output = final_list
 
     def set_all_to_none(self):
Index: src/sas/sascalc/dataloader/readers/associations.py
===================================================================
--- src/sas/sascalc/dataloader/readers/associations.py	(revision 371b9e2fdd394f51668cf12a42d9872e6f8698d8)
+++ src/sas/sascalc/dataloader/readers/associations.py	(revision 248ff7332a99edb391f42db2a242a497473df452)
@@ -37,5 +37,5 @@
     Read the specified settings file to associate
     default readers to file extension.
-    
+
     :param loader: Loader object
     :param settings: path to the json settings file [string]
Index: src/sas/sascalc/dataloader/readers/cansas_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision 0615d54bd43de8a55f997491bdd306bd54aeb4d8)
+++ src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision 248ff7332a99edb391f42db2a242a497473df452)
@@ -130,5 +130,10 @@
                 self.current_datainfo.meta_data[PREPROCESS] = self.processing_instructions
                 self._parse_entry(entry)
-                self.send_to_output() # Combune datasets with DataInfo
+                has_error_dx = self.current_dataset.dx is not None
+                has_error_dy = self.current_dataset.dy is not None
+                self.remove_empty_q_values(has_error_dx=has_error_dx,
+                    has_error_dy=has_error_dy)
+                self.send_to_output() # Combine datasets with DataInfo
+                self.current_datainfo = DataInfo() # Reset DataInfo
         except FileContentsException as fc_exc:
             # File doesn't meet schema - try loading with a less strict schema
@@ -215,6 +220,4 @@
             self.current_dataset = plottable_1D(np.empty(0), np.empty(0),
                 np.empty(0), np.empty(0))
-            self.current_dataset.dxl = np.empty(0)
-            self.current_dataset.dxw = np.empty(0)
         self.base_ns = "{" + CANSAS_NS.get(self.cansas_version).get("ns") + "}"
 
@@ -295,6 +298,8 @@
                     self.current_dataset.dx = np.append(self.current_dataset.dx, data_point)
                 elif tagname == 'dQw':
+                    if self.current_dataset.dqw is None: self.current_dataset.dqw = np.empty(0)
                     self.current_dataset.dxw = np.append(self.current_dataset.dxw, data_point)
                 elif tagname == 'dQl':
+                    if self.current_dataset.dxl is None: self.current_dataset.dxl = np.empty(0)
                     self.current_dataset.dxl = np.append(self.current_dataset.dxl, data_point)
                 elif tagname == 'Qmean':
Index: test/fileconverter/test/utest_nxcansas_writer.py
===================================================================
--- test/fileconverter/test/utest_nxcansas_writer.py	(revision c476457a8268dc70465327ac7898306c6c214bb4)
+++ test/fileconverter/test/utest_nxcansas_writer.py	(revision 248ff7332a99edb391f42db2a242a497473df452)
@@ -1,6 +1,4 @@
 from sas.sascalc.file_converter.nxcansas_writer import NXcanSASWriter
-from sas.sascalc.dataloader.readers.cansas_reader import Reader as XMLReader
-from sas.sascalc.dataloader.readers.red2d_reader import Reader as DATReader
-from sas.sascalc.dataloader.readers.cansas_reader_HDF5 import Reader as HDF5Reader
+from sas.sascalc.dataloader.loader import Loader
 
 import os
@@ -14,4 +12,5 @@
 
     def setUp(self):
+        self.loader = Loader()
         self.writer = NXcanSASWriter()
         self.read_file_1d = "cansas1d.xml"
@@ -19,11 +18,8 @@
         self.read_file_2d = "exp18_14_igor_2dqxqy.dat"
         self.write_file_2d = "export2d.h5"
-        self.hdf5_reader = HDF5Reader()
 
-        xml_reader = XMLReader()
-        self.data_1d = xml_reader.read(self.read_file_1d)[0]
+        self.data_1d = self.loader.load(self.read_file_1d)[0]
 
-        dat_reader = DATReader()
-        self.data_2d = dat_reader.read(self.read_file_2d)
+        self.data_2d = self.loader.load(self.read_file_2d)[0]
         self.data_2d.detector[0].name = ''
         self.data_2d.source.radiation = 'neutron'
@@ -31,5 +27,5 @@
     def test_write_1d(self):
         self.writer.write([self.data_1d], self.write_file_1d)
-        data = self.hdf5_reader.read(self.write_file_1d)
+        data = self.loader.load(self.write_file_1d)
         self.assertTrue(len(data) == 1)
         data = data[0]
@@ -41,5 +37,5 @@
     def test_write_2d(self):
         self.writer.write([self.data_2d], self.write_file_2d)
-        data = self.hdf5_reader.read(self.write_file_2d)
+        data = self.loader.load(self.write_file_2d)
         self.assertTrue(len(data) == 1)
         data = data[0]
Index: test/sasdataloader/test/utest_red2d_reader.py
===================================================================
--- test/sasdataloader/test/utest_red2d_reader.py	(revision 959eb0181ad06828a748f04512f953aad5b31659)
+++ test/sasdataloader/test/utest_red2d_reader.py	(revision 248ff7332a99edb391f42db2a242a497473df452)
@@ -7,17 +7,17 @@
 import unittest
 from sas.sascalc.dataloader.loader import  Loader
- 
+
 import os.path
 
 class abs_reader(unittest.TestCase):
-    
+
     def setUp(self):
         self.loader = Loader()
-        
+
     def test_checkdata(self):
         """
             Test .DAT file loaded as IGOR/DAT 2D Q_map
         """
-        f = self.loader.load("exp18_14_igor_2dqxqy.dat")
+        f = self.loader.load("exp18_14_igor_2dqxqy.dat")[0]
         # The length of the data is 10
         self.assertEqual(len(f.qx_data),  36864)
@@ -26,9 +26,8 @@
         self.assertEqual(f.Q_unit, '1/A')
         self.assertEqual(f.I_unit, '1/cm')
-        
+
         self.assertEqual(f.meta_data['loader'],"IGOR/DAT 2D Q_map")
-        
-        
+
+
 if __name__ == '__main__':
     unittest.main()
-   
