Index: src/sas/sascalc/dataloader/data_info.py
===================================================================
--- src/sas/sascalc/dataloader/data_info.py	(revision 8d5e11c08bca3b22af7e3960fca8743c4552eb1a)
+++ src/sas/sascalc/dataloader/data_info.py	(revision 4fdcc659bc3efafa4310cdbe335d80ef80d1b7bb)
@@ -991,4 +991,6 @@
         clone._yunit = self._yunit
         clone._zunit = self._zunit
+        clone.x_bins = self.x_bins
+        clone.y_bins = self.y_bins
 
         clone.title = self.title
@@ -1186,8 +1188,6 @@
         final_dataset.yaxis(data._yaxis, data._yunit)
         final_dataset.zaxis(data._zaxis, data._zunit)
-        if len(data.data.shape) == 2:
-            n_rows, n_cols = data.data.shape
-            final_dataset.y_bins = data.qy_data[0::int(n_cols)]
-            final_dataset.x_bins = data.qx_data[:int(n_cols)]
+        final_dataset.y_bins = data.y_bins
+        final_dataset.x_bins = data.x_bins
     else:
         return_string = ("Should Never Happen: _combine_data_info_with_plottabl"
Index: src/sas/sascalc/dataloader/readers/cansas_reader_HDF5.py
===================================================================
--- src/sas/sascalc/dataloader/readers/cansas_reader_HDF5.py	(revision 9dc1500e7cea3169b3f8cfa18284232e0758c40d)
+++ src/sas/sascalc/dataloader/readers/cansas_reader_HDF5.py	(revision 4fdcc659bc3efafa4310cdbe335d80ef80d1b7bb)
@@ -12,10 +12,11 @@
     Data1D, Data2D, DataInfo, Process, Aperture, Collimation, \
     TransmissionSpectrum, Detector
-from ..data_info import combine_data_info_with_plottable
 from ..loader_exceptions import FileContentsException, DefaultReaderException
 from ..file_reader_base_class import FileReader, decode
 
+
 def h5attr(node, key, default=None):
     return decode(node.attrs.get(key, default))
+
 
 class Reader(FileReader):
@@ -71,5 +72,6 @@
                 except Exception as e:
                     if extension not in self.ext:
-                        msg = "NXcanSAS HDF5 Reader could not load file {}".format(basename + extension)
+                        msg = "NXcanSAS Reader could not load file {}".format(
+                            basename + extension)
                         raise DefaultReaderException(msg)
                     raise FileContentsException(e.message)
@@ -85,9 +87,10 @@
                     self.raw_data.close()
 
-                for dataset in self.output:
-                    if isinstance(dataset, Data1D):
-                        if dataset.x.size < 5:
-                            self.output = []
-                            raise FileContentsException("Fewer than 5 data points found.")
+                for data_set in self.output:
+                    if isinstance(data_set, Data1D):
+                        if data_set.x.size < 5:
+                            exception = FileContentsException(
+                                "Fewer than 5 data points found.")
+                            data_set.errors.append(exception)
 
     def reset_state(self):
@@ -105,6 +108,6 @@
         self.i_name = u''
         self.i_node = u''
-        self.q_uncertainties = []
-        self.q_resolutions = []
+        self.q_uncertainties = None
+        self.q_resolutions = None
         self.i_uncertainties = u''
         self.parent_class = u''
@@ -257,7 +260,5 @@
     def process_2d_data_object(self, data_set, key, unit):
         if key == self.i_name:
-            self.current_dataset.x_bins, self.current_dataset.y_bins = \
-                data_set.shape
-            self.current_dataset.data = data_set.flatten()
+            self.current_dataset.data = data_set
             self.current_dataset.zaxis("Intensity", unit)
         elif key == self.i_uncertainties:
@@ -268,10 +269,10 @@
             if self.q_name[0] == self.q_name[1]:
                 # All q data in a single array
-                self.current_dataset.qx_data = data_set[0].flatten()
-                self.current_dataset.qy_data = data_set[1].flatten()
+                self.current_dataset.qx_data = data_set[0]
+                self.current_dataset.qy_data = data_set[1]
             elif self.q_name.index(key) == 0:
-                self.current_dataset.qx_data = data_set.flatten()
+                self.current_dataset.qx_data = data_set
             elif self.q_name.index(key) == 1:
-                self.current_dataset.qy_data = data_set.flatten()
+                self.current_dataset.qy_data = data_set
         elif key in self.q_uncertainties or key in self.q_resolutions:
             if ((self.q_uncertainties[0] == self.q_uncertainties[1]) or
@@ -537,7 +538,21 @@
             if dataset.data.ndim == 2:
                 (n_rows, n_cols) = dataset.data.shape
-                dataset.y_bins = dataset.qy_data[0::n_cols]
-                dataset.x_bins = dataset.qx_data[0::n_rows]
+                print(n_rows)
+                print(n_cols)
+                flat_qy = dataset.qy_data[0::n_cols].flatten()
+                if flat_qy[0] == flat_qy[1]:
+                    flat_qy = np.transpose(dataset.qy_data)[0::n_cols].flatten()
+                dataset.y_bins = np.unique(flat_qy)
+                flat_qx = dataset.qx_data[0::n_rows].flatten()
+                if flat_qx[0] == flat_qx[1]:
+                    flat_qx = np.transpose(dataset.qx_data)[0::n_rows].flatten()
+                dataset.x_bins = np.unique(flat_qx)
+                print(dataset.x_bins)
+                print(len(dataset.x_bins))
+                print(dataset.y_bins)
+                print(len(dataset.y_bins))
                 dataset.data = dataset.data.flatten()
+                dataset.qx_data = dataset.qx_data.flatten()
+                dataset.qy_data = dataset.qy_data.flatten()
             self.current_dataset = dataset
             self.send_to_output()
@@ -589,6 +604,7 @@
         try:
             iter(iterable)
-            if (not isinstance(iterable, np.ndarray)) or (isinstance(iterable, str)
-                    or isinstance(iterable, unicode)):
+            if (not isinstance(iterable, np.ndarray) and not isinstance(
+                    iterable, list)) or (isinstance(iterable, str) or
+                                         isinstance(iterable, unicode)):
                 raise TypeError
         except TypeError:
