diff --git a/build/lib/iexcode/instruments/ARPES.py b/build/lib/iexcode/instruments/ARPES.py
index 68b161c9059860f03ccad6d511fbe6c993483c9c..ccfe14e4e9313ecf593e2472ff4605bfb1ac1f7c 100644
--- a/build/lib/iexcode/instruments/ARPES.py
+++ b/build/lib/iexcode/instruments/ARPES.py
@@ -30,6 +30,7 @@ global BL
 global tey,ca15
 global ARPES_Motors
 
+
 #############################################################################
 def ARPES_init(set_folders=True,reset=True,**kwargs):
     """
@@ -46,8 +47,9 @@ def ARPES_init(set_folders=True,reset=True,**kwargs):
         detector_dictionary = staff_detector_dictionary()
     else:
         detector_dictionary = ARPES_detector_dictionary()
-    mda_scanRecord = ScanRecord(kwargs['scan_ioc'],detector_dictionary,
-    ARPES_trigger_dictionary(),ARPES_scan_before_sequence(),ARPES_scan_after_sequence())
+    mda_scanRecord = ScanRecord(kwargs['scan_ioc'])
+    
+    mda_scanRecord.reset_all(detector_dictionary,ARPES_trigger_dictionary(kwargs['scan_ioc']),ARPES_scan_before_sequence(kwargs['scan_ioc']),ARPES_scan_after_sequence(kwargs['scan_ioc']))
 
     #endstation
     BL=Endstation('ARPES',kwargs['scan_ioc'],kwargs['xrays'],kwargs['BL_mode'],mda_scanRecord,
@@ -370,10 +372,10 @@ def ARPES_scan_after_sequence(scan_dim, **kwargs):
 def ARPES_detector_triggers_sequence(**kwargs):    # do we need to add 29idb:ca5 ???
     """
     """
-    kwargs.setdefault(seq_num,8)
+    kwargs.setdefault('seq_num',8)
     seq_num=kwargs['seq_num']
 
-    detector_triggers_pv,detector_triggers_proc = userStringSeq_pvs(BL.ioc, seq_num)
+    detector_triggers_pv,detector_triggers_proc = userStringSeq_pvs(kwargs['scan_ioc'], seq_num)
        
     #clear the userStringSeq
     userStringSeq_clear(BL.ioc,seq_num=kwargs['seq_num'])
@@ -388,12 +390,12 @@ def ARPES_detector_triggers_sequence(**kwargs):    # do we need to add 29idb:ca5
 
     return detector_triggers_proc
 
-def ARPES_trigger_dictionary():
+def ARPES_trigger_dictionary(**kwargs):
     """
     need to do something
     """
     trigger_dictionary = {
-        1:ARPES_detector_triggers_sequence(),
+        1:ARPES_detector_triggers_sequence(**kwargs),
     }
     return trigger_dictionary
 
diff --git a/build/lib/iexcode/instruments/scanRecord.py b/build/lib/iexcode/instruments/scanRecord.py
index 2e01a97a40feb0cabc45a2affce438fa7ef800d9..d9e015ba41aa72f619f837c6f7831af9d3e3c564 100644
--- a/build/lib/iexcode/instruments/scanRecord.py
+++ b/build/lib/iexcode/instruments/scanRecord.py
@@ -14,14 +14,17 @@ def saveData_get_all(ioc_pv):
     returns saveData info: 
     """
     saveData_info = {
-        'fileSystem':caget(ioc_pv+":saveData_fileSystem",as_string=True),
-        'subDir':caget(ioc_pv+":saveData_subDir",as_string=True),
-        'scanNumber':caget(ioc_pv+":saveData_scanNumber"),
-        'baseName':caget(ioc_pv+":saveData_baseName",as_string=True),
+        'fileSystem':caget(ioc_pv+"saveData_fileSystem",as_string=True),
+        'subDir':caget(ioc_pv+"saveData_subDir",as_string=True),
+        'scanNumber':caget(ioc_pv+"saveData_scanNumber"),
+        'baseName':caget(ioc_pv+"saveData_baseName",as_string=True),
     }
 
     filepath = join(saveData_info['fileSystem'],saveData_info['subDir'])
     filepath=filepath.replace('//','/') 
+    saveData_info['filepath'] = filepath
+
+    return saveData_info
     
 
 default_positioner_settling_time = 0.05
@@ -32,7 +35,7 @@ class ScanRecord:
     used for short hand scanning and to get info related to a scanRecord
     """
 
-    def __init__(self,scan_ioc,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv,**kwargs):
+    def __init__(self,scan_ioc,**kwargs):
         """
         scan_ioc: full pv for the ioc, "29idARPES:", "29idc:"
         detector_dictionary: dictionary corresponding to detector num and pv to proc => {det_num:'det_pv'}
@@ -41,16 +44,32 @@ class ScanRecord:
         after_scan_pv: pv to be proc'ed be for the start of a scan
 
         **kwargs
-            reset: resets the scanRecord (True / False) => default = True
+            detector_dictionary
+            trigger_dictionary
+            before_scan_pv
+            after_scan_pv
 
         """
-        kwargs.setdefault('reset',True)
+
+
         self.ioc = scan_ioc
 
-        if kwargs['reset']:
-            self.reset_all(detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv)
+        if 'detector_dictionary' in kwargs:
+            self.detector_dictionary = kwargs['detector_dictionary']
+        if 'trigger_dictionary' in kwargs:
+            self.trigger_dictionary = kwargs['trigger_dictionary']
+        if 'before_scan_pv' in kwargs:
+            self.before_scan_pv = kwargs['before_scan_pv']
+        if 'after_scan_pv' in kwargs:
+            self.after_scan_pv = kwargs['after_scan_pv']
+
+
+        else:
+            pass
 
-        pass
+
+        
+        
 
 ##############################################################################################################
 ################################            MDA (ScanRecord) files and folders               ##############################
@@ -72,7 +91,7 @@ class ScanRecord:
         previously: MDA_GetLastFileNum
         """
 
-        fileNum = self.fileNum(self)
+        fileNum = self.fileNum()
         return fileNum - 1
 
 
@@ -109,7 +128,7 @@ class ScanRecord:
 
         previously: MDA_CurrentUser
         """
-        subdir=caget(self.ioc+":saveData_subDir",as_string=True)
+        subdir=saveData_get_all(self.ioc)['subDir']  
         m=subdir.find('/mda')
         if m == 0 : 
             current_user='Staff'
@@ -127,29 +146,34 @@ class ScanRecord:
 
 
     ### before and after scans
-    def _before_after_scan(self,**kwargs):
+    def _before_after_scan_set(self,**kwargs):
         """
-        Fills in the before and after user sequences into the scan record
+        Clears the before_scan and after_scan in all dims
+        Fills in the before_scan and after_after pv for kwargs['scan_dim'] only
         **kwargs
-            before_scan_pv => '' 
-            after_scan_pv => self.default_after_scan_seq() 
+            scan_dim = 1 (default)
+            before_scan_pv
+            after_scan_pv
         """
         kwargs.setdefault('scan_dim',1)
-        kwargs.setdefault('before_scan_pv','')
-        kwargs.setdefault('after_scan_pv',self._default_after_scan_seq())
-        
-        scan_pv = self.ioc+"scan"+str(kwargs['scan_dim'])
+
+        if 'before_scan_pv' in kwargs:
+            self.before_scan_pv = kwargs['before_scan_pv']
+        if 'after_scan_pv' in kwargs:
+            self.before_scan_pv = kwargs['after_scan_pv']
 
         #Clearing all Before/Afters in all dims
         for dim in [1,2,3,4]:
             caput(self.ioc+"scan"+str(dim)+".BSPV","")
             caput(self.ioc+"scan"+str(dim)+".ASPV","")
 
-        caput(scan_pv+".BSPV",kwargs['before_scan_pv'])
+        scan_pv = self.ioc+"scan"+str(kwargs['scan_dim'])
+
+        caput(scan_pv+".BSPV",self.before_scan_pv)
         caput(scan_pv+".BSCD",1)
         caput(scan_pv+".BSWAIT","Wait")
 
-        caput(scan_pv+".ASPV",kwargs['after_scan_pv'])
+        caput(scan_pv+".ASPV",self.after_scan_pv)
         caput(scan_pv+".ASCD",1)
         caput(scan_pv+".ASWAIT","Wait")
 
@@ -165,10 +189,9 @@ class ScanRecord:
             positioner_settling_time
             detector_settling_time
 
-
         Previously: AfterScan_StrSeq
         """
-        kwargs.setdefault(seq_num,10)
+        kwargs.setdefault('seq_num',10)
         kwargs.setdefault('positioner_settling_time',default_positioner_settling_time)
         kwargs.setdefault('detector_settling_time',default_detector_settling_time)
         
@@ -176,7 +199,8 @@ class ScanRecord:
         scan_pv = self.ioc+"scan"+str(scan_dim)
 
         seq_num=kwargs['seq_num']
-        after_scan_pv = userStringSeq_pvs(self.ioc, seq_num)
+        after_scan_pv = userStringSeq_pvs(self.ioc, seq_num)[0]
+        self.after_scan_pv = after_scan_pv
 
         #clear and write the after scan user sequence
         userStringSeq_clear(self.ioc,seq_num)
@@ -184,11 +208,11 @@ class ScanRecord:
 
         #link 1 - clears positioners
         caput(after_scan_pv+".LNK1",scan_pv+'.P1AR'+" PP NMS")
-        caput(after_scan_pv+".DO1","Clear pos&rdbk PV's, etc")
+        caput(after_scan_pv+".STR1","Clear pos&rdbk PV's, etc")
 
         #link 2 - sets positioner mode to to abosolute 
         caput(after_scan_pv+".LNK2",scan_pv+'.CMND'+" PP NMS")
-        caput(after_scan_pv+".DO2","ABSOLUTE")
+        caput(after_scan_pv+".STR2","ABSOLUTE")
 
         #link 3 - sets positioner delay time to default 
         settling_time = kwargs['positioner_settling_time']
@@ -200,15 +224,18 @@ class ScanRecord:
         caput(after_scan_pv+".LNK4",scan_pv+'.DDLY'+" PP NMS")
         caput(after_scan_pv+".DO4",settling_time)
 
-        return after_scan_pv
+        return after_scan_pv+"+PROC"
     
     ### Resetting:
-    def reset_scan_dim(self,scan_dim,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv):
+    def reset_scan_dim(self,scan_dim,**kwargs):
         """
         Resets all the scanRecords (scanDIM=1,2,3,4) for a given IOC 
             uses Reset_Scan()
         **kwargs
-            scaler='y', only for Kappa ioc
+            detector_dictionary
+            trigger_dictionary
+            before_scan_pv
+            after_scan_pv
 
         Previously: Reset_ScanAll
         """
@@ -216,14 +243,18 @@ class ScanRecord:
         self.triggers_clear(scan_dim)
         self.positioners_clear(scan_dim)
 
-        self.detectors_set(scan_dim,detector_dictionary)
-        self.triggers_set(scan_dim,trigger_dictionary)
-        self.before_after_sequences_set(scan_dim,before_scan_pv,after_scan_pv)
+        if 'detector_dictionary' in kwargs:
+            self.detectors_set(scan_dim,kwargs['detector_dictionary'])
+        
+        if 'trigger_dictionary' in kwargs:
+            self.triggers_set(scan_dim,kwargs['trigger_dictionary'])
+
+        self._before_after_scan_set(self,kwargs.update({'scan_dim':scan_dim}))
 
         self.detector_settling_time(scan_dim)
         self.positioner_settling_time(scan_dim)
 
-    def reset_all(self,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv):
+    def reset_all(self):
         """
         Resets all the scanRecords (scanDIM=1,2,3,4) for a given IOC 
             uses Reset_Scan()
@@ -235,7 +266,14 @@ class ScanRecord:
 
         for scan_dim in range(4,1):
             self.reset_scan_dim(scan_dim,{},{},'','')
-        self.reset_scan_dim(1,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv)
+
+        kwargs = {
+            'detector_dictionary':self.detector_dictionary,
+            'trigger_dictionary':self.trigger_dictionary,
+            'before_scan_pv':self.before_scan_pv,
+            'after_scan_pv':self.after_scan_pv
+        }
+        self.reset_scan_dim(1,**kwargs)
 
     ### default setting    
     def settings_defaults(self,scan_dim,verbose=True,**kwargs):
@@ -374,9 +412,11 @@ class ScanRecord:
         detector_dictionary = {detNum:pv}
         """
         scan_pv = self.ioc+"scan"+str(scan_dim)
-        for det_num in detector_dictionary.keys():
-            det_pv=caget(scan_pv+".D"+det_num+"PV")
-            caput(det_pv,detector_dictionary[det_num])
+        
+        if detector_dictionary != None:
+            for det_num in detector_dictionary.keys():
+                det_pv=caget(scan_pv+".D"+det_num+"PV")
+                caput(det_pv,detector_dictionary[det_num])
 
     def detector_settling_time(self,**kwargs):
         """
@@ -399,9 +439,10 @@ class ScanRecord:
         Previously: Clear_Scan_Triggers
         """
         scan_pv = self.ioc+"scan"+str(scan_dim)
-        if len(trigger_dictionary.keys())>0:
-            for tigger_num in  trigger_dictionary.keys():
-                    caput(scan_pv+".T"+str(tigger_num)+"PV",trigger_dictionary[tigger_num])  
+        if trigger_dictionary != None:
+            if len(trigger_dictionary.keys())>0:
+                for tigger_num in  trigger_dictionary.keys():
+                        caput(scan_pv+".T"+str(tigger_num)+"PV",trigger_dictionary[tigger_num])  
 
     def triggers_clear(self,scan_dim,trigger_dictionary,verbose=True):
         """
diff --git a/iexcode/instruments/ARPES.py b/iexcode/instruments/ARPES.py
index 68b161c9059860f03ccad6d511fbe6c993483c9c..ccfe14e4e9313ecf593e2472ff4605bfb1ac1f7c 100644
--- a/iexcode/instruments/ARPES.py
+++ b/iexcode/instruments/ARPES.py
@@ -30,6 +30,7 @@ global BL
 global tey,ca15
 global ARPES_Motors
 
+
 #############################################################################
 def ARPES_init(set_folders=True,reset=True,**kwargs):
     """
@@ -46,8 +47,9 @@ def ARPES_init(set_folders=True,reset=True,**kwargs):
         detector_dictionary = staff_detector_dictionary()
     else:
         detector_dictionary = ARPES_detector_dictionary()
-    mda_scanRecord = ScanRecord(kwargs['scan_ioc'],detector_dictionary,
-    ARPES_trigger_dictionary(),ARPES_scan_before_sequence(),ARPES_scan_after_sequence())
+    mda_scanRecord = ScanRecord(kwargs['scan_ioc'])
+    
+    mda_scanRecord.reset_all(detector_dictionary,ARPES_trigger_dictionary(kwargs['scan_ioc']),ARPES_scan_before_sequence(kwargs['scan_ioc']),ARPES_scan_after_sequence(kwargs['scan_ioc']))
 
     #endstation
     BL=Endstation('ARPES',kwargs['scan_ioc'],kwargs['xrays'],kwargs['BL_mode'],mda_scanRecord,
@@ -370,10 +372,10 @@ def ARPES_scan_after_sequence(scan_dim, **kwargs):
 def ARPES_detector_triggers_sequence(**kwargs):    # do we need to add 29idb:ca5 ???
     """
     """
-    kwargs.setdefault(seq_num,8)
+    kwargs.setdefault('seq_num',8)
     seq_num=kwargs['seq_num']
 
-    detector_triggers_pv,detector_triggers_proc = userStringSeq_pvs(BL.ioc, seq_num)
+    detector_triggers_pv,detector_triggers_proc = userStringSeq_pvs(kwargs['scan_ioc'], seq_num)
        
     #clear the userStringSeq
     userStringSeq_clear(BL.ioc,seq_num=kwargs['seq_num'])
@@ -388,12 +390,12 @@ def ARPES_detector_triggers_sequence(**kwargs):    # do we need to add 29idb:ca5
 
     return detector_triggers_proc
 
-def ARPES_trigger_dictionary():
+def ARPES_trigger_dictionary(**kwargs):
     """
     need to do something
     """
     trigger_dictionary = {
-        1:ARPES_detector_triggers_sequence(),
+        1:ARPES_detector_triggers_sequence(**kwargs),
     }
     return trigger_dictionary
 
diff --git a/iexcode/instruments/scanRecord.py b/iexcode/instruments/scanRecord.py
index 2e01a97a40feb0cabc45a2affce438fa7ef800d9..77abe5ac44e27399c6e212747862798ecd19c0ee 100644
--- a/iexcode/instruments/scanRecord.py
+++ b/iexcode/instruments/scanRecord.py
@@ -14,14 +14,17 @@ def saveData_get_all(ioc_pv):
     returns saveData info: 
     """
     saveData_info = {
-        'fileSystem':caget(ioc_pv+":saveData_fileSystem",as_string=True),
-        'subDir':caget(ioc_pv+":saveData_subDir",as_string=True),
-        'scanNumber':caget(ioc_pv+":saveData_scanNumber"),
-        'baseName':caget(ioc_pv+":saveData_baseName",as_string=True),
+        'fileSystem':caget(ioc_pv+"saveData_fileSystem",as_string=True),
+        'subDir':caget(ioc_pv+"saveData_subDir",as_string=True),
+        'scanNumber':caget(ioc_pv+"saveData_scanNumber"),
+        'baseName':caget(ioc_pv+"saveData_baseName",as_string=True),
     }
 
     filepath = join(saveData_info['fileSystem'],saveData_info['subDir'])
     filepath=filepath.replace('//','/') 
+    saveData_info['filepath'] = filepath
+
+    return saveData_info
     
 
 default_positioner_settling_time = 0.05
@@ -32,7 +35,7 @@ class ScanRecord:
     used for short hand scanning and to get info related to a scanRecord
     """
 
-    def __init__(self,scan_ioc,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv,**kwargs):
+    def __init__(self,scan_ioc,**kwargs):
         """
         scan_ioc: full pv for the ioc, "29idARPES:", "29idc:"
         detector_dictionary: dictionary corresponding to detector num and pv to proc => {det_num:'det_pv'}
@@ -41,16 +44,32 @@ class ScanRecord:
         after_scan_pv: pv to be proc'ed be for the start of a scan
 
         **kwargs
-            reset: resets the scanRecord (True / False) => default = True
+            detector_dictionary
+            trigger_dictionary
+            before_scan_pv
+            after_scan_pv
 
         """
-        kwargs.setdefault('reset',True)
+
+
         self.ioc = scan_ioc
 
-        if kwargs['reset']:
-            self.reset_all(detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv)
+        if 'detector_dictionary' in kwargs:
+            self.detector_dictionary = kwargs['detector_dictionary']
+        if 'trigger_dictionary' in kwargs:
+            self.trigger_dictionary = kwargs['trigger_dictionary']
+        if 'before_scan_pv' in kwargs:
+            self.before_scan_pv = kwargs['before_scan_pv']
+        if 'after_scan_pv' in kwargs:
+            self.after_scan_pv = kwargs['after_scan_pv']
+
+
+        else:
+            pass
 
-        pass
+
+        
+        
 
 ##############################################################################################################
 ################################            MDA (ScanRecord) files and folders               ##############################
@@ -72,7 +91,7 @@ class ScanRecord:
         previously: MDA_GetLastFileNum
         """
 
-        fileNum = self.fileNum(self)
+        fileNum = self.fileNum()
         return fileNum - 1
 
 
@@ -109,7 +128,7 @@ class ScanRecord:
 
         previously: MDA_CurrentUser
         """
-        subdir=caget(self.ioc+":saveData_subDir",as_string=True)
+        subdir=saveData_get_all(self.ioc)['subDir']  
         m=subdir.find('/mda')
         if m == 0 : 
             current_user='Staff'
@@ -127,29 +146,34 @@ class ScanRecord:
 
 
     ### before and after scans
-    def _before_after_scan(self,**kwargs):
+    def _before_after_scan_set(self,**kwargs):
         """
-        Fills in the before and after user sequences into the scan record
+        Clears the before_scan and after_scan in all dims
+        Fills in the before_scan and after_after pv for kwargs['scan_dim'] only
         **kwargs
-            before_scan_pv => '' 
-            after_scan_pv => self.default_after_scan_seq() 
+            scan_dim = 1 (default)
+            before_scan_pv
+            after_scan_pv
         """
         kwargs.setdefault('scan_dim',1)
-        kwargs.setdefault('before_scan_pv','')
-        kwargs.setdefault('after_scan_pv',self._default_after_scan_seq())
-        
-        scan_pv = self.ioc+"scan"+str(kwargs['scan_dim'])
+
+        if 'before_scan_pv' in kwargs:
+            self.before_scan_pv = kwargs['before_scan_pv']
+        if 'after_scan_pv' in kwargs:
+            self.before_scan_pv = kwargs['after_scan_pv']
 
         #Clearing all Before/Afters in all dims
         for dim in [1,2,3,4]:
             caput(self.ioc+"scan"+str(dim)+".BSPV","")
             caput(self.ioc+"scan"+str(dim)+".ASPV","")
 
-        caput(scan_pv+".BSPV",kwargs['before_scan_pv'])
+        scan_pv = self.ioc+"scan"+str(kwargs['scan_dim'])
+
+        caput(scan_pv+".BSPV",self.before_scan_pv)
         caput(scan_pv+".BSCD",1)
         caput(scan_pv+".BSWAIT","Wait")
 
-        caput(scan_pv+".ASPV",kwargs['after_scan_pv'])
+        caput(scan_pv+".ASPV",self.after_scan_pv)
         caput(scan_pv+".ASCD",1)
         caput(scan_pv+".ASWAIT","Wait")
 
@@ -165,10 +189,9 @@ class ScanRecord:
             positioner_settling_time
             detector_settling_time
 
-
         Previously: AfterScan_StrSeq
         """
-        kwargs.setdefault(seq_num,10)
+        kwargs.setdefault('seq_num',10)
         kwargs.setdefault('positioner_settling_time',default_positioner_settling_time)
         kwargs.setdefault('detector_settling_time',default_detector_settling_time)
         
@@ -176,7 +199,8 @@ class ScanRecord:
         scan_pv = self.ioc+"scan"+str(scan_dim)
 
         seq_num=kwargs['seq_num']
-        after_scan_pv = userStringSeq_pvs(self.ioc, seq_num)
+        after_scan_pv = userStringSeq_pvs(self.ioc, seq_num)[0]
+        self.after_scan_pv = after_scan_pv
 
         #clear and write the after scan user sequence
         userStringSeq_clear(self.ioc,seq_num)
@@ -184,11 +208,11 @@ class ScanRecord:
 
         #link 1 - clears positioners
         caput(after_scan_pv+".LNK1",scan_pv+'.P1AR'+" PP NMS")
-        caput(after_scan_pv+".DO1","Clear pos&rdbk PV's, etc")
+        caput(after_scan_pv+".STR1","Clear pos&rdbk PV's, etc")
 
         #link 2 - sets positioner mode to to abosolute 
         caput(after_scan_pv+".LNK2",scan_pv+'.CMND'+" PP NMS")
-        caput(after_scan_pv+".DO2","ABSOLUTE")
+        caput(after_scan_pv+".STR2","ABSOLUTE")
 
         #link 3 - sets positioner delay time to default 
         settling_time = kwargs['positioner_settling_time']
@@ -200,15 +224,18 @@ class ScanRecord:
         caput(after_scan_pv+".LNK4",scan_pv+'.DDLY'+" PP NMS")
         caput(after_scan_pv+".DO4",settling_time)
 
-        return after_scan_pv
+        return after_scan_pv+".PROC"
     
     ### Resetting:
-    def reset_scan_dim(self,scan_dim,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv):
+    def reset_scan_dim(self,scan_dim,**kwargs):
         """
         Resets all the scanRecords (scanDIM=1,2,3,4) for a given IOC 
             uses Reset_Scan()
         **kwargs
-            scaler='y', only for Kappa ioc
+            detector_dictionary
+            trigger_dictionary
+            before_scan_pv
+            after_scan_pv
 
         Previously: Reset_ScanAll
         """
@@ -216,14 +243,18 @@ class ScanRecord:
         self.triggers_clear(scan_dim)
         self.positioners_clear(scan_dim)
 
-        self.detectors_set(scan_dim,detector_dictionary)
-        self.triggers_set(scan_dim,trigger_dictionary)
-        self.before_after_sequences_set(scan_dim,before_scan_pv,after_scan_pv)
+        if 'detector_dictionary' in kwargs:
+            self.detectors_set(scan_dim,kwargs['detector_dictionary'])
+        
+        if 'trigger_dictionary' in kwargs:
+            self.triggers_set(scan_dim,kwargs['trigger_dictionary'])
+
+        self._before_after_scan_set(self,kwargs.update({'scan_dim':scan_dim}))
 
         self.detector_settling_time(scan_dim)
         self.positioner_settling_time(scan_dim)
 
-    def reset_all(self,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv):
+    def reset_all(self):
         """
         Resets all the scanRecords (scanDIM=1,2,3,4) for a given IOC 
             uses Reset_Scan()
@@ -235,7 +266,14 @@ class ScanRecord:
 
         for scan_dim in range(4,1):
             self.reset_scan_dim(scan_dim,{},{},'','')
-        self.reset_scan_dim(1,detector_dictionary,trigger_dictionary,before_scan_pv,after_scan_pv)
+
+        kwargs = {
+            'detector_dictionary':self.detector_dictionary,
+            'trigger_dictionary':self.trigger_dictionary,
+            'before_scan_pv':self.before_scan_pv,
+            'after_scan_pv':self.after_scan_pv
+        }
+        self.reset_scan_dim(1,**kwargs)
 
     ### default setting    
     def settings_defaults(self,scan_dim,verbose=True,**kwargs):
@@ -374,9 +412,11 @@ class ScanRecord:
         detector_dictionary = {detNum:pv}
         """
         scan_pv = self.ioc+"scan"+str(scan_dim)
-        for det_num in detector_dictionary.keys():
-            det_pv=caget(scan_pv+".D"+det_num+"PV")
-            caput(det_pv,detector_dictionary[det_num])
+        
+        if detector_dictionary != None:
+            for det_num in detector_dictionary.keys():
+                det_pv=caget(scan_pv+".D"+det_num+"PV")
+                caput(det_pv,detector_dictionary[det_num])
 
     def detector_settling_time(self,**kwargs):
         """
@@ -399,9 +439,10 @@ class ScanRecord:
         Previously: Clear_Scan_Triggers
         """
         scan_pv = self.ioc+"scan"+str(scan_dim)
-        if len(trigger_dictionary.keys())>0:
-            for tigger_num in  trigger_dictionary.keys():
-                    caput(scan_pv+".T"+str(tigger_num)+"PV",trigger_dictionary[tigger_num])  
+        if trigger_dictionary != None:
+            if len(trigger_dictionary.keys())>0:
+                for tigger_num in  trigger_dictionary.keys():
+                        caput(scan_pv+".T"+str(tigger_num)+"PV",trigger_dictionary[tigger_num])  
 
     def triggers_clear(self,scan_dim,trigger_dictionary,verbose=True):
         """