diff --git a/include/asterisk/ael_structs.h b/include/asterisk/ael_structs.h
index a342fa5800db668d6048745709ef4399913c37ec..592439346d269196fdbd3578f63ee06facdb826f 100644
--- a/include/asterisk/ael_structs.h
+++ b/include/asterisk/ael_structs.h
@@ -107,7 +107,8 @@ struct ael_extension
 	char *hints;
 	int regexten;
 	int is_switch;
-	int has_switch;
+	int has_switch; /* set if a switch exists in the extension */
+	int checked_switch; /* set if we checked for a switch in the extension -- so we don't have to do it again */
 	
 	struct ast_context *context;
 	
diff --git a/pbx/ael/ael-test/ref.ael-ntest10 b/pbx/ael/ael-test/ref.ael-ntest10
index e09d6c8d54a1a18cf84c1658af9c764117eb71da..1b72c53872d4d8cb1f652067948d0c4223e57924 100644
--- a/pbx/ael/ael-test/ref.ael-ntest10
+++ b/pbx/ael/ael-test/ref.ael-ntest10
@@ -10,20 +10,20 @@ LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: par
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch.
 LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 Executed ast_context_find_or_create(conts, name=endsess, registrar=pbx_ael);
 Executed ast_context_find_or_create(conts, name=nullchk, registrar=pbx_ael);
@@ -110,15 +110,14 @@ Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=9, label=
 Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-13-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-.|10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=10, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=11, label=(null), callerid=(null), appl=Goto, data=sw-14-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=12, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-13-.,10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-14-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-out,12, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-.,10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-14-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-out,11, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out,12, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out,11, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall4-out-13-in-14-15, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-14-.,10, FREE, registrar=pbx_ael);
@@ -143,15 +142,14 @@ Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=9, label=
 Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-20-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-.|10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=10, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=11, label=(null), callerid=(null), appl=Goto, data=sw-21-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=12, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-20-.,10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-21-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-out,12, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-.,10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-21-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-out,11, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out,12, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out,11, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall5-out-20-in-21-22, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-21-.,10, FREE, registrar=pbx_ael);
@@ -175,4 +173,4 @@ Executed ast_merge_contexts_and_delete();
 LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 Executed ast_walk_contexts();
 LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:518 func: main  7 contexts, 37 extensions, 138 priorities
+LOG: lev:4 file:ael2_parse  line:518 func: main  7 contexts, 37 extensions, 136 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test18 b/pbx/ael/ael-test/ref.ael-test18
index 09b30b7de036df41dcda081f24012e57af4751fd..d5a07770ccef03b2077c1c39a0956e89ae44ec6d 100644
--- a/pbx/ael/ael-test/ref.ael-test18
+++ b/pbx/ael/ael-test/ref.ael-test18
@@ -8,4 +8,4 @@ LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: che
 LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:518 func: main  1 contexts, 7 extensions, 29 priorities
+LOG: lev:4 file:ael2_parse  line:518 func: main  1 contexts, 7 extensions, 28 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test19 b/pbx/ael/ael-test/ref.ael-test19
index 405f43705f1a4d8ece2571aa7bb847bc3d405442..67519dafda2eb218431b3793b0ce26591975e024 100644
--- a/pbx/ael/ael-test/ref.ael-test19
+++ b/pbx/ael/ael-test/ref.ael-test19
@@ -4,15 +4,15 @@
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
 LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:2300 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69! (and neither is marked 'extend')
+LOG: lev:3 file:pval.c  line:2313 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69! (and neither is marked 'extend')
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 71-175: The macro std-priv-exten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA! (Not even in the extensions.conf stuff!)
-LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!)
+LOG: lev:3 file:pval.c  line:2297 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2439 func: check_pval_item  Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA! (Not even in the extensions.conf stuff!)
+LOG: lev:3 file:pval.c  line:2439 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!)
 LOG: lev:3 file:pval.c  line:1346 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  Couldn't find goto target test5|s|1, not even in extensions.conf!
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 363-366: The macro dialoutpstn does not end with a return; I will insert one.
 LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:548 func: main  13 contexts, 57 extensions, 194 priorities
+LOG: lev:4 file:ael2_parse  line:518 func: main  13 contexts, 57 extensions, 190 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test8 b/pbx/ael/ael-test/ref.ael-test8
index 2a94a278f763f40d8ba9b90b35ad75f20cba0c99..970f483c13b1d3991049bdc54be6d1ba65e27e17 100644
--- a/pbx/ael/ael-test/ref.ael-test8
+++ b/pbx/ael/ael-test/ref.ael-test8
@@ -8,4 +8,4 @@ LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: che
 LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:518 func: main  1 contexts, 7 extensions, 19 priorities
+LOG: lev:4 file:ael2_parse  line:518 func: main  1 contexts, 7 extensions, 18 priorities
diff --git a/pbx/ael/ael-test/ref.ael-vtest13 b/pbx/ael/ael-test/ref.ael-vtest13
index 58f9c7fa6f8c7bf1ac230a4f456e54888e618ab1..79a5e48fd1483c737258f8acdfeb0aab1cfe29a7 100644
--- a/pbx/ael/ael-test/ref.ael-vtest13
+++ b/pbx/ael/ael-test/ref.ael-vtest13
@@ -13,8 +13,8 @@ FWDVMBOX=1
 [std-exten]
 exten => s,1,Set(LOCAL(ext)=${ARG1})
 exten => s,2,Set(LOCAL(dev)=${ARG2})
-exten => s,3,Dial(${dev}/${ext},20)
-exten => s,4,Set(~~EXTEN~~=${EXTEN})
+exten => s,3,Set(~~EXTEN~~=${EXTEN})
+exten => s,4,Dial(${dev}/${ext},20)
 exten => s,5,Goto(sw-1-${DIALSTATUS},10)
 exten => s,6,NoOp(Finish switch-std-exten-1)
 exten => s,7,Return()
@@ -36,9 +36,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-3-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_1-3)
 exten => s,12,Return()
@@ -63,9 +63,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-4-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_2-4)
 exten => s,12,Return()
@@ -90,9 +90,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-5-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_3-5)
 exten => s,12,Return()
@@ -117,9 +117,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-6-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_4-6)
 exten => s,12,Return()
@@ -144,9 +144,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-7-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_5-7)
 exten => s,12,Return()
@@ -171,9 +171,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-8-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_6-8)
 exten => s,12,Return()
@@ -198,9 +198,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-9-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_7-9)
 exten => s,12,Return()
@@ -225,9 +225,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-10-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_8-10)
 exten => s,12,Return()
@@ -252,9 +252,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-11-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_9-11)
 exten => s,12,Return()
@@ -279,9 +279,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-12-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_10-12)
 exten => s,12,Return()
@@ -306,9 +306,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-13-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_11-13)
 exten => s,12,Return()
@@ -333,9 +333,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-14-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_12-14)
 exten => s,12,Return()
@@ -360,9 +360,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-15-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_13-15)
 exten => s,12,Return()
@@ -387,9 +387,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-16-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_14-16)
 exten => s,12,Return()
@@ -414,9 +414,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-17-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_15-17)
 exten => s,12,Return()
@@ -441,9 +441,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-18-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_16-18)
 exten => s,12,Return()
@@ -468,9 +468,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-19-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_17-19)
 exten => s,12,Return()
@@ -495,9 +495,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-20-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_18-20)
 exten => s,12,Return()
@@ -522,9 +522,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-21-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_19-21)
 exten => s,12,Return()
@@ -549,9 +549,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-22-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_20-22)
 exten => s,12,Return()
@@ -576,9 +576,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-23-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_21-23)
 exten => s,12,Return()
@@ -603,9 +603,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-24-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_22-24)
 exten => s,12,Return()
@@ -630,9 +630,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-25-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_23-25)
 exten => s,12,Return()
@@ -657,9 +657,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-26-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_24-26)
 exten => s,12,Return()
@@ -684,9 +684,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-27-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_25-27)
 exten => s,12,Return()
@@ -711,9 +711,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-28-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_26-28)
 exten => s,12,Return()
@@ -738,9 +738,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-29-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_27-29)
 exten => s,12,Return()
@@ -765,9 +765,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-30-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_28-30)
 exten => s,12,Return()
@@ -792,9 +792,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-31-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_29-31)
 exten => s,12,Return()
@@ -819,9 +819,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-32-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_30-32)
 exten => s,12,Return()
@@ -846,9 +846,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-33-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_31-33)
 exten => s,12,Return()
@@ -873,9 +873,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-34-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_32-34)
 exten => s,12,Return()
@@ -900,9 +900,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-35-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_33-35)
 exten => s,12,Return()
@@ -927,9 +927,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-36-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_34-36)
 exten => s,12,Return()
@@ -954,9 +954,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-37-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_35-37)
 exten => s,12,Return()
@@ -981,9 +981,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-38-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_36-38)
 exten => s,12,Return()
@@ -1008,9 +1008,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-39-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_37-39)
 exten => s,12,Return()
@@ -1035,9 +1035,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-40-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_38-40)
 exten => s,12,Return()
@@ -1062,9 +1062,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-41-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_39-41)
 exten => s,12,Return()
@@ -1089,9 +1089,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-42-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_40-42)
 exten => s,12,Return()
@@ -1116,9 +1116,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-43-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_41-43)
 exten => s,12,Return()
@@ -1143,9 +1143,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-44-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_42-44)
 exten => s,12,Return()
@@ -1170,9 +1170,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-45-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_43-45)
 exten => s,12,Return()
@@ -1197,9 +1197,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-46-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_44-46)
 exten => s,12,Return()
@@ -1224,9 +1224,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-47-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_45-47)
 exten => s,12,Return()
@@ -1251,9 +1251,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-48-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_46-48)
 exten => s,12,Return()
@@ -1278,9 +1278,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-49-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_47-49)
 exten => s,12,Return()
@@ -1305,9 +1305,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-50-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_48-50)
 exten => s,12,Return()
@@ -1332,9 +1332,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-51-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_49-51)
 exten => s,12,Return()
@@ -1359,9 +1359,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-52-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_50-52)
 exten => s,12,Return()
@@ -1386,9 +1386,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-53-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_51-53)
 exten => s,12,Return()
@@ -1413,9 +1413,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-54-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_52-54)
 exten => s,12,Return()
@@ -1440,9 +1440,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-55-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_53-55)
 exten => s,12,Return()
@@ -1467,9 +1467,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-56-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_54-56)
 exten => s,12,Return()
@@ -1494,9 +1494,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-57-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_55-57)
 exten => s,12,Return()
@@ -1521,9 +1521,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-58-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_56-58)
 exten => s,12,Return()
@@ -1548,9 +1548,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-59-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_57-59)
 exten => s,12,Return()
@@ -1575,9 +1575,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-60-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_58-60)
 exten => s,12,Return()
@@ -1602,9 +1602,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-61-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_59-61)
 exten => s,12,Return()
@@ -1629,9 +1629,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-62-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_60-62)
 exten => s,12,Return()
@@ -1656,9 +1656,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-63-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_61-63)
 exten => s,12,Return()
@@ -1683,9 +1683,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-64-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_62-64)
 exten => s,12,Return()
@@ -1710,9 +1710,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-65-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_63-65)
 exten => s,12,Return()
@@ -1737,9 +1737,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-66-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_64-66)
 exten => s,12,Return()
@@ -1764,9 +1764,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-67-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_65-67)
 exten => s,12,Return()
@@ -1791,9 +1791,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-68-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_66-68)
 exten => s,12,Return()
@@ -1818,9 +1818,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-69-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_67-69)
 exten => s,12,Return()
@@ -1845,9 +1845,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-70-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_68-70)
 exten => s,12,Return()
@@ -1872,9 +1872,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-71-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_69-71)
 exten => s,12,Return()
@@ -1899,9 +1899,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-72-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_70-72)
 exten => s,12,Return()
@@ -1926,9 +1926,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-73-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_71-73)
 exten => s,12,Return()
@@ -1953,9 +1953,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-74-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_72-74)
 exten => s,12,Return()
@@ -1980,9 +1980,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-75-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten_73-75)
 exten => s,12,Return()
@@ -2007,9 +2007,9 @@ exten => s,3,Set(LOCAL(timeout)=${ARG3})
 exten => s,4,Set(LOCAL(opts)=${ARG4})
 exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
-exten => s,7,Dial(${dev},${timeout},${opts})
-exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,7,Set(~~EXTEN~~=${EXTEN})
+exten => s,8,Dial(${dev},${timeout},${opts})
+exten => s,9,NoOp(${DIALSTATUS} was chosen)
 exten => s,10,Goto(sw-76-${DIALSTATUS},10)
 exten => s,11,NoOp(Finish switch-std-priv-exten-76)
 exten => s,12,Return()
@@ -2136,40 +2136,40 @@ exten => s,12,NoOp(Finish if-privacyManagerFailed-86)
 
 
 [homeline]
-exten => s,1(begin),Answer()
-exten => s,2,Set(repeatcount=0)
-exten => s,3,Zapateller(nocallerid)
-exten => s,4,PrivacyManager()
-exten => s,5,GotoIf($["${PRIVACYMGRSTATUS}" = "FAILED" ]?6:10)
-exten => s,6,TrySystem(/usr/bin/play /var/lib/asterisk/sounds/privmanfailed.gsm)
-exten => s,7,Gosub(std-priv-exten,s,1(Zap/3r1&Zap/5r1,2,25,mtw,telemarket,telemarket))
-exten => s,8,Hangup()
-exten => s,9,Return()
-exten => s,10,NoOp(Finish if-homeline-87)
-exten => s,11(postPriv),Gosub(fillcidname,s,1)
-exten => s,12,Set(CONFCIDNA=${CALLERID(name)})
-exten => s,13,Set(CONFCIDNU=${CALLERID(num)})
-exten => s,14,AGI(callall)
-exten => s,15,AGI(submit-announce.agi)
-exten => s,16,GotoIf($["${CALLERID(num)}" : "1" ]?17:18)
-exten => s,17,Gosub(callerid-bad,s,1)
-exten => s,18,NoOp(Finish if-homeline-88)
-exten => s,19,GotoIf($["${CALLERID(num)}"  = "7077577685" & "${CALLERID(name)}" : "Privacy Manager" ]?20:21)
-exten => s,20,Gosub(callerid-liar,s,1)
-exten => s,21,NoOp(Finish if-homeline-89)
-exten => s,22,TrySystem(/usr/local/bin/who-is-it ${CALLERID(num)} "${CALLERID(name)}"&)
-exten => s,23,Set(lds=${DB(playlds/${CALLERID(num)})})
-exten => s,24,GotoIf($["${lds}" = "1" ]?25:26)
-exten => s,25,SetMusicOnHold(mohlds)
-exten => s,26,NoOp(Finish if-homeline-90)
-exten => s,27,Set(direct=$[${DB(DirectCall/${CALLERID(num)})}])
-exten => s,28,GotoIf($["${direct}" != "" & ${direct} != 0 ]?29:37)
-exten => s,29,verbose(direct is XXX#${direct}XXXX)
-exten => s,30,Playback(greetings/direct)
-exten => s,31,Playback(/var/spool/asterisk/voicemail/default/${direct}/greet)
-exten => s,32,TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm)
-exten => s,33,TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/${direct}/greet.wav&)
-exten => s,34,Set(~~EXTEN~~=${EXTEN})
+exten => s,1,Set(~~EXTEN~~=${EXTEN})
+exten => s,2(begin),Answer()
+exten => s,3,Set(repeatcount=0)
+exten => s,4,Zapateller(nocallerid)
+exten => s,5,PrivacyManager()
+exten => s,6,GotoIf($["${PRIVACYMGRSTATUS}" = "FAILED" ]?7:11)
+exten => s,7,TrySystem(/usr/bin/play /var/lib/asterisk/sounds/privmanfailed.gsm)
+exten => s,8,Gosub(std-priv-exten,s,1(Zap/3r1&Zap/5r1,2,25,mtw,telemarket,telemarket))
+exten => s,9,Hangup()
+exten => s,10,Return()
+exten => s,11,NoOp(Finish if-homeline-87)
+exten => s,12(postPriv),Gosub(fillcidname,s,1)
+exten => s,13,Set(CONFCIDNA=${CALLERID(name)})
+exten => s,14,Set(CONFCIDNU=${CALLERID(num)})
+exten => s,15,AGI(callall)
+exten => s,16,AGI(submit-announce.agi)
+exten => s,17,GotoIf($["${CALLERID(num)}" : "1" ]?18:19)
+exten => s,18,Gosub(callerid-bad,s,1)
+exten => s,19,NoOp(Finish if-homeline-88)
+exten => s,20,GotoIf($["${CALLERID(num)}"  = "7077577685" & "${CALLERID(name)}" : "Privacy Manager" ]?21:22)
+exten => s,21,Gosub(callerid-liar,s,1)
+exten => s,22,NoOp(Finish if-homeline-89)
+exten => s,23,TrySystem(/usr/local/bin/who-is-it ${CALLERID(num)} "${CALLERID(name)}"&)
+exten => s,24,Set(lds=${DB(playlds/${CALLERID(num)})})
+exten => s,25,GotoIf($["${lds}" = "1" ]?26:27)
+exten => s,26,SetMusicOnHold(mohlds)
+exten => s,27,NoOp(Finish if-homeline-90)
+exten => s,28,Set(direct=$[${DB(DirectCall/${CALLERID(num)})}])
+exten => s,29,GotoIf($["${direct}" != "" & ${direct} != 0 ]?30:37)
+exten => s,30,verbose(direct is XXX#${direct}XXXX)
+exten => s,31,Playback(greetings/direct)
+exten => s,32,Playback(/var/spool/asterisk/voicemail/default/${direct}/greet)
+exten => s,33,TrySystem(/usr/bin/play /var/lib/asterisk/sounds/call-for.gsm)
+exten => s,34,TrySystem(/usr/bin/play /var/spool/asterisk/voicemail/default/${direct}/greet.wav&)
 exten => s,35,Goto(sw-92-${direct},10)
 exten => s,36,NoOp(Finish switch-if-homeline-91-92)
 exten => s,37,NoOp(Finish if-homeline-91)
diff --git a/res/ael/pval.c b/res/ael/pval.c
index 39f682ec19c9049c2e8dba51ddad616c66d0e246..274c8421f551465abe9c69741a795bba4b0d9b4a 100644
--- a/res/ael/pval.c
+++ b/res/ael/pval.c
@@ -3076,6 +3076,263 @@ static void gen_match_to_pattern(char *pattern, char *result)
 	*t++ = 0; /* cap it off */
 }
 
+/* ==== a set of routines to search for a switch statement contained in the pval description */
+
+int find_switch_item(pval *item);
+int contains_switch(pval *item);
+
+
+int find_switch_item(pval *item)
+{
+	switch ( item->type ) {
+	case PV_LOCALVARDEC:
+		/* fields: item->u1.str == string associated with this (word). */
+		break;
+		
+	case PV_WORD:
+		/* fields: item->u1.str == string associated with this (word). */
+		break;
+		
+	case PV_MACRO:
+		/* fields: item->u1.str     == name of macro
+		           item->u2.arglist == pval list of PV_WORD arguments of macro, as given by user
+				   item->u2.arglist->u1.str  == argument
+				   item->u2.arglist->next   == next arg
+
+				   item->u3.macro_statements == pval list of statements in macro body.
+		*/
+		/* had better not see this */
+		if (contains_switch(item->u3.macro_statements))
+			return 1;
+		break;
+			
+	case PV_CONTEXT:
+		/* fields: item->u1.str     == name of context
+		           item->u2.statements == pval list of statements in context body
+				   item->u3.abstract == int 1 if an abstract keyword were present
+		*/
+		/* had better not see this */
+		if (contains_switch(item->u2.statements))
+			return 1;
+		break;
+			
+	case PV_MACRO_CALL:
+		/* fields: item->u1.str     == name of macro to call
+		           item->u2.arglist == pval list of PV_WORD arguments of macro call, as given by user
+				   item->u2.arglist->u1.str  == argument
+				   item->u2.arglist->next   == next arg
+		*/
+		break;
+			
+	case PV_APPLICATION_CALL:
+		/* fields: item->u1.str     == name of application to call
+		           item->u2.arglist == pval list of PV_WORD arguments of macro call, as given by user
+				   item->u2.arglist->u1.str  == argument
+				   item->u2.arglist->next   == next arg
+		*/
+		break;
+			
+	case PV_CASE:
+		/* fields: item->u1.str     == value of case
+		           item->u2.statements == pval list of statements under the case
+		*/
+		/* had better not see this */
+		if (contains_switch(item->u2.statements))
+			return 1;
+		break;
+			
+	case PV_PATTERN:
+		/* fields: item->u1.str     == value of case
+		           item->u2.statements == pval list of statements under the case
+		*/
+		/* had better not see this */
+		if (contains_switch(item->u2.statements))
+			return 1;
+		break;
+			
+	case PV_DEFAULT:
+		/* fields: 
+		           item->u2.statements == pval list of statements under the case
+		*/
+		/* had better not see this */
+		if (contains_switch(item->u2.statements))
+			return 1;
+		break;
+			
+	case PV_CATCH:
+		/* fields: item->u1.str     == name of extension to catch
+		           item->u2.statements == pval list of statements in context body
+		*/
+		/* had better not see this */
+		if (contains_switch(item->u2.statements))
+			return 1;
+		break;
+			
+	case PV_SWITCHES:
+		/* fields: item->u1.list     == pval list of PV_WORD elements, one per entry in the list
+		*/
+		break;
+			
+	case PV_ESWITCHES:
+		/* fields: item->u1.list     == pval list of PV_WORD elements, one per entry in the list
+		*/
+		break;
+			
+	case PV_INCLUDES:
+		/* fields: item->u1.list     == pval list of PV_WORD elements, one per entry in the list
+		           item->u2.arglist  == pval list of 4 PV_WORD elements for time values
+		*/
+		break;
+			
+	case PV_STATEMENTBLOCK:
+		/* fields: item->u1.list     == pval list of statements in block, one per entry in the list
+		*/
+		if (contains_switch(item->u1.list) )
+			return 1;
+		break;
+			
+	case PV_VARDEC:
+		/* fields: item->u1.str     == variable name
+		           item->u2.val     == variable value to assign
+		*/
+		break;
+			
+	case PV_GOTO:
+		/* fields: item->u1.list     == pval list of PV_WORD target names, up to 3, in order as given by user.
+		           item->u1.list->u1.str  == where the data on a PV_WORD will always be.
+		*/
+		break;
+			
+	case PV_LABEL:
+		/* fields: item->u1.str     == label name
+		*/
+		break;
+			
+	case PV_FOR:
+		/* fields: item->u1.for_init     == a string containing the initalizer
+		           item->u2.for_test     == a string containing the loop test
+		           item->u3.for_inc      == a string containing the loop increment
+
+				   item->u4.for_statements == a pval list of statements in the for ()
+		*/
+		if (contains_switch(item->u4.for_statements))
+			return 1;
+		break;
+			
+	case PV_WHILE:
+		/* fields: item->u1.str        == the while conditional, as supplied by user
+
+				   item->u2.statements == a pval list of statements in the while ()
+		*/
+		if (contains_switch(item->u2.statements))
+			return 1;
+		break;
+			
+	case PV_BREAK:
+		/* fields: none
+		*/
+		break;
+			
+	case PV_RETURN:
+		/* fields: none
+		*/
+		break;
+			
+	case PV_CONTINUE:
+		/* fields: none
+		*/
+		break;
+			
+	case PV_IFTIME:
+		/* fields: item->u1.list        == there are 4 linked PV_WORDs here.
+
+				   item->u2.statements == a pval list of statements in the if ()
+				   item->u3.else_statements == a pval list of statements in the else
+											   (could be zero)
+		*/
+		if (contains_switch(item->u2.statements))
+			return 1;
+		if ( item->u3.else_statements ) {
+			if (contains_switch(item->u3.else_statements))
+				return 1;
+		}
+		break;
+			
+	case PV_RANDOM:
+		/* fields: item->u1.str        == the random number expression, as supplied by user
+
+				   item->u2.statements == a pval list of statements in the if ()
+				   item->u3.else_statements == a pval list of statements in the else
+											   (could be zero)
+		*/
+		if (contains_switch(item->u2.statements))
+			return 1;
+		if ( item->u3.else_statements ) {
+			if (contains_switch(item->u3.else_statements))
+				return 1;
+		}
+		break;
+			
+	case PV_IF:
+		/* fields: item->u1.str        == the if conditional, as supplied by user
+
+				   item->u2.statements == a pval list of statements in the if ()
+				   item->u3.else_statements == a pval list of statements in the else
+											   (could be zero)
+		*/
+		if (contains_switch(item->u2.statements))
+			return 1;
+		if ( item->u3.else_statements ) {
+			if (contains_switch(item->u3.else_statements))
+				return 1;
+		}
+		break;
+			
+	case PV_SWITCH:
+		/* fields: item->u1.str        == the switch expression
+
+				   item->u2.statements == a pval list of statements in the switch, 
+				   							(will be case statements, most likely!)
+		*/
+		return 1; /* JACKPOT */
+		break;
+			
+	case PV_EXTENSION:
+		/* fields: item->u1.str        == the extension name, label, whatever it's called
+
+				   item->u2.statements == a pval list of statements in the extension
+				   item->u3.hints      == a char * hint argument
+				   item->u4.regexten   == an int boolean. non-zero says that regexten was specified
+		*/
+		if (contains_switch(item->u2.statements))
+			return 1;
+		break;
+			
+	case PV_IGNOREPAT:
+		/* fields: item->u1.str        == the ignorepat data
+		*/
+		break;
+			
+	case PV_GLOBALS:
+		/* fields: item->u1.statements     == pval list of statements, usually vardecs
+		*/
+		break;
+	}
+	return 0;
+}
+
+int contains_switch(pval *item)
+{
+	pval *i;
+	
+	for (i=item; i; i=i->next) {
+		if (find_switch_item(i))
+			return 1;
+	}
+	return 0;
+}
+
+
 static void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct ael_extension *mother_exten, struct ast_context *this_context )
 {
 	pval *p,*p2,*p3;
@@ -3098,6 +3355,46 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 	struct ael_priority *loop_continue_save;
 	struct ael_extension *switch_case,*switch_null;
 	
+	if ((mother_exten && !mother_exten->checked_switch) || (exten && !exten->checked_switch)) {
+		if (contains_switch(statement)) { /* only run contains_switch if you haven't checked before */
+			if (mother_exten) {
+				if (!mother_exten->has_switch) {
+					switch_set = new_prio();
+					switch_set->type = AEL_APPCALL;
+					switch_set->app = strdup("Set");
+					switch_set->appargs = strdup("~~EXTEN~~=${EXTEN}");
+					linkprio(exten, switch_set, mother_exten);
+					mother_exten->has_switch = 1;
+					mother_exten->checked_switch = 1;
+					if (exten) {
+						exten->has_switch = 1;
+						exten->checked_switch = 1;
+					}
+				}
+			} else if (exten) {
+				if (!exten->has_switch) {
+					switch_set = new_prio();
+					switch_set->type = AEL_APPCALL;
+					switch_set->app = strdup("Set");
+					switch_set->appargs = strdup("~~EXTEN~~=${EXTEN}");
+					linkprio(exten, switch_set, mother_exten);
+					exten->has_switch = 1;
+					exten->checked_switch = 1;
+					if (mother_exten) {
+						mother_exten->has_switch = 1;
+						mother_exten->checked_switch = 1;
+					}
+				}
+			}
+		} else {
+			if (mother_exten) {
+				mother_exten->checked_switch = 1;
+			}
+			if (exten) {
+				exten->checked_switch = 1;
+			}
+		}
+	}
 	for (p=statement; p; p=p->next) {
 		switch (p->type) {
 		case PV_VARDEC:
@@ -3121,7 +3418,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 			pr->origin = p;
 			linkprio(exten, pr, mother_exten);
 			break;
-
+			
 		case PV_GOTO:
 			pr = new_prio();
 			pr->type = AEL_APPCALL;
@@ -3344,21 +3641,6 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 			loop_break_save = exten->loop_break; /* save them, then restore before leaving */
 			loop_continue_save = exten->loop_continue;
 			snprintf(new_label,sizeof(new_label),"sw-%s-%d", label, control_statement_count);
-			if ((mother_exten && !mother_exten->has_switch)) {
-				switch_set = new_prio();
-				switch_set->type = AEL_APPCALL;
-				switch_set->app = strdup("Set");
-				switch_set->appargs = strdup("~~EXTEN~~=${EXTEN}");
-				linkprio(exten, switch_set, mother_exten);
-				mother_exten->has_switch = 1;
-			} else if ((exten && !exten->has_switch)) {
-				switch_set = new_prio();
-				switch_set->type = AEL_APPCALL;
-				switch_set->app = strdup("Set");
-				switch_set->appargs = strdup("~~EXTEN~~=${EXTEN}");
-				linkprio(exten, switch_set, exten);
-				exten->has_switch = 1;
-			}
 			switch_test = new_prio();
 			switch_end = new_prio();
 			switch_test->type = AEL_APPCALL;
@@ -3384,6 +3666,14 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 				if (p2->type == PV_CASE) {
 					/* ok, generate a extension and link it in */
 					switch_case = new_exten();
+					if (mother_exten && mother_exten->checked_switch) {
+						switch_case->has_switch = mother_exten->has_switch;
+						switch_case->checked_switch = mother_exten->checked_switch;
+					}
+					if (exten && exten->checked_switch) {
+						switch_case->has_switch = exten->has_switch;
+						switch_case->checked_switch = exten->checked_switch;
+					}
 					switch_case->context = this_context;
 					switch_case->is_switch = 1;
 					/* the break/continue locations are inherited from parent */
@@ -3448,6 +3738,14 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 				} else if (p2->type == PV_PATTERN) {
 					/* ok, generate a extension and link it in */
 					switch_case = new_exten();
+					if (mother_exten && mother_exten->checked_switch) {
+						switch_case->has_switch = mother_exten->has_switch;
+						switch_case->checked_switch = mother_exten->checked_switch;
+					}
+					if (exten && exten->checked_switch) {
+						switch_case->has_switch = exten->has_switch;
+						switch_case->checked_switch = exten->checked_switch;
+					}
 					switch_case->context = this_context;
 					switch_case->is_switch = 1;
 					/* the break/continue locations are inherited from parent */
@@ -3511,6 +3809,14 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 				} else if (p2->type == PV_DEFAULT) {
 					/* ok, generate a extension and link it in */
 					switch_case = new_exten();
+					if (mother_exten && mother_exten->checked_switch) {
+						switch_case->has_switch = mother_exten->has_switch;
+						switch_case->checked_switch = mother_exten->checked_switch;
+					}
+					if (exten && exten->checked_switch) {
+						switch_case->has_switch = exten->has_switch;
+						switch_case->checked_switch = exten->checked_switch;
+					}
 					switch_case->context = this_context;
 					switch_case->is_switch = 1;
 					
@@ -3520,6 +3826,14 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 
 					default_exists++;
 					switch_null = new_exten();
+					if (mother_exten && mother_exten->checked_switch) {
+						switch_null->has_switch = mother_exten->has_switch;
+						switch_null->checked_switch = mother_exten->checked_switch;
+					}
+					if (exten && exten->checked_switch) {
+						switch_null->has_switch = exten->has_switch;
+						switch_null->checked_switch = exten->checked_switch;
+					}
 					switch_null->context = this_context;
 					switch_null->is_switch = 1;
 					switch_empty = new_prio();
@@ -3783,6 +4097,15 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 			/* generate an extension with name of catch, put all catch stats
 			   into this exten! */
 			switch_case = new_exten();
+			if (mother_exten && mother_exten->checked_switch) {
+				switch_case->has_switch = mother_exten->has_switch;
+				switch_case->checked_switch = mother_exten->checked_switch;
+			}
+			if (exten && exten->checked_switch) {
+				switch_case->has_switch = exten->has_switch;
+				switch_case->checked_switch = exten->checked_switch;
+			}
+			
 			switch_case->context = this_context;
 			linkexten(exten,switch_case);
 			switch_case->name = strdup(p->u1.str);