Index: plottools/src/danse/common/plottools/PlotPanel.py
===================================================================
--- plottools/src/danse/common/plottools/PlotPanel.py	(revision f5cce4a5481aaefbd40510288eb4ba0224f9ccc2)
+++ plottools/src/danse/common/plottools/PlotPanel.py	(revision 2acedc8668df29e7004b8d4eceefa1df299df01d)
@@ -971,15 +971,12 @@
             self.line_collections_list = handles2
             self.legend = self.subplot.legend(handles2, labels2,
-                                prop=FontProperties(size=10), numpoints=1,
-                                handletextsep=.05, loc=self.legendLoc)
+                            prop=FontProperties(size=10), numpoints=1,
+                            handletextsep=.05, loc=self.legendLoc)
             if self.legend != None:
                 self.legend.set_picker(self.legend_picker)
                 self.legend.set_axes(self.subplot)
+                self.legend.set_zorder(20)
         
         self.subplot.figure.canvas.draw_idle()
-
-    
-
-    # to do - remove this function when done
 
     def onChangeLegendLoc(self, event):
@@ -990,5 +987,10 @@
         id = event.GetId()
         label = menu.GetLabel(id)
-        
+        self.ChangeLegendLoc(label)
+
+    def ChangeLegendLoc(self, label):
+        """
+        Changes legend loc based on user input
+        """
         self.legendLoc = label
         self.legend_pos_loc = None
@@ -1003,32 +1005,8 @@
                             handletextsep=.05, loc=self.legendLoc)
         if self.legend != None:
-                self.legend.set_picker(self.legend_picker)
-                self.legend.set_axes(self.subplot)
+            self.legend.set_picker(self.legend_picker)
+            self.legend.set_axes(self.subplot)
+            self.legend.set_zorder(20)
         self.subplot.figure.canvas.draw_idle()
-        
-
-    def ChangeLegendLoc(self, label):
-        """
-        Changes legend loc based on user input
-        """
-        
-        self.legendLoc = label
-        self.legend_pos_loc = None
-        # sort them by labels
-        handles, labels = self.subplot.get_legend_handles_labels()
-        hl = sorted(zip(handles, labels),
-                    key=operator.itemgetter(1))
-        handles2, labels2 = zip(*hl)
-        self.line_collections_list = handles2
-        self.legend = self.subplot.legend(handles2, labels2,
-                            prop=FontProperties(size=10), numpoints=1,
-                            handletextsep=.05, loc=self.legendLoc)
-        if self.legend != None:
-                self.legend.set_picker(self.legend_picker)
-                self.legend.set_axes(self.subplot)
-        self.subplot.figure.canvas.draw_idle()
-        
-
-
 
     def remove_legend(self, ax=None):
@@ -1283,4 +1261,5 @@
                     self.legend.set_picker(self.legend_picker)
                     self.legend.set_axes(self.subplot)
+                    self.legend.set_zorder(20)
                 
             except:
@@ -1288,5 +1267,5 @@
                                         numpoints=1, handletextsep=.05,
                                         loc=self.legendLoc)
-                 
+                
     def xaxis(self, label, units, font=None, color='black', t_font=None):
         """xaxis label and units.
@@ -1348,6 +1327,6 @@
 
     def interactive_points(self, x, y, dx=None, dy=None, name='', color=0,
-                           symbol=0, markersize=5, id=None, label=None,
-                           hide_error=False):
+                           symbol=0, markersize=5, zorder=1, id=None, 
+                           label=None, hide_error=False):
         """Draw markers with error bars"""
         self.subplot.set_yscale('linear')
@@ -1356,9 +1335,9 @@
             id = name
         from plottable_interactor import PointInteractor
-        p = PointInteractor(self, self.subplot, zorder=3, id=id)
+        p = PointInteractor(self, self.subplot, zorder=zorder, id=id)
         if p.markersize != None:
             markersize = p.markersize
-        p.points(x, y, dx=dx, dy=dy, color=color, symbol=symbol, markersize=markersize, label=label,
-                 hide_error=hide_error)
+        p.points(x, y, dx=dx, dy=dy, color=color, symbol=symbol, zorder=zorder, 
+                 markersize=markersize, label=label, hide_error=hide_error)
         
         self.subplot.set_yscale(self.yscale, nonposy='clip')
@@ -1366,5 +1345,5 @@
        
     def interactive_curve(self, x, y, dy=None, name='', color=0,
-                          symbol=0, id=None, label=None):
+                          symbol=0, zorder=1, id=None, label=None):
         """Draw markers with error bars"""
         self.subplot.set_yscale('linear')
@@ -1373,6 +1352,7 @@
             id = name
         from plottable_interactor import PointInteractor
-        p = PointInteractor(self, self.subplot, zorder=4, id=id)
-        p.curve(x, y, dy=dy, color=color, symbol=symbol, label=label)
+        p = PointInteractor(self, self.subplot, zorder=zorder, id=id)
+        p.curve(x, y, dy=dy, color=color, symbol=symbol, zorder=zorder,
+                 label=label)
         
         self.subplot.set_yscale(self.yscale, nonposy='clip')
Index: plottools/src/danse/common/plottools/plottable_interactor.py
===================================================================
--- plottools/src/danse/common/plottools/plottable_interactor.py	(revision 6c4130a921ee258460ebe3f22b1b9992a7f39839)
+++ plottools/src/danse/common/plottools/plottable_interactor.py	(revision 2acedc8668df29e7004b8d4eceefa1df299df01d)
@@ -35,6 +35,6 @@
         return self.symbollist[s % len(self.symbollist)]
 
-    def points(self, x, y, dx=None, dy=None, color=0, symbol=0, markersize=5,
-               label=None, hide_error=False):
+    def points(self, x, y, dx=None, dy=None, color=0, symbol=0, zorder=1, 
+               markersize=5, label=None, hide_error=False):
         """
         """
@@ -63,5 +63,5 @@
         if dy != None and type(dy) == type(()):
             dy = nx.vstack((y-dy[0], dy[1]-y)).transpose()
-        zorder = self.zorder
+        
         if dx == None and dy == None:
             #zorder = 1
@@ -79,5 +79,5 @@
                                              markersize=markersize,
                                              linestyle='', label=label,
-                                             zorder=zorder)[0]
+                                             zorder=1)[0]
             else:
                 #zorder = 2
@@ -94,10 +94,11 @@
                                                  xlolims=False, xuplims=False,
                                                  label=label,
-                                                 zorder=zorder)[0]
-            
-        self.connect_markers([self.marker])
-        self.update()
-        
-    def curve(self, x, y, dy=None, color=0, symbol=0, label=None, width=2.0):
+                                                 zorder=1)[0]
+            
+        self.connect_markers([self.marker])
+        self.update()
+        
+    def curve(self, x, y, dy=None, color=0, symbol=0, zorder=10, 
+              label=None, width=2.0):
         """
         """
@@ -107,11 +108,12 @@
         self.marker = self.axes.plot(x, y, color=self.color, lw=width,
                                      marker='', linestyle=self._symbol(symbol),
-                                     label=label, zorder=self.zorder)[0]
-            
-        self.connect_markers([self.marker])
-        self.update()
-
-        
-    def vline(self, x, y, dy=None, color=0, symbol=0, label=None, width=2.0):
+                                     label=label, zorder=zorder)[0]
+            
+        self.connect_markers([self.marker])
+        self.update()
+
+        
+    def vline(self, x, y, dy=None, color=0, symbol=0, zorder=1, 
+              label=None, width=2.0):
         """
         """
@@ -126,9 +128,10 @@
                                       color=self.color, 
                                       linestyle='-', label=label,
-                                      lw=width, zorder=self.zorder)    
-        self.connect_markers([self.marker])
-        self.update()
-
-    def step(self, x, y, dy=None, color=0, symbol=0, label=None, width=2.0):
+                                      lw=width, zorder=zorder)    
+        self.connect_markers([self.marker])
+        self.update()
+
+    def step(self, x, y, dy=None, color=0, symbol=0, zorder=1,
+              label=None, width=2.0):
         """
         """
@@ -142,5 +145,5 @@
                                          marker='',
                                          linestyle='-', label=label,
-                                         lw=width, zorder=self.zorder)[0]
+                                         lw=width, zorder=zorder)[0]
         self.connect_markers([self.marker])
         self.update()
Index: plottools/src/danse/common/plottools/plottables.py
===================================================================
--- plottools/src/danse/common/plottools/plottables.py	(revision 10bfeb307197dbe02c1ab9ca2e868b076c0cd128)
+++ plottools/src/danse/common/plottools/plottables.py	(revision 2acedc8668df29e7004b8d4eceefa1df299df01d)
@@ -1052,4 +1052,5 @@
         self.markersize = 5
         self.id = None
+        self.zorder = 1
         self.hide_error = False
       
@@ -1065,5 +1066,5 @@
             plot.interactive_points(self.view.x, self.view.y,
                                     dx=self.view.dx, dy=self.view.dy,
-              name=self.name, **kw)
+              name=self.name, zorder=self.zorder, **kw)
         else:
             kw['id'] =  self.id
@@ -1073,5 +1074,6 @@
             kw['markersize'] = self.markersize
             plot.points(self.view.x, self.view.y, dx=self.view.dx,
-                dy=self.view.dy, marker=self.symbollist[self.symbol], **kw)
+                dy=self.view.dy, zorder=self.zorder, 
+                marker=self.symbollist[self.symbol], **kw)
        
     def changed(self):
@@ -1118,4 +1120,5 @@
         self.symbol = 0
         self.id = None
+        self.zorder = 10
         
     def render(self, plot, **kw):
@@ -1126,8 +1129,9 @@
             plot.interactive_curve(self.view.x, self.view.y,
                                    dy=self.view.dy,
-                                   name=self.name, **kw)
+                                   name=self.name, zorder=self.zorder, **kw)
         else:
             kw['id'] = self.id
-            plot.curve(self.view.x, self.view.y, dy=self.view.dy, **kw)
+            plot.curve(self.view.x, self.view.y, dy=self.view.dy, 
+                       zorder=self.zorder, **kw)
             
     def changed(self):
