diff --git a/build/lib/iexcode/instruments/ARPES.py b/build/lib/iexcode/instruments/ARPES.py
index 3b3c5afcd63f47961aea6795c35331a6d3b48962..70b4ea4ae1947e9492d476b0fa5cb6ea64b9bae5 100644
--- a/build/lib/iexcode/instruments/ARPES.py
+++ b/build/lib/iexcode/instruments/ARPES.py
@@ -512,7 +512,6 @@ def _ARPES_snake_userCalc(**kwargs):
     
     return snake_userCalc_pv+'.VAL'
 
-
 def ARPES_snake_set(snake,**kwargs):
     """
     used for snake scanning 
@@ -521,16 +520,14 @@ def ARPES_snake_set(snake,**kwargs):
     scan_ioc = iex.BL.mda.ioc
     after_scan_pv,after_scan_proc = _ARPES_scan_after_pvs()
 
-    snake_val = _ARPES_snake_userCalc()
     scan_step_pv = scan_ioc+'scan'+str(kwargs['scan_dim'])+'.P1SI NP NMS'
 
     if snake:
         caput(after_scan_pv+".LNKA",scan_step_pv)
-        caput(after_scan_pv+"DOA",snake_val)
+        caput(after_scan_pv+".DOLA",_ARPES_snake_userCalc()+" NP")
     else:
         caput(after_scan_pv+".LNKA","")
-        caput(after_scan_pv+"DOA",0)
-
+        caput(after_scan_pv+".DOA","")
 ##############################################################################################################
 ##############################             ARPES Motor Endcoders      ##############################
 ##############################################################################################################
diff --git a/iexcode/instruments/ARPES.py b/iexcode/instruments/ARPES.py
index 70b4ea4ae1947e9492d476b0fa5cb6ea64b9bae5..5e6ad6c6e6cf46e00234fe2aad89fe83aa258563 100644
--- a/iexcode/instruments/ARPES.py
+++ b/iexcode/instruments/ARPES.py
@@ -402,7 +402,6 @@ def _ARPES_ca_live_sequence(**kwargs):
 def _ARPES_scan_after_pvs(clear=False,**kwargs):
     """
     _ARPES_scan_after_sequence pv
-
     """
     kwargs.setdefault('seq_num',10)
     seq_num = kwargs['seq_num']
@@ -421,8 +420,7 @@ def _ARPES_scan_after_sequence(**kwargs):
     returns after_scan_pv = pv for userStringSeq for after scan
 
     **kwargs
-        seq_num: userStringSeq number in ioc => 10 (default)
-        snake: for snake scanning => False (default)
+
     Previously: AfterScan_StrSeq
     """
     
@@ -440,6 +438,7 @@ def _ARPES_scan_after_sequence(**kwargs):
     caput(after_scan_pv+".DO1",1)
 
     scan_pv = iex.BL.ioc+"scan"+str(scan_dim)
+    
     ## Put scan record back in absolute mode
     caput(after_scan_pv+".LNK2",scan_pv+".P1AR")
     caput(after_scan_pv+".STR2","ABSOLUTE")
diff --git a/iexcode/instruments/Octupole.py b/iexcode/instruments/Octupole.py
index 0025b61f7654a46fe349b89d3f63857db1a73368..a3abb5a71ed63bbf802ee180b3b7fecf7794f364 100644
--- a/iexcode/instruments/Octupole.py
+++ b/iexcode/instruments/Octupole.py
@@ -16,7 +16,7 @@ from iexcode.instruments.xrays import _xrays_detector_dictionary, _xrays_reset,
 
 from iexcode.instruments.conversions_constants import *
 from iexcode.instruments.utilities import *
-from iexcode.instruments.userCalcs import userStringSeq_clear, userStringSeq_pvs
+from iexcode.instruments.userCalcs import *
 
 from iexcode.instruments.Motors import Motors
 from iexcode.instruments.current_amplifiers import Keithley, _Keithley_pv, ca_reset_all, _ca_live_sequence,SRS
@@ -56,7 +56,7 @@ def Octupole_init(*userName,**kwargs):
     kwargs.setdefault('xrays',True)
     kwargs.setdefault('mode','user')
     kwargs.setdefault('set_folders',True)
-    kwargs.setdefault('reset',True)
+    kwargs.setdefault('reset',False)
 
     #motors
     physical_motors = ['x','y','z','th','tth']
@@ -96,7 +96,9 @@ def Octupole_init(*userName,**kwargs):
     tfy = Scaler("29ide:scaler1.S4")
     pd = SRS("29ide:scaler1.S5", '29ide:SR570_5:')
     
-    
+    #default scan settings
+    Octupole_default_scan_setting()
+
     #resetting everything
     if kwargs['reset']:
         Octupole_reset()
@@ -251,7 +253,7 @@ def folders_Octupole(user_name,**kwargs):
         print("run,folder,user_name,ioc,ftp: ",run,iex.BL.folder,user_name,iex.BL.ioc,kwargs['ftp'])
     
     # Create User Folder:
-    make_user_folders(run,iex.BL.folder,user_name,iex.BL.endstation,ftp=kwargs['ftp'])
+    make_user_folders(run,iex.BL.folder,user_name,iex.BL.endstation_name,ftp=kwargs['ftp'])
     sleep(5)
 
     if kwargs["set_folders"]:
@@ -262,20 +264,29 @@ def folders_Octupole(user_name,**kwargs):
     if 'reset':
         Octupole_reset(**kwargs)
 
-def Octupole_reset(**kwargs):
+def Octupole_default_scan_setting(**kwargs):
     """
-    resets scanRecord, current amplifiers, mono limits and lakeshore
+    default setting for scan record
+    Note: only get set if ARPES_reset is run 
     """
     #writing default parameters to iex.BL.mda
+    iex.BL.mda.detector_dictionary = _Octupole_detector_dictionary(**kwargs)
     if iex.BL.mode=='staff':
-        iex.BL.mda.detector_dictionary = staff_detector_dictionary()
-    else:
-         iex.BL.mda.detector_dictionary = _Octupole_detector_dictionary(**kwargs)
+        iex.BL.mda.detector_dictionary.update(staff_detector_dictionary())
+
     iex.BL.mda.trigger_dictionary = _Octupole_trigger_dictionary()
     iex.BL.mda.scan_before_sequence = _Octupole_scan_before_sequence()
     iex.BL.mda.scan_after_sequence = _Octupole_scan_after_sequence()    
-    
-    #resetting the scanRecord
+    iex.BL.mda.snake_set = Octupole_snake_set #sending the function, no parenthesis
+
+    #set the logfile name
+    iex.BL.mda.log.name_set()  
+
+def Octupole_reset(**kwargs):
+    """
+    resets scanRecord, current amplifiers, mono limits and lakeshore
+    """
+     #resetting the scanRecord
     print("resetting the scanRecord - "+iex.BL.ioc)
     iex.BL.mda.reset_all()
 
@@ -392,42 +403,41 @@ def _Octupole_scan_before_sequence(**kwargs):
 
     return before_scan_proc
 
+def _Octupole_scan_after_pvs(clear=False,**kwargs):
+    """
+    _Octupole_scan_after_sequence pv
+    """
+    kwargs.setdefault('seq_num',10)
+    seq_num = kwargs['seq_num']
+
+    scan_ioc = iex.BL.ioc
+
+    after_scan_pv,after_scan_proc = userStringSeq_pvs(scan_ioc, seq_num)
+
+    if clear:
+        userStringSeq_clear(scan_ioc,seq_num)
+    return after_scan_pv,after_scan_proc
+
+
 def _Octupole_scan_after_sequence(**kwargs):
     """
     writes the user string sequence to happen at the end of a scan
     returns after_scan_pv = pv for userStringSeq for after scan
 
     **kwargs
-        seq_num: userStringSeq number in ioc => 10 (default)
-        snake: for snake scanning => False (default)
 
     Previously: AfterScan_StrSeq
     """
-    kwargs.setdefault('seq_num',10)
-    kwargs.setdefault('snake',False)
     kwargs.setdefault('scan_dim',1)
-
-    seq_num = kwargs['seq_num']
     scan_dim = kwargs['scan_dim']
 
-    scan_ioc = iex.BL.ioc
-
-    if 'scan_ioc' in kwargs:
-        scan_ioc = kwargs['scan_ioc']
-        try:
-            iex.BL.ioc = kwargs['scan_ioc']
-        except:
-            error = 'undefined'
-    else:
-        scan_ioc = iex.BL.ioc
-
-    after_scan_pv,after_scan_proc = userStringSeq_pvs(scan_ioc, seq_num)
-    
     #clear and write the after scan user sequence
-    userStringSeq_clear(scan_ioc,seq_num)
+    after_scan_pv,after_scan_proc = _Octupole_scan_after_pvs(clear=True,**kwargs)
+
     caput(after_scan_pv+".DESC","After Scan")
         
     scan_pv = iex.BL.ioc+"scan"+str(scan_dim)
+
     ## Put scan record back in absolute mode
     caput(after_scan_pv+".LNK2",scan_pv+".P1AR")
     caput(after_scan_pv+".STR2","ABSOLUTE")
@@ -436,14 +446,10 @@ def _Octupole_scan_after_sequence(**kwargs):
     caput(after_scan_pv+".LNK3",scan_pv+".PDLY NPP NMS")
     caput(after_scan_pv+".DO3",0.1)
 
-    ## Clear DetTriggers 2 to 4:
+    ## Clear DetTriggers 2:
     caput(after_scan_pv+".LNK4",scan_pv+".T2PV NPP NMS")    #remove trigger 2 (used for EA) after scan
 
-    if kwargs['snake']:
-        snake_dim = scan_dim - 1
-        #snake_proc= Octupole_snake_pv(snake_dim,enable=True)
-        #caput(after_scan_pv+".LNK10",Kappa_snake_pv()+"PP NMS")
-        #caput(after_scan_pv+".D10",1)
+    ##Snake goes in LNKA (10)
 
     return after_scan_proc
 
@@ -451,7 +457,6 @@ def _Octupole_detector_triggers_sequence(**kwargs):    # do we need to add 29idb
     """
     
     """
-
     kwargs.setdefault('seq_num',8)
     seq_num=kwargs['seq_num']
 
@@ -489,6 +494,46 @@ def _Octupole_trigger_dictionary(**kwargs):
     return trigger_dictionary
 
 
+def _Octupole_snake_userCalc(**kwargs):
+    """
+    used to flip the sign of the step after a scan 
+        snake scans as opposed to typewriter scans
+    """
+    kwargs.setdefault('seq_num',10)
+    kwargs.setdefault('scan_dim',1)
+
+    seq_num=kwargs['seq_num']
+    scan_ioc = iex.BL.ioc
+    
+    userCalc_clear(scan_ioc,seq_num)
+    snake_userCalc_pv,snake_userCalc_proc = userCalcs_pvs(scan_ioc, seq_num)
+
+    scan_step_pv = scan_ioc+'scan'+str(kwargs['scan_dim'])+'.P1SI NP NMS'
+
+    caput(snake_userCalc_pv+'.DESC','snake_calc'),
+    caput(snake_userCalc_pv+'.SCAN','I/O Intr'),
+    caput(snake_userCalc_pv+'.INAN',scan_step_pv)
+    caput(snake_userCalc_pv+'.B',"-1")
+    caput(snake_userCalc_pv+'.CALC$',"A*B")
+    
+    return snake_userCalc_pv+'.VAL'
+
+def Octupole_snake_set(snake,**kwargs):
+    """
+    used for snake scanning 
+    """
+    kwargs.setdefault('scan_dim',1)
+    scan_ioc = iex.BL.mda.ioc
+    after_scan_pv,after_scan_proc = _Octupole_scan_after_pvs()
+
+    scan_step_pv = scan_ioc+'scan'+str(kwargs['scan_dim'])+'.P1SI NP NMS'
+
+    if snake:
+        caput(after_scan_pv+".LNKA",scan_step_pv)
+        caput(after_scan_pv+".DOLA",_Octupole_snake_userCalc()+" NP")
+    else:
+        caput(after_scan_pv+".LNKA","")
+        caput(after_scan_pv+".DOA","")
 
 
 ##############################################################################################################