diff --git a/iexcode/instruments/electron_analyzer.py b/iexcode/instruments/electron_analyzer.py
index 1573d45ef5f3090cd334db684d14024215bd200f..4fd043c958f328731e0ad0638b79f85bbc8610ac 100644
--- a/iexcode/instruments/electron_analyzer.py
+++ b/iexcode/instruments/electron_analyzer.py
@@ -359,74 +359,54 @@ def scanEA(EAlist,**kwargs):
     kwargs.setdefault('execute',True)
     kwargs.setdefault("debug",False)
     
-    if EAlist[0]=="KE" or EAlist[0]=="BE":
+    #checking parameters - BE/KE
+    if EAlist[0].upper()=="KE" or EAlist[0].upper()=="BE":
         pass
     else:
         print("need to specify BE or KE")
         return
 
-    if EAlist[-1]=='BS':
-        sweeps=EAlist[-2]
+    #getting number of sweeps
+    if type(EAlist[-1])==str:
+        if EAlist[-1].upper() == 'BS':
+            sweeps=EAlist[-2]
+            EAlist[-1]='BS'
     else:
-        sweeps=EAlist[-1]
-        
+        sweeps=EAlist[-1]   
     if kwargs['debug']:
         print("sweeps: "+str(sweeps))
 
-    #check KEs within limit
+    #convert BE to KE and check KEs within limits
     if EAlist[0]=="KE":
         KElist = np.array(EAlist[1:-3])
     elif EAlist[0]=="BE":
         KElist = energy_get() - np.array(EAlist[1:-3])
+    if type(EAlist[-1]) == str:
+        KElist = KElist[0:-1]
+    if kwargs['debug']:
+        print("KElist: "+str(KElist))
+    #swept mode range check
     if len(KElist)>2:
-        if KElist[0] > KElist[1]:
-            print_warning_message('EA scans from low to high in kinetic energy')
-            return
-    KEmin,KEmax = AllowedEnergyRange(EAlist[-3],'Angular')
+        KE_0,KE_1,KE_step = tuple(KElist)
+        if KE_0 > KE_1:
+            print_warning_message('EA scans from low to high in kinetic energy, fixing order')
+        KElist = [min(KE_0,KE_1),max(KE_0,KE_1),KE_step]
+    #check if KEs are within range
+    try:
+        if type(EAlist[-1]) == str:
+            KEmin,KEmax = AllowedEnergyRange(EAlist[-4],'Angular')
+        else:
+            KEmin,KEmax = AllowedEnergyRange(EAlist[-3],'Angular')
+    except:
+        print_warning_message("Not a valid pass Energy - LensMode combination")
+        print(AllowedEnergyRange())
     if KElist[0] < KEmin:
         print_warning_message('kinetic energy belowed minimum allowed energy')
         print(AllowedEnergyRange())
         return
-        
-    if EAlist[0]=="BE":
-        if len(EAlist)==5: #Fixed
-            pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:fixedEnergy.VAL")
-            EAlist[1]=caget(pvCalcOut1+'.VAL')
-            arrayP1=list(np.full(sweeps,  EAlist[1]))
-            scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1)
-            scan_positioner_after_set(positioner_after_scan="STAY")
-            EAlist[1]=arrayP1[0]
-            if kwargs['debug']:
-                print('\npvCalcOut1: ',pvCalcOut1)
-                print('Pos1 table:',arrayP1)
-        elif len(EAlist)==6: #Baby-Swept
-            pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:babySweepCenter.VAL")
-            EAlist[1]=caget(pvCalcOut1+'.VAL')
-            arrayP1=list(np.full(sweeps, EAlist[1]))
-            scan_fillin_table(pvCalcOut1+'PROC',"",arrayP1)
-            scan_positioner_after_set(positioner_after_scan="STAY")
-            print('\npvCalcOut1: ',pvCalcOut1)
-            print('Pos1 table:',arrayP1)
-        elif len(EAlist)==7: #Sweep
-            pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_start",9,"29idcScienta:HV:sweepStartEnergy.VAL")
-            pvCalcOut2=_BE2KE_setupCalc(EAlist[2],"BE_stop",10,"29idcScienta:HV:sweepStopEnergy.VAL")
-            EAlist[1]=caget(pvCalcOut1+'.VAL')
-            EAlist[2]=caget(pvCalcOut2+'.VAL')
-            arrayP1=list(np.full(sweeps, EAlist[1]))
-            arrayP2=list(np.full(sweeps, EAlist[2]))
-            scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1)
-            scan_fillin_table(pvCalcOut2+'.PROC',"",arrayP2)
-            scan_positioner_after_set(positioner_after_scan="STAY")
-            if kwargs['debug']:
-                print("\npvCalcOut1",pvCalcOut1)
-                print("\npvCalcOut2",pvCalcOut2)
-                print('Pos1 table:',arrayP1)
-                print('Pos2 table:',arrayP2)
-        EAlist[0]=='KE'
-    else:
-        _BE2KE_setupCalc(0,"",9,"")
-        _BE2KE_setupCalc(0,"",10,"")  
-        
+    #everything checks out convert to KE
+    for i,KE in enumerate(KElist):
+        EAlist[1+i] = KElist[i]
     if kwargs['debug']:
         print('/n EAlist => ',EAlist)
 
@@ -566,6 +546,46 @@ def mvth_interp(RoughPositions, thVal,**kwargs):
     #print("Pos = ",Pos)
     EA.Motors.mvsample(Pos)
 
+""" def _removed_from_scanEA():
+        if EAlist[0]=="BE":
+        if len(EAlist)==5: #Fixed
+            pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:fixedEnergy.VAL")
+            EAlist[1]=caget(pvCalcOut1+'.VAL')
+            arrayP1=list(np.full(sweeps,  EAlist[1]))
+            scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1)
+            scan_positioner_after_set(positioner_after_scan="STAY")
+            EAlist[1]=arrayP1[0]
+            if kwargs['debug']:
+                print('\npvCalcOut1: ',pvCalcOut1)
+                print('Pos1 table:',arrayP1)
+        elif len(EAlist)==6: #Baby-Swept
+            pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:babySweepCenter.VAL")
+            EAlist[1]=caget(pvCalcOut1+'.VAL')
+            arrayP1=list(np.full(sweeps, EAlist[1]))
+            scan_fillin_table(pvCalcOut1+'PROC',"",arrayP1)
+            scan_positioner_after_set(positioner_after_scan="STAY")
+            print('\npvCalcOut1: ',pvCalcOut1)
+            print('Pos1 table:',arrayP1)
+        elif len(EAlist)==7: #Sweep
+            pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_start",9,"29idcScienta:HV:sweepStartEnergy.VAL")
+            pvCalcOut2=_BE2KE_setupCalc(EAlist[2],"BE_stop",10,"29idcScienta:HV:sweepStopEnergy.VAL")
+            EAlist[1]=caget(pvCalcOut1+'.VAL')
+            EAlist[2]=caget(pvCalcOut2+'.VAL')
+            arrayP1=list(np.full(sweeps, EAlist[1]))
+            arrayP2=list(np.full(sweeps, EAlist[2]))
+            scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1)
+            scan_fillin_table(pvCalcOut2+'.PROC',"",arrayP2)
+            scan_positioner_after_set(positioner_after_scan="STAY")
+            if kwargs['debug']:
+                print("\npvCalcOut1",pvCalcOut1)
+                print("\npvCalcOut2",pvCalcOut2)
+                print('Pos1 table:',arrayP1)
+                print('Pos2 table:',arrayP2)
+        EAlist[0]=='KE'
+    else:
+        _BE2KE_setupCalc(0,"",9,"")
+        _BE2KE_setupCalc(0,"",10,"")   """
+
 def scanEA_hv(EAlist,hv_lists,**kwargs):    
     """
     triggers and EAscan for each photon energy in *hvs