diff --git a/build/lib/iexcode/instruments/IEX_VPU.py b/build/lib/iexcode/instruments/IEX_VPU.py
index f59da73a401fcaca60be8e5e2e0e221de3336673..94f2411c3115cb1dbca18b020f9a8049d219beff 100644
--- a/build/lib/iexcode/instruments/IEX_VPU.py
+++ b/build/lib/iexcode/instruments/IEX_VPU.py
@@ -171,7 +171,12 @@ def ID_mode_set(ID_mode):
     """
     writes the desired mode to the correct ID pv
     """
-    caput(ID_pvs()['mode_val'],ID_mode,wait=True,timeout=18000)     # RCP
+    if ID_mode in ID_mode_list():
+        ID_state = ID_mode_list().index(ID_mode)
+        caput(ID_pvs()['mode_val'],ID_state,wait=True,timeout=18000)
+        sleep(1)
+    else:
+        print_warning_message('ID_mode not in '+str(ID_mode_list()))
 
 
 def ID_ready(verbose=False):
@@ -185,11 +190,11 @@ def ID_ready(verbose=False):
         checkready = caget(ID_pvs()['check_ready'])
         checkbusy = caget(ID_pvs()['check_busy'],as_string=True)
         if (checkready!="Ready"):
-            print('checkready',checkready)
+            #print('checkready',checkready)
             sleep(2)
             if checkbusy=="Busy":
                 sleep(2)
-                print('checkbusy',checkbusy)
+                #print('checkbusy',checkbusy)
             else:
                 if RBV > 3.7: 
                     #thinks its done but isn't, need to reset busy
@@ -275,11 +280,13 @@ def ID_switch_mode(ID_mode):
         if ID_state_mode(ID_mode) != ID_state:
             print("Turning ID off...")
             ID_off(verbose=True)
-            sleep(10)
-            
+            sleep(5)
+            ID_ready()
+
             print("Switching ID mode, please wait...")
             ID_mode_set(ID_mode) 
             ID_on(verbose=True)
+            sleep(5)
             ID_ready()
         print("ID Mode:",ID_mode)
     except:
@@ -422,7 +429,8 @@ def ID_QP_mode_set(QP_ratio=None,verbose=True):
         if ratio_RBV != QP_ratio:
             ID_off()
             caput("ID29:QuasiRatioIn.C",QP_ratio)
-        
+            sleep(1)
+
             ID_on()
             sleep(15)
 
diff --git a/iexcode/instruments/IEX_VPU.py b/iexcode/instruments/IEX_VPU.py
index f59da73a401fcaca60be8e5e2e0e221de3336673..02fd0596095a73e91a92a0a41d56194befa73f46 100644
--- a/iexcode/instruments/IEX_VPU.py
+++ b/iexcode/instruments/IEX_VPU.py
@@ -171,7 +171,12 @@ def ID_mode_set(ID_mode):
     """
     writes the desired mode to the correct ID pv
     """
-    caput(ID_pvs()['mode_val'],ID_mode,wait=True,timeout=18000)     # RCP
+    if ID_mode in ID_mode_list():
+        ID_state = ID_mode_list().index(ID_mode)
+        caput(ID_pvs()['mode_val'],ID_state,wait=True,timeout=18000)
+        sleep(1)
+    else:
+        print_warning_message('ID_mode not in '+str(ID_mode_list()))
 
 
 def ID_ready(verbose=False):
@@ -185,11 +190,11 @@ def ID_ready(verbose=False):
         checkready = caget(ID_pvs()['check_ready'])
         checkbusy = caget(ID_pvs()['check_busy'],as_string=True)
         if (checkready!="Ready"):
-            print('checkready',checkready)
+            #print('checkready',checkready)
             sleep(2)
             if checkbusy=="Busy":
                 sleep(2)
-                print('checkbusy',checkbusy)
+                #print('checkbusy',checkbusy)
             else:
                 if RBV > 3.7: 
                     #thinks its done but isn't, need to reset busy
@@ -271,19 +276,19 @@ def ID_switch_mode(ID_mode):
     shutter_check(verbose=False)
     ID_state = ID_state_get()
 
-    try:
-        if ID_state_mode(ID_mode) != ID_state:
-            print("Turning ID off...")
-            ID_off(verbose=True)
-            sleep(10)
-            
-            print("Switching ID mode, please wait...")
-            ID_mode_set(ID_mode) 
-            ID_on(verbose=True)
-            ID_ready()
-        print("ID Mode:",ID_mode)
-    except:
-        print_warning_message("Not a valid ID mode")
+    if ID_state_mode(ID_mode) != ID_state:
+        print("Turning ID off...")
+        ID_off(verbose=True)
+        sleep(5)
+        ID_ready()
+
+        print("Switching ID mode, please wait...")
+        ID_mode_set(ID_mode) 
+        ID_on(verbose=True)
+        sleep(5)
+        ID_ready()
+    print("ID Mode:",ID_mode_get())
+
 
 def ID_get(verbose=False):
     """
@@ -422,7 +427,8 @@ def ID_QP_mode_set(QP_ratio=None,verbose=True):
         if ratio_RBV != QP_ratio:
             ID_off()
             caput("ID29:QuasiRatioIn.C",QP_ratio)
-        
+            sleep(1)
+
             ID_on()
             sleep(15)