Index: src/sas/sascalc/data_util/qsmearing.py
===================================================================
--- src/sas/sascalc/data_util/qsmearing.py	(revision d3911e3cf881d888113c59010d5c63db40c0181b)
+++ src/sas/sascalc/data_util/qsmearing.py	(revision 157b716f93f466df115b83210a75d8ba2aec646a)
@@ -13,7 +13,10 @@
 import logging
 import sys
-
+import numpy as np  # type: ignore
+from numpy import pi, exp # type:ignore
 from sasmodels.resolution import Slit1D, Pinhole1D
+from sasmodels.sesans import SesansTransform
 from sasmodels.resolution2d import Pinhole2D
+from src.sas.sascalc.data_util.nxsunit import Converter
 
 def smear_selection(data, model = None):
@@ -36,4 +39,5 @@
     # Sanity check. If we are not dealing with a SAS Data1D
     # object, just return None
+    # This checks for 2D data (does not throw exception because fail is common)
     if  data.__class__.__name__ not in ['Data1D', 'Theory1D']:
         if data == None:
@@ -41,6 +45,6 @@
         elif data.dqx_data == None or data.dqy_data == None:
             return None
-        return PySmear2D(data, model)
-
+        return Pinhole2D(data)
+    # This checks for 1D data with smearing info in the data itself (again, fail is likely; no exceptions)
     if  not hasattr(data, "dx") and not hasattr(data, "dxl")\
          and not hasattr(data, "dxw"):
@@ -48,4 +52,26 @@
 
     # Look for resolution smearing data
+    # This is the code that checks for SESANS data; it looks for the file loader
+    # TODO: change other sanity checks to check for file loader instead of data structure?
+    _found_sesans = False
+    #if data.dx is not None and data.meta_data['loader']=='SESANS':
+    if data.dx is not None and data.isSesans:
+        #if data.dx[0] > 0.0:
+        if numpy.size(data.dx[data.dx <= 0]) == 0:
+            _found_sesans = True
+        # if data.dx[0] <= 0.0:
+        if numpy.size(data.dx[data.dx <= 0]) > 0:
+            raise ValueError('one or more of your dx values are negative, please check the data file!')
+
+    if _found_sesans == True:
+        #Pre-compute the Hankel matrix (H)
+        qmax, qunits = data.sample.zacceptance
+        SElength = Converter(data._xunit)(data.x, "A")
+        zaccept = Converter(qunits)(qmax, "1/A"),
+        Rmax = 10000000
+        hankel = SesansTransform(data.x, SElength, zaccept, Rmax)
+        # Then return the actual transform, as if it were a smearing function
+        return PySmear(hankel, model, offset=0)
+
     _found_resolution = False
     if data.dx is not None and len(data.dx) == len(data.x):
@@ -89,8 +115,10 @@
     Wrapper for pure python sasmodels resolution functions.
     """
-    def __init__(self, resolution, model):
+    def __init__(self, resolution, model, offset=None):
         self.model = model
         self.resolution = resolution
-        self.offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0])
+        if offset is None:
+            offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0])
+        self.offset = offset
 
     def apply(self, iq_in, first_bin=0, last_bin=None):
Index: src/sas/sascalc/dataloader/data_info.py
===================================================================
--- src/sas/sascalc/dataloader/data_info.py	(revision 345e7e4a8c6f5977c8c07032553b5ab00bdf837d)
+++ src/sas/sascalc/dataloader/data_info.py	(revision ad4632c3bee7cc6b6d8987a3088e925b98cf41ab)
@@ -25,57 +25,4 @@
 import numpy
 import math
-
-class plottable_sesans1D(object):
-    """
-    SESANS is a place holder for 1D SESANS plottables.
-
-    #TODO: This was directly copied from the plottables_1D. Modified Somewhat.
-    #Class has been updated.
-    """
-    # The presence of these should be mutually
-    # exclusive with the presence of Qdev (dx)
-    x = None
-    y = None
-    lam = None
-    dx = None
-    dy = None
-    dlam = None
-    ## Slit smearing length
-    dxl = None
-    ## Slit smearing width
-    dxw = None
-
-    # Units
-    _xaxis = ''
-    _xunit = ''
-    _yaxis = ''
-    _yunit = ''
-
-    def __init__(self, x, y, lam, dx=None, dy=None, dlam=None):
-#        print "SESANS plottable working"
-        self.x = numpy.asarray(x)
-        self.y = numpy.asarray(y)
-        self.lam = numpy.asarray(lam)
-        if dx is not None:
-            self.dx = numpy.asarray(dx)
-        if dy is not None:
-            self.dy = numpy.asarray(dy)
-        if dlam is not None:
-            self.dlam = numpy.asarray(dlam)
-
-    def xaxis(self, label, unit):
-        """
-        set the x axis label and unit
-        """
-        self._xaxis = label
-        self._xunit = unit
-
-    def yaxis(self, label, unit):
-        """
-        set the y axis label and unit
-        """
-        self._yaxis = label
-        self._yunit = unit
-
 
 class plottable_1D(object):
@@ -93,4 +40,7 @@
     ## Slit smearing width
     dxw = None
+    ## SESANS specific params (wavelengths for spin echo length calculation)
+    lam = None
+    dlam = None
 
     # Units
@@ -100,5 +50,5 @@
     _yunit = ''
 
-    def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None):
+    def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None, lam=None, dlam=None):
         self.x = numpy.asarray(x)
         self.y = numpy.asarray(y)
@@ -111,4 +61,8 @@
         if dxw is not None:
             self.dxw = numpy.asarray(dxw)
+        if lam is not None:
+            self.lam = numpy.asarray(lam)
+        if dlam is not None:
+            self.dlam = numpy.asarray(dlam)
 
     def xaxis(self, label, unit):
@@ -398,4 +352,6 @@
     ## Details
     details = None
+    ## SESANS zacceptance
+    zacceptance = None
 
     def __init__(self):
@@ -535,4 +491,7 @@
     ## Loading errors
     errors = None
+    ## SESANS data check
+    isSesans = None
+
 
     def __init__(self):
@@ -567,4 +526,6 @@
         ## Loading errors
         self.errors = []
+        ## SESANS data check
+        self.isSesans = False
 
     def append_empty_process(self):
@@ -586,4 +547,5 @@
         _str += "Title:           %s\n" % self.title
         _str += "Run:             %s\n" % str(self.run)
+        _str += "SESANS:          %s\n" % str(self.isSesans)
         _str += "Instrument:      %s\n" % str(self.instrument)
         _str += "%s\n" % str(self.sample)
@@ -736,14 +698,21 @@
         return self._perform_union(other)
 
-class SESANSData1D(plottable_sesans1D, DataInfo):
-    """
-    SESANS 1D data class
-    """
-    x_unit = 'nm'
-    y_unit = 'pol'
-
-    def __init__(self, x=None, y=None, lam=None, dx=None, dy=None, dlam=None):
+class Data1D(plottable_1D, DataInfo):
+    """
+    1D data class
+    """
+    def __init__(self, x=None, y=None, dx=None, dy=None, lam=None, dlam=None, isSesans=None):
         DataInfo.__init__(self)
-        plottable_sesans1D.__init__(self, x, y, lam, dx, dy, dlam)
+        plottable_1D.__init__(self, x, y, dx, dy,None, None, lam, dlam)
+        self.isSesans = isSesans
+        try:
+            if self.isSesans: # the data is SESANS
+                self.x_unit = 'A'
+                self.y_unit = 'pol'
+            elif not self.isSesans: # the data is SANS
+                self.x_unit = '1/A'
+                self.y_unit = '1/cm'
+        except: # the data is not recognized/supported, and the user is notified
+            raise(TypeError, 'data not recognized, check documentation for supported 1D data formats')
 
     def __str__(self):
@@ -759,60 +728,4 @@
         return _str
 
-    def clone_without_data(self, length=0, clone=None):
-        """
-        Clone the current object, without copying the data (which
-        will be filled out by a subsequent operation).
-        The data arrays will be initialized to zero.
-
-        :param length: length of the data array to be initialized
-        :param clone: if provided, the data will be copied to clone
-        """
-        from copy import deepcopy
-        if clone is None or not issubclass(clone.__class__, Data1D):
-            x = numpy.zeros(length)
-            dx = numpy.zeros(length)
-            y = numpy.zeros(length)
-            dy = numpy.zeros(length)
-            clone = Data1D(x, y, dx=dx, dy=dy)
-
-        clone.title = self.title
-        clone.run = self.run
-        clone.filename = self.filename
-        clone.instrument = self.instrument
-        clone.notes = deepcopy(self.notes)
-        clone.process = deepcopy(self.process)
-        clone.detector = deepcopy(self.detector)
-        clone.sample = deepcopy(self.sample)
-        clone.source = deepcopy(self.source)
-        clone.collimation = deepcopy(self.collimation)
-        clone.trans_spectrum = deepcopy(self.trans_spectrum)
-        clone.meta_data = deepcopy(self.meta_data)
-        clone.errors = deepcopy(self.errors)
-
-        return clone
-
-class Data1D(plottable_1D, DataInfo):
-    """
-    1D data class
-    """
-    x_unit = '1/A'
-    y_unit = '1/cm'
-
-    def __init__(self, x, y, dx=None, dy=None):
-        DataInfo.__init__(self)
-        plottable_1D.__init__(self, x, y, dx, dy)
-
-    def __str__(self):
-        """
-        Nice printout
-        """
-        _str = "%s\n" % DataInfo.__str__(self)
-        _str += "Data:\n"
-        _str += "   Type:         %s\n" % self.__class__.__name__
-        _str += "   X-axis:       %s\t[%s]\n" % (self._xaxis, self._xunit)
-        _str += "   Y-axis:       %s\t[%s]\n" % (self._yaxis, self._yunit)
-        _str += "   Length:       %g\n" % len(self.x)
-        return _str
-
     def is_slit_smeared(self):
         """
@@ -843,5 +756,7 @@
             y = numpy.zeros(length)
             dy = numpy.zeros(length)
-            clone = Data1D(x, y, dx=dx, dy=dy)
+            lam = numpy.zeros(length)
+            dlam = numpy.zeros(length)
+            clone = Data1D(x, y, lam=lam, dx=dx, dy=dy, dlam=dlam)
 
         clone.title = self.title
@@ -1021,10 +936,12 @@
     def __init__(self, data=None, err_data=None, qx_data=None,
                  qy_data=None, q_data=None, mask=None,
-                 dqx_data=None, dqy_data=None):
-        self.y_bins = []
-        self.x_bins = []
+                 dqx_data=None, dqy_data=None, isSesans=None):
         DataInfo.__init__(self)
         plottable_2D.__init__(self, data, err_data, qx_data,
                               qy_data, q_data, mask, dqx_data, dqy_data)
+        self.y_bins = []
+        self.x_bins = []
+        self.isSesans=isSesans
+
         if len(self.detector) > 0:
             raise RuntimeError, "Data2D: Detector bank already filled at init"
@@ -1265,4 +1182,5 @@
     final_dataset.xmin = data.xmin
     final_dataset.ymin = data.ymin
+    final_dataset.isSesans = datainfo.isSesans
     final_dataset.title = datainfo.title
     final_dataset.run = datainfo.run
Index: src/sas/sascalc/dataloader/readers/cansas_constants.py
===================================================================
--- src/sas/sascalc/dataloader/readers/cansas_constants.py	(revision 250fec92ea66b0770da33360a90f022e1d674072)
+++ src/sas/sascalc/dataloader/readers/cansas_constants.py	(revision ad4632c3bee7cc6b6d8987a3088e925b98cf41ab)
@@ -133,4 +133,6 @@
                "variable" : None,
                "children" : {"Idata" : SASDATA_IDATA,
+                             "Sesans": {"storeas": "content"},
+                             "zacceptance": {"storeas": "float"},
                              "<any>" : ANY
                             }
Index: src/sas/sascalc/dataloader/readers/cansas_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision bcabf4e59bfdf2b9bf9651d0b19f9da3055d5773)
+++ src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision bcabf4e59bfdf2b9bf9651d0b19f9da3055d5773)
@@ -261,10 +261,18 @@
                 # I and Q - 1D data
                 elif tagname == 'I' and isinstance(self.current_dataset, plottable_1D):
-                    self.current_dataset.yaxis("Intensity", unit)
+                    unit_list = unit.split(" | ")
+                    if len(unit_list) > 1:
+                        self.current_dataset.yaxis(unit_list[0], unit_list[1])
+                    else:
+                        self.current_dataset.yaxis("Intensity", unit)
                     self.current_dataset.y = np.append(self.current_dataset.y, data_point)
                 elif tagname == 'Idev' and isinstance(self.current_dataset, plottable_1D):
                     self.current_dataset.dy = np.append(self.current_dataset.dy, data_point)
                 elif tagname == 'Q':
-                    self.current_dataset.xaxis("Q", unit)
+                    unit_list = unit.split(" | ")
+                    if len(unit_list) > 1:
+                        self.current_dataset.xaxis(unit_list[0], unit_list[1])
+                    else:
+                        self.current_dataset.xaxis("Q", unit)
                     self.current_dataset.x = np.append(self.current_dataset.x, data_point)
                 elif tagname == 'Qdev':
@@ -278,4 +286,8 @@
                 elif tagname == 'Shadowfactor':
                     pass
+                elif tagname == 'Sesans':
+                    self.current_datainfo.isSesans = bool(data_point)
+                elif tagname == 'zacceptance':
+                    self.current_datainfo.sample.zacceptance = (data_point, unit)
 
                 # I and Qx, Qy - 2D data
@@ -1020,20 +1032,27 @@
             node.append(point)
             self.write_node(point, "Q", datainfo.x[i],
-                            {'unit': datainfo.x_unit})
+                            {'unit': datainfo._xaxis + " | " + datainfo._xunit})
             if len(datainfo.y) >= i:
                 self.write_node(point, "I", datainfo.y[i],
-                                {'unit': datainfo.y_unit})
+                                {'unit': datainfo._yaxis + " | " + datainfo._yunit})
             if datainfo.dy is not None and len(datainfo.dy) > i:
                 self.write_node(point, "Idev", datainfo.dy[i],
-                                {'unit': datainfo.y_unit})
+                                {'unit': datainfo._yaxis + " | " + datainfo._yunit})
             if datainfo.dx is not None and len(datainfo.dx) > i:
                 self.write_node(point, "Qdev", datainfo.dx[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xaxis + " | " + datainfo._xunit})
             if datainfo.dxw is not None and len(datainfo.dxw) > i:
                 self.write_node(point, "dQw", datainfo.dxw[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xaxis + " | " + datainfo._xunit})
             if datainfo.dxl is not None and len(datainfo.dxl) > i:
                 self.write_node(point, "dQl", datainfo.dxl[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xaxis + " | " + datainfo._xunit})
+        if datainfo.isSesans:
+            sesans = self.create_element("Sesans")
+            sesans.text = str(datainfo.isSesans)
+            node.append(sesans)
+            self.write_node(node, "zacceptance", datainfo.sample.zacceptance[0],
+                             {'unit': datainfo.sample.zacceptance[1]})
+
 
     def _write_data_2d(self, datainfo, entry_node):
Index: src/sas/sascalc/dataloader/readers/sesans_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/sesans_reader.py	(revision 345e7e4a8c6f5977c8c07032553b5ab00bdf837d)
+++ src/sas/sascalc/dataloader/readers/sesans_reader.py	(revision b5db35da412b2109056fc5155ed97d80875bb756)
@@ -8,5 +8,5 @@
 import numpy
 import os
-from sas.sascalc.dataloader.data_info import SESANSData1D
+from sas.sascalc.dataloader.data_info import Data1D
 
 # Check whether we have a converter available
@@ -59,14 +59,5 @@
                     raise  RuntimeError, "sesans_reader: cannot open %s" % path
                 buff = input_f.read()
-#                print buff
                 lines = buff.splitlines()
-#                print lines
-                #Jae could not find python universal line spliter:
-                #keep the below for now
-                # some ascii data has \r line separator,
-                # try it when the data is on only one long line
-#                if len(lines) < 2 :
-#                    lines = buff.split('\r')
-                 
                 x  = numpy.zeros(0)
                 y  = numpy.zeros(0)
@@ -83,24 +74,7 @@
                 tdlam = numpy.zeros(0)
                 tdx = numpy.zeros(0)
-#                print "all good"
-                output = SESANSData1D(x=x, y=y, lam=lam, dy=dy, dx=dx, dlam=dlam)
-#                print output                
+                output = Data1D(x=x, y=y, lam=lam, dy=dy, dx=dx, dlam=dlam, isSesans=True)
                 self.filename = output.filename = basename
 
-#                #Initialize counters for data lines and header lines.
-#                is_data = False  # Has more than 5 lines
-#                # More than "5" lines of data is considered as actual
-#                # data unless that is the only data
-#                mum_data_lines = 5
-#                # To count # of current data candidate lines
-#                i = -1
-#                # To count total # of previous data candidate lines
-#                i1 = -1
-#                # To count # of header lines
-#                j = -1
-#                # Helps to count # of header lines
-#                j1 = -1
-#                #minimum required number of columns of data; ( <= 4).
-#                lentoks = 2
                 paramnames=[]
                 paramvals=[]
@@ -111,6 +85,5 @@
                 Pvals=[]
                 dPvals=[]
-#                print x
-#                print zvals
+
                 for line in lines:
                     # Initial try for CSV (split on ,)
@@ -122,9 +95,9 @@
                     if len(toks)>5:
                         zvals.append(toks[0])
-                        dzvals.append(toks[1])
-                        lamvals.append(toks[2])
-                        dlamvals.append(toks[3])
-                        Pvals.append(toks[4])
-                        dPvals.append(toks[5])
+                        dzvals.append(toks[3])
+                        lamvals.append(toks[4])
+                        dlamvals.append(toks[5])
+                        Pvals.append(toks[1])
+                        dPvals.append(toks[2])
                     else:
                         continue
@@ -140,6 +113,8 @@
                 default_z_unit = "A"
                 data_conv_P = None
-                default_p_unit = " "
+                default_p_unit = " " # Adjust unit for axis (L^-3)
                 lam_unit = lam_header[1].replace("[","").replace("]","")
+                if lam_unit == 'AA':
+                    lam_unit = 'A'
                 varheader=[zvals[0],dzvals[0],lamvals[0],dlamvals[0],Pvals[0],dPvals[0]]
                 valrange=range(1, len(zvals))
@@ -161,4 +136,5 @@
                 output.x, output.x_unit = self._unit_conversion(x, lam_unit, default_z_unit)
                 output.y = y
+                output.y_unit = '\AA^{-2} cm^{-1}'  # output y_unit added
                 output.dx, output.dx_unit = self._unit_conversion(dx, lam_unit, default_z_unit)
                 output.dy = dy
@@ -166,17 +142,17 @@
                 output.dlam, output.dlam_unit = self._unit_conversion(dlam, lam_unit, default_z_unit)
 
-                output.xaxis("\rm{z}", output.x_unit)
-                output.yaxis("\\rm{P/P0}", output.y_unit)
+                output.xaxis("\\rm{z}", output.x_unit)
+                output.yaxis("\\rm{ln(P)/(t \lambda^2)}", output.y_unit)  # Adjust label to ln P/(lam^2 t), remove lam column refs
                 # Store loading process information
                 output.meta_data['loader'] = self.type_name
-                output.sample.thickness = float(paramvals[6])
+                #output.sample.thickness = float(paramvals[6])
                 output.sample.name = paramvals[1]
                 output.sample.ID = paramvals[0]
                 zaccept_unit_split = paramnames[7].split("[")
                 zaccept_unit = zaccept_unit_split[1].replace("]","")
-                if zaccept_unit.strip() == '\AA^-1':
+                if zaccept_unit.strip() == '\AA^-1' or zaccept_unit.strip() == '\A^-1':
                     zaccept_unit = "1/A"
                 output.sample.zacceptance=(float(paramvals[7]),zaccept_unit)
-                output.vars=varheader
+                output.vars = varheader
 
                 if len(output.x) < 1:
Index: src/sas/sascalc/fit/AbstractFitEngine.py
===================================================================
--- src/sas/sascalc/fit/AbstractFitEngine.py	(revision d3911e3cf881d888113c59010d5c63db40c0181b)
+++ src/sas/sascalc/fit/AbstractFitEngine.py	(revision a9f579c8400c480f42c42445e1ff4dab09a6baa4)
@@ -131,5 +131,5 @@
         a way to get residuals from data.
     """
-    def __init__(self, x, y, dx=None, dy=None, smearer=None, data=None):
+    def __init__(self, x, y, dx=None, dy=None, smearer=None, data=None, lam=None, dlam=None):
         """
             :param smearer: is an object of class QSmearer or SlitSmearer
@@ -152,5 +152,5 @@
                 
         """
-        Data1D.__init__(self, x=x, y=y, dx=dx, dy=dy)
+        Data1D.__init__(self, x=x, y=y, dx=dx, dy=dy, lam=lam, dlam=dlam)
         self.num_points = len(x)
         self.sas_data = data
Index: src/sas/sasgui/guiframe/dataFitting.py
===================================================================
--- src/sas/sasgui/guiframe/dataFitting.py	(revision 345e7e4a8c6f5977c8c07032553b5ab00bdf837d)
+++ src/sas/sasgui/guiframe/dataFitting.py	(revision 68adf86632754e28ed4e1600ebe337656f349a2b)
@@ -17,5 +17,6 @@
     """
     """
-    def __init__(self, x=None, y=None, dx=None, dy=None):
+
+    def __init__(self, x=None, y=None, dx=None, dy=None, lam=None, dlam=None, isSesans=False):
         """
         """
@@ -24,6 +25,8 @@
         if y is None:
             y = []
-        PlotData1D.__init__(self, x, y, dx, dy)
-        LoadData1D.__init__(self, x, y, dx, dy)
+        self.isSesans = isSesans
+        PlotData1D.__init__(self, x, y, dx, dy, lam, dlam)
+        LoadData1D.__init__(self, x, y, dx, dy, lam, dlam, isSesans)
+
         self.id = None
         self.list_group_id = []
@@ -32,5 +35,9 @@
         self.path = None
         self.xtransform = None
+        if self.isSesans:
+            self.xtransform = "x"
         self.ytransform = None
+        if self.isSesans:
+            self.ytransform = "y"
         self.title = ""
         self.scale = None
@@ -68,5 +75,5 @@
         # First, check the data compatibility
         dy, dy_other = self._validity_check(other)
-        result = Data1D(x=[], y=[], dx=None, dy=None)
+        result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=None)
         result.clone_without_data(length=len(self.x), clone=self)
         result.copy_from_datainfo(data1d=self)
@@ -115,7 +122,11 @@
         # First, check the data compatibility
         self._validity_check_union(other)
-        result = Data1D(x=[], y=[], dx=None, dy=None)
+        result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=None)
         tot_length = len(self.x) + len(other.x)
         result = self.clone_without_data(length=tot_length, clone=result)
+        if self.dlam == None or other.dlam is None:
+            result.dlam = None
+        else:
+            result.dlam = numpy.zeros(tot_length)
         if self.dy == None or other.dy is None:
             result.dy = None
@@ -141,4 +152,9 @@
         result.y = numpy.append(self.y, other.y)
         result.y = result.y[ind]
+        result.lam = numpy.append(self.lam, other.lam)
+        result.lam = result.lam[ind]
+        if result.dlam != None:
+            result.dlam = numpy.append(self.dlam, other.dlam)
+            result.dlam = result.dlam[ind]
         if result.dy != None:
             result.dy = numpy.append(self.dy, other.dy)
@@ -260,7 +276,11 @@
         # First, check the data compatibility
         self._validity_check_union(other)
-        result = Data1D(x=[], y=[], dx=None, dy=None)
+        result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=[])
         tot_length = len(self.x)+len(other.x)
         result.clone_without_data(length=tot_length, clone=self)
+        if self.dlam == None or other.dlam is None:
+            result.dlam = None
+        else:
+            result.dlam = numpy.zeros(tot_length)
         if self.dy == None or other.dy is None:
             result.dy = None
@@ -285,4 +305,6 @@
         result.y = numpy.append(self.y, other.y)
         result.y = result.y[ind]
+        result.lam = numpy.append(self.lam, other.lam)
+        result.lam = result.lam[ind]
         if result.dy != None:
             result.dy = numpy.append(self.dy, other.dy)
Index: src/sas/sasgui/guiframe/data_manager.py
===================================================================
--- src/sas/sasgui/guiframe/data_manager.py	(revision 345e7e4a8c6f5977c8c07032553b5ab00bdf837d)
+++ src/sas/sasgui/guiframe/data_manager.py	(revision 20522e12c1673e2938cba2e95b8857993da746ce)
@@ -61,8 +61,14 @@
         
         if issubclass(Data2D, data.__class__):
-            new_plot = Data2D(image=None, err_image=None) 
-        else: 
-            new_plot = Data1D(x=[], y=[], dx=None, dy=None)
-           
+            new_plot = Data2D(image=None, err_image=None, isSesans=data.isSesans) # For now, isSesans for 2D data is always false
+        else:
+            new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None, isSesans=data.isSesans)
+
+
+        #elif data.meta_data['loader'] == 'SESANS':
+        #    new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None, isSesans=True)
+        #else:
+        #    new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None) #SESANS check???
+
         new_plot.copy_from_datainfo(data)
         data.clone_without_data(clone=new_plot)
Index: src/sas/sasgui/plottools/plottables.py
===================================================================
--- src/sas/sasgui/plottools/plottables.py	(revision 345e7e4a8c6f5977c8c07032553b5ab00bdf837d)
+++ src/sas/sasgui/plottools/plottables.py	(revision a9f579c8400c480f42c42445e1ff4dab09a6baa4)
@@ -1023,5 +1023,5 @@
     """
 
-    def __init__(self, x, y, dx=None, dy=None):
+    def __init__(self, x, y, dx=None, dy=None, lam=None, dlam=None):
         """
         Draw points specified by x[i],y[i] in the current color/symbol.
@@ -1037,6 +1037,8 @@
         self.x = x
         self.y = y
+        self.lam = lam
         self.dx = dx
         self.dy = dy
+        self.dlam = dlam
         self.source = None
         self.detector = None
