diff --git a/build/lib/iexcode/instruments/current_amplifiers.py b/build/lib/iexcode/instruments/current_amplifiers.py
index 5d51e8ae644433ab84fe1d8854ff304ef5217502..7488c520bc4fee881fb27fa4dbdc20f342a3a116 100644
--- a/build/lib/iexcode/instruments/current_amplifiers.py
+++ b/build/lib/iexcode/instruments/current_amplifiers.py
@@ -350,8 +350,17 @@ class SRS:
         self.offset_unit = None
         self.offset_sign = None
         self.offset_factor = None
+        self.set_all()
         self.get_all(verbose=False)
 
+    def set_all(self):
+        """
+        set all PV to current SP values (what the screen shows in not necessarely what the PV are set to)
+        """
+        pv=self._srs_pv+"init.PROC"
+        caput(pv,1)
+
+
     def get_all(self,verbose):
         """
         reads the current SRS and corresponding scaler values
diff --git a/build/lib/iexcode/instruments/electron_analyzer.py b/build/lib/iexcode/instruments/electron_analyzer.py
index c72f5f77ccee81a0bd9a81c11b71311edbab2117..393f7a817d102b0816a21a289cb25afb0b1e058f 100644
--- a/build/lib/iexcode/instruments/electron_analyzer.py
+++ b/build/lib/iexcode/instruments/electron_analyzer.py
@@ -225,26 +225,22 @@ def _scanEATrigger(EAlist,before_after,**kwargs):
     kwargs.setdefault("detNum",20)
     kwargs.setdefault("prefix","EA")# if not None then over rides the auto
     kwargs.setdefault("debug",False)
-
-    scanPV=iex.BL.ioc+"scan"+str(kwargs["scan_dim"])
-    triggerPV=scanPV+".T"+str(kwargs["detTrig"])+"PV"
     
     if kwargs["debug"]:
-        print("scanPV: "+scanPV)
         print("before_after: "+before_after)
         
     #setting EA._savePlugin FilePath, FileName,FileNumber
     if before_after == "before":
         _scanEAPrefix("mda",**kwargs)
         scantype, HVscanPV, KElist, parms =EA._spectraSetup(EAlist,**kwargs)
-        caput(triggerPV,HVscanPV)
+        iex.BL.mda.trigger_dictionary.update({kwargs['detTrig']:HVscanPV})
         
     if before_after == "after":
         _scanEAPrefix(kwargs["prefix"],**kwargs)
-        caput(triggerPV,"")
+        iex.BL.mda.trigger_dictionary.update({kwargs['detTrig']:""})
         
     if kwargs["debug"]:
-        print(triggerPV,caget(triggerPV, as_string=True))
+        print("trigger_dictionary",iex.BL.mda.trigger_dictionary)
     return
  
 
diff --git a/build/lib/iexcode/instruments/m3r.py b/build/lib/iexcode/instruments/m3r.py
index 402a22067293708d204e406593be6ba7b389a878..04aef80dfdf60c9b02794b78a0cf99afec6f1975 100644
--- a/build/lib/iexcode/instruments/m3r.py
+++ b/build/lib/iexcode/instruments/m3r.py
@@ -97,11 +97,13 @@ def m3r_branch():
         print('M3R is not in a default position')
     return branch
 
-def m3r_switch_branch(branch):
+def m3r_switch_branch(branch,verbose=True):
     """
     switches the mirror to the position defined in m3r_table
     """
     position = m3r_table(branch)
+    if verbose:
+        print("Moving M3R to the "+branch+"branch: "+str(position))
     FMB_mirror_move_all(3,position,verbose=False)
     # Relax bellows by doing large Z translation:
     FMB_mirror_move(3,"TY",5,verbose=False)
diff --git a/build/lib/iexcode/instruments/scanRecord.py b/build/lib/iexcode/instruments/scanRecord.py
index 073218e45d42662ac418eecb6d4ae1491b28e8b0..ef3f17e8c3029a8a2b151d438b0c4dd0d0d932e1 100644
--- a/build/lib/iexcode/instruments/scanRecord.py
+++ b/build/lib/iexcode/instruments/scanRecord.py
@@ -340,7 +340,7 @@ class ScanRecord:
         #clearing
         self.detectors_clear(scan_dim,{})
         self.triggers_clear(scan_dim,{})
-        self.positioners_clear(scan_dim)
+        self.positioners_clear({scan_dim:scan_dim})
 
         #resetting
         if 'detector_dictionary' in kwargs:
@@ -480,6 +480,9 @@ class ScanRecord:
         kwargs.setdefault('positioner_settling_time',default_positioner_settling_time)
         kwargs.setdefault('debug',False)
 
+        if 'trigger_dictionary' in kwargs:
+            self.trigger_dictionary = kwargs['trigger_dictionary']
+
         self.progress(kwargs['scan_dim'])
     
         scan_pv = self.ioc+"scan"+str(kwargs['scan_dim'])
@@ -502,6 +505,8 @@ class ScanRecord:
         
         self.detector_settling_time(**kwargs)
         self.positioner_settling_time(**kwargs)
+        
+        self.triggers_set(kwargs['scan_dim'],self.trigger_dictionary)
 
         #checking that PVs and positioner limits are good
         self.check(kwargs['scan_dim'])
@@ -726,7 +731,7 @@ class ScanRecord:
         for i in range(1,5):
             caput(scan_pv+".P"+str(i)+"SM","LINEAR") 
 
-        self.positioners_clear(self.ioc,kwargs['scan_dim'])
+        self.positioners_clear(**kwargs)
 
     ##############################################################################################################
     #############################         progress, go and abort             ##############################
diff --git a/build/lib/iexcode/instruments/slits.py b/build/lib/iexcode/instruments/slits.py
index 89e6de49a748ea29edbecfc055b9eecc94dd7a44..1b8da8715131f6cc714346eff7d888302865bdaf 100644
--- a/build/lib/iexcode/instruments/slits.py
+++ b/build/lib/iexcode/instruments/slits.py
@@ -44,8 +44,8 @@ def _slits_wide_open_dictionary():
     d = {
         'slit1A' : (4.5,4.5),
         'slit2B' : (6,8),
-        'slit3C' : (300),
-        'slit3D' : (2000),
+        'slit3C' : (300,),
+        'slit3D' : (2000,),
         }
     return d
 
@@ -64,8 +64,8 @@ def slits_pvs(slit_name):
             size_rbv = d[slit_name][0]+'RBV'
             center_val = None 
             center_rbv = None
-            size.append((size_val,size_rbv))
-            center.append((center_val,center_rbv))
+            size.append((size_rbv,size_val))
+            center.append((center_rbv,center_val))
         else:
             for slit_HV in d[slit_name]:
                 size_rbv = slit_HV +'size.VAL'
@@ -132,15 +132,17 @@ def slits_set(slit_name,size,center,verbose=True,wait=True):
     #syncing
     slits_synch(slit_name)
 
-    if inf in size:
-        size = _slits_wide_open_dictionary()[slit_name]
-    
-    size_pvs,center_pvs = slits_pvs(slit_name)
-    
-    for i in range(0,len(size_pvs)):
+    maxsize=_slits_wide_open_dictionary()[slit_name]
+    size=list(size)
+    center=list(center)
+    for i,s in enumerate(size):
+        if size[i] == inf:
+            size[i]=maxsize
         #get pvnames
+        size_pvs,center_pvs = slits_pvs(slit_name)
         size_rbv, size_val, = size_pvs[i]
         center_rbv,center_val = center_pvs[i]
+
         #check if there is a pv
         if center_rbv != None: 
             #check if specified value   
@@ -155,7 +157,7 @@ def slits_set(slit_name,size,center,verbose=True,wait=True):
     if verbose:
         slits_get(slit_name,verbose=True)
 
-    return size,center
+    return tuple(size),tuple(center)
 
 
 def slits_get(slit_name,verbose=True):
@@ -347,8 +349,8 @@ def slit3C_set(size,verbose=True):
     Previously SetSlit3C
     """
     slit_name = 'slit3C'
-    center = None
-    slits_set(slit_name,size,center, verbose=verbose)
+    center = (None,)
+    slits_set(slit_name,(size,),center, verbose=verbose)
 
 def slit3C_get(verbose=True):
     """
@@ -358,7 +360,7 @@ def slit3C_get(verbose=True):
     slit_name = "slit3C"   
     return  slits_get(slit_name,verbose=verbose)
 
-def slit3D_set(V_size,position=None,verbose=True):
+def slit3D_set(V_size,center=None,verbose=True):
     """
     set the exit slit for the D-branch
 
@@ -370,15 +372,15 @@ def slit3D_set(V_size,position=None,verbose=True):
         V_size=2000
 
     size = (V_size)
-    if position == None:
+    if center == None:
         center = slit3D_get()[1]
     else:
-        center = (position)
+        center = (center,)
         
     slits_set(slit_name,size,center,verbose=False)
 
 
-    if position == None:
+    if center == None:
         size,center = slit3D_get()
         print("Slit-3D = "+str(size)+"um")
     else:
@@ -391,8 +393,8 @@ def slit3D_get(verbose=True):
     """
     slit_name = "slit3D"
     (V_size),(V_center) = slits_get(slit_name,verbose)
-    V_size = round(V_size,3)
-    V_center = round(V_center,3)
+    V_size = round(V_size[0],3)
+    V_center = round(V_center[0],3)
 
     return  V_size,V_center
 
diff --git a/iexcode/instruments/electron_analyzer.py b/iexcode/instruments/electron_analyzer.py
index c72f5f77ccee81a0bd9a81c11b71311edbab2117..393f7a817d102b0816a21a289cb25afb0b1e058f 100644
--- a/iexcode/instruments/electron_analyzer.py
+++ b/iexcode/instruments/electron_analyzer.py
@@ -225,26 +225,22 @@ def _scanEATrigger(EAlist,before_after,**kwargs):
     kwargs.setdefault("detNum",20)
     kwargs.setdefault("prefix","EA")# if not None then over rides the auto
     kwargs.setdefault("debug",False)
-
-    scanPV=iex.BL.ioc+"scan"+str(kwargs["scan_dim"])
-    triggerPV=scanPV+".T"+str(kwargs["detTrig"])+"PV"
     
     if kwargs["debug"]:
-        print("scanPV: "+scanPV)
         print("before_after: "+before_after)
         
     #setting EA._savePlugin FilePath, FileName,FileNumber
     if before_after == "before":
         _scanEAPrefix("mda",**kwargs)
         scantype, HVscanPV, KElist, parms =EA._spectraSetup(EAlist,**kwargs)
-        caput(triggerPV,HVscanPV)
+        iex.BL.mda.trigger_dictionary.update({kwargs['detTrig']:HVscanPV})
         
     if before_after == "after":
         _scanEAPrefix(kwargs["prefix"],**kwargs)
-        caput(triggerPV,"")
+        iex.BL.mda.trigger_dictionary.update({kwargs['detTrig']:""})
         
     if kwargs["debug"]:
-        print(triggerPV,caget(triggerPV, as_string=True))
+        print("trigger_dictionary",iex.BL.mda.trigger_dictionary)
     return
  
 
diff --git a/iexcode/instruments/m3r.py b/iexcode/instruments/m3r.py
index 402a22067293708d204e406593be6ba7b389a878..04aef80dfdf60c9b02794b78a0cf99afec6f1975 100644
--- a/iexcode/instruments/m3r.py
+++ b/iexcode/instruments/m3r.py
@@ -97,11 +97,13 @@ def m3r_branch():
         print('M3R is not in a default position')
     return branch
 
-def m3r_switch_branch(branch):
+def m3r_switch_branch(branch,verbose=True):
     """
     switches the mirror to the position defined in m3r_table
     """
     position = m3r_table(branch)
+    if verbose:
+        print("Moving M3R to the "+branch+"branch: "+str(position))
     FMB_mirror_move_all(3,position,verbose=False)
     # Relax bellows by doing large Z translation:
     FMB_mirror_move(3,"TY",5,verbose=False)
diff --git a/iexcode/instruments/scanRecord.py b/iexcode/instruments/scanRecord.py
index 073218e45d42662ac418eecb6d4ae1491b28e8b0..ef3f17e8c3029a8a2b151d438b0c4dd0d0d932e1 100644
--- a/iexcode/instruments/scanRecord.py
+++ b/iexcode/instruments/scanRecord.py
@@ -340,7 +340,7 @@ class ScanRecord:
         #clearing
         self.detectors_clear(scan_dim,{})
         self.triggers_clear(scan_dim,{})
-        self.positioners_clear(scan_dim)
+        self.positioners_clear({scan_dim:scan_dim})
 
         #resetting
         if 'detector_dictionary' in kwargs:
@@ -480,6 +480,9 @@ class ScanRecord:
         kwargs.setdefault('positioner_settling_time',default_positioner_settling_time)
         kwargs.setdefault('debug',False)
 
+        if 'trigger_dictionary' in kwargs:
+            self.trigger_dictionary = kwargs['trigger_dictionary']
+
         self.progress(kwargs['scan_dim'])
     
         scan_pv = self.ioc+"scan"+str(kwargs['scan_dim'])
@@ -502,6 +505,8 @@ class ScanRecord:
         
         self.detector_settling_time(**kwargs)
         self.positioner_settling_time(**kwargs)
+        
+        self.triggers_set(kwargs['scan_dim'],self.trigger_dictionary)
 
         #checking that PVs and positioner limits are good
         self.check(kwargs['scan_dim'])
@@ -726,7 +731,7 @@ class ScanRecord:
         for i in range(1,5):
             caput(scan_pv+".P"+str(i)+"SM","LINEAR") 
 
-        self.positioners_clear(self.ioc,kwargs['scan_dim'])
+        self.positioners_clear(**kwargs)
 
     ##############################################################################################################
     #############################         progress, go and abort             ##############################
diff --git a/iexcode/instruments/slits.py b/iexcode/instruments/slits.py
index 89e6de49a748ea29edbecfc055b9eecc94dd7a44..1b8da8715131f6cc714346eff7d888302865bdaf 100644
--- a/iexcode/instruments/slits.py
+++ b/iexcode/instruments/slits.py
@@ -44,8 +44,8 @@ def _slits_wide_open_dictionary():
     d = {
         'slit1A' : (4.5,4.5),
         'slit2B' : (6,8),
-        'slit3C' : (300),
-        'slit3D' : (2000),
+        'slit3C' : (300,),
+        'slit3D' : (2000,),
         }
     return d
 
@@ -64,8 +64,8 @@ def slits_pvs(slit_name):
             size_rbv = d[slit_name][0]+'RBV'
             center_val = None 
             center_rbv = None
-            size.append((size_val,size_rbv))
-            center.append((center_val,center_rbv))
+            size.append((size_rbv,size_val))
+            center.append((center_rbv,center_val))
         else:
             for slit_HV in d[slit_name]:
                 size_rbv = slit_HV +'size.VAL'
@@ -132,15 +132,17 @@ def slits_set(slit_name,size,center,verbose=True,wait=True):
     #syncing
     slits_synch(slit_name)
 
-    if inf in size:
-        size = _slits_wide_open_dictionary()[slit_name]
-    
-    size_pvs,center_pvs = slits_pvs(slit_name)
-    
-    for i in range(0,len(size_pvs)):
+    maxsize=_slits_wide_open_dictionary()[slit_name]
+    size=list(size)
+    center=list(center)
+    for i,s in enumerate(size):
+        if size[i] == inf:
+            size[i]=maxsize
         #get pvnames
+        size_pvs,center_pvs = slits_pvs(slit_name)
         size_rbv, size_val, = size_pvs[i]
         center_rbv,center_val = center_pvs[i]
+
         #check if there is a pv
         if center_rbv != None: 
             #check if specified value   
@@ -155,7 +157,7 @@ def slits_set(slit_name,size,center,verbose=True,wait=True):
     if verbose:
         slits_get(slit_name,verbose=True)
 
-    return size,center
+    return tuple(size),tuple(center)
 
 
 def slits_get(slit_name,verbose=True):
@@ -347,8 +349,8 @@ def slit3C_set(size,verbose=True):
     Previously SetSlit3C
     """
     slit_name = 'slit3C'
-    center = None
-    slits_set(slit_name,size,center, verbose=verbose)
+    center = (None,)
+    slits_set(slit_name,(size,),center, verbose=verbose)
 
 def slit3C_get(verbose=True):
     """
@@ -358,7 +360,7 @@ def slit3C_get(verbose=True):
     slit_name = "slit3C"   
     return  slits_get(slit_name,verbose=verbose)
 
-def slit3D_set(V_size,position=None,verbose=True):
+def slit3D_set(V_size,center=None,verbose=True):
     """
     set the exit slit for the D-branch
 
@@ -370,15 +372,15 @@ def slit3D_set(V_size,position=None,verbose=True):
         V_size=2000
 
     size = (V_size)
-    if position == None:
+    if center == None:
         center = slit3D_get()[1]
     else:
-        center = (position)
+        center = (center,)
         
     slits_set(slit_name,size,center,verbose=False)
 
 
-    if position == None:
+    if center == None:
         size,center = slit3D_get()
         print("Slit-3D = "+str(size)+"um")
     else:
@@ -391,8 +393,8 @@ def slit3D_get(verbose=True):
     """
     slit_name = "slit3D"
     (V_size),(V_center) = slits_get(slit_name,verbose)
-    V_size = round(V_size,3)
-    V_center = round(V_center,3)
+    V_size = round(V_size[0],3)
+    V_center = round(V_center[0],3)
 
     return  V_size,V_center