Index: src/sas/dataloader/readers/cansas_reader.py
===================================================================
--- src/sas/dataloader/readers/cansas_reader.py	(revision 9dedf40893bcacf00e8b151f964ed085a47d2bba)
+++ src/sas/dataloader/readers/cansas_reader.py	(revision d26dea03dc6672ee5b15cc43e77a7a352c6cbd25)
@@ -105,6 +105,6 @@
     base_ns = "{cansas1d/1.0}"
 
-    logging = []
-    errors = []
+    logging = None
+    errors = None
 
     type_name = "canSAS"
@@ -120,5 +120,6 @@
     def __init__(self):
         ## List of errors
-        self.errors = []
+        self.errors = set()
+        self.logging = []
         self.encoding = None
 
@@ -252,5 +253,5 @@
         for error in self.errors:
             data1d.errors.append(error)
-        del self.errors[:]
+        self.errors.clear()
         numpy.trim_zeros(data1d.x)
         numpy.trim_zeros(data1d.y)
@@ -301,4 +302,5 @@
         attr = node.attrib
         value_unit = ''
+        err_msg = None
         if 'unit' in attr and new_current_level.get('unit') is not None:
             try:
@@ -322,5 +324,4 @@
                         value_unit = local_unit
                         err_msg = "Unit converter is not available.\n"
-                        self.errors.append(err_msg)
                 else:
                     value_unit = local_unit
@@ -333,5 +334,4 @@
                             ".format(data1d.{0})"
                 exec intermediate.format(unitname, "{0}", "{1}")
-                self.errors.append(err_msg)
                 value_unit = local_unit
             except:
@@ -340,8 +340,9 @@
                 err_msg += "\"{0}\" unit [{1}]"
                 err_msg = err_msg.format(tagname, local_unit)
-                self.errors.append(err_msg)
                 value_unit = local_unit
         elif 'unit' in attr:
             value_unit = attr['unit']
+        if err_msg:
+            self.errors.add(err_msg)
         node_value = "float({0})".format(node_value)
         return node_value, value_unit
@@ -355,5 +356,5 @@
         """
         if data1d == None:
-            self.errors = []
+            self.errors = set()
             x_vals = numpy.empty(0)
             y_vals = numpy.empty(0)
@@ -697,20 +698,20 @@
             node.append(point)
             self.write_node(point, "Q", datainfo.x[i],
-                            {'unit': datainfo.x_unit})
+                            {'unit': datainfo._xunit})
             if len(datainfo.y) >= i:
                 self.write_node(point, "I", datainfo.y[i],
-                                {'unit': datainfo.y_unit})
+                                {'unit': datainfo._yunit})
             if datainfo.dy != None and len(datainfo.dy) > i:
                 self.write_node(point, "Idev", datainfo.dy[i],
-                                {'unit': datainfo.y_unit})
+                                {'unit': datainfo._yunit})
             if datainfo.dx != None and len(datainfo.dx) > i:
                 self.write_node(point, "Qdev", datainfo.dx[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xunit})
             if datainfo.dxw != None and len(datainfo.dxw) > i:
                 self.write_node(point, "dQw", datainfo.dxw[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xunit})
             if datainfo.dxl != None and len(datainfo.dxl) > i:
                 self.write_node(point, "dQl", datainfo.dxl[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xunit})
 
     def _write_trans_spectrum(self, datainfo, entry_node):
@@ -1169,5 +1170,5 @@
                             err_mess += " %s unit [%s]; expecting [%s]\n  %s" \
                                 % (variable, units, local_unit, exc_value)
-                            self.errors.append(err_mess)
+                            self.errors.add(err_mess)
                             if optional:
                                 logging.info(err_mess)
@@ -1178,5 +1179,5 @@
                         % (variable, units)
                         err_mess += " expecting [%s]" % local_unit
-                        self.errors.append(err_mess)
+                        self.errors.add(err_mess)
                         if optional:
                             logging.info(err_mess)
