diff --git a/UPGRADE.txt b/UPGRADE.txt
index a5f9cf659066ba9d545bf3ebd01cab90da8692d1..600a1d42f3d428a921f18a590c78854c9d962599 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -1,6 +1,11 @@
 Information for Upgrading From Previous Asterisk Releases
 =========================================================
 
+PBX Core:
+
+* The (very old and undocumented) ability to use BYEXTENSION for dialing
+  instead of ${EXTEN} has been removed.
+
 Command Line Interface:
 
 * 'show channels concise', designed to be used by applications that will parse
diff --git a/apps/app_dial.c b/apps/app_dial.c
index d6df884e51444f84591cf6ba14fba4491ad6f37e..b77547d881d98b9b4e3be687c2551c63d800b95e 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -747,10 +747,8 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 	int numnochan = 0;
 	int cause;
 	char numsubst[AST_MAX_EXTENSION];
-	char restofit[AST_MAX_EXTENSION];
 	char cidname[AST_MAX_EXTENSION];
 	char toast[80];
-	char *newnum;
 	char *l;
 	int privdb_val=0;
 	unsigned int calldurationlimit=0;
@@ -1007,14 +1005,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 			ast_set2_flag(tmp, args.url, DIAL_NOFORWARDHTML);	
 		}
 		ast_copy_string(numsubst, number, sizeof(numsubst));
-		/* If we're dialing by extension, look at the extension to know what to dial */
-		if ((newnum = strstr(numsubst, "BYEXTENSION"))) {
-			/* strlen("BYEXTENSION") == 11 */
-			ast_copy_string(restofit, newnum + 11, sizeof(restofit));
-			snprintf(newnum, sizeof(numsubst) - (newnum - numsubst), "%s%s", chan->exten,restofit);
-			if (option_debug)
-				ast_log(LOG_DEBUG, "Dialing by extension %s\n", numsubst);
-		}
 		/* Request the peer */
 		tmp->chan = ast_request(tech, chan->nativeformats, numsubst, &cause);
 		if (!tmp->chan) {
diff --git a/apps/app_parkandannounce.c b/apps/app_parkandannounce.c
index 181a93fe54fdaaeadb1b0adb565ba82d20d92443..1f7393930259bd08f07780f71f4b29cb8977dc9e 100644
--- a/apps/app_parkandannounce.c
+++ b/apps/app_parkandannounce.c
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -164,9 +164,9 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data)
 	}
 	/* At this point we have a priority and maybe an extension and a context */
 	chan->priority = atoi(priority);
-	if(exten && strcasecmp(exten, "BYEXTENSION"))
+	if (exten)
 		strncpy(chan->exten, exten, sizeof(chan->exten)-1);
-	if(context)
+	if (context)
 		strncpy(chan->context, context, sizeof(chan->context)-1);
 	} else {  /* increment the priority by default*/
 		chan->priority++;
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 25a789b44a9a60a437851a9d5c2b1b3c1f78d933..043d9797dab2492af73efc1e01ec283f336ab4e8 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -2018,11 +2018,9 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
 	struct member *cur;
 	struct callattempt *outgoing=NULL; /* the queue we are building */
 	int to;
-	char restofit[AST_MAX_EXTENSION];
 	char oldexten[AST_MAX_EXTENSION]="";
 	char oldcontext[AST_MAX_CONTEXT]="";
 	char queuename[256]="";
-	char *newnum;
 	struct ast_channel *peer;
 	struct ast_channel *which;
 	struct callattempt *lpeer;
@@ -2103,14 +2101,6 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
 		tmp->oldstatus = cur->status;
 		tmp->lastcall = cur->lastcall;
 		ast_copy_string(tmp->interface, cur->interface, sizeof(tmp->interface));
-		/* If we're dialing by extension, look at the extension to know what to dial */
-		if ((newnum = strstr(tmp->interface, "/BYEXTENSION"))) {
-			newnum++;
-			strncpy(restofit, newnum + strlen("BYEXTENSION"), sizeof(restofit) - 1);
-			snprintf(newnum, sizeof(tmp->interface) - (newnum - tmp->interface), "%s%s", qe->chan->exten, restofit);
-			if (option_debug)
-				ast_log(LOG_DEBUG, "Dialing by extension %s\n", tmp->interface);
-		}
 		/* Special case: If we ring everyone, go ahead and ring them, otherwise
 		   just calculate their metric for the appropriate strategy */
 		if (!calc_metric(qe->parent, cur, x++, qe, tmp)) {
diff --git a/apps/app_rpt.c b/apps/app_rpt.c
index a9c53ba7fc966e4e06a74c3e6de512c23b0d8759..d4e8177994a27c71c7d1de87b8bad802bd83bad0 100644
--- a/apps/app_rpt.c
+++ b/apps/app_rpt.c
@@ -6452,9 +6452,9 @@ static int rpt_exec(struct ast_channel *chan, void *data)
 		}
 		/* At this point we have a priority and maybe an extension and a context */
 		chan->priority = atoi(priority);
-		if(exten && strcasecmp(exten, "BYEXTENSION"))
+		if (exten)
 			strncpy(chan->exten, exten, sizeof(chan->exten)-1);
-		if(context)
+		if (context)
 			strncpy(chan->context, context, sizeof(chan->context)-1);
 		} else {  /* increment the priority by default*/
 			chan->priority++;
diff --git a/pbx.c b/pbx.c
index d28b9e8c05e61b2d70b2f95e174b306c382f3334..d4b17dbf738e2ae9dbe90dccf9bc9b97a57dc3b4 100644
--- a/pbx.c
+++ b/pbx.c
@@ -6040,7 +6040,7 @@ int ast_parseable_goto(struct ast_channel *chan, const char *goto_string)
 		pri++;
 	}
 	if (sscanf(pri, "%d", &ipri) != 1) {
-		if ((ipri = ast_findlabel_extension(chan, context ? context : chan->context, (exten && strcasecmp(exten, "BYEXTENSION")) ? exten : chan->exten, 
+		if ((ipri = ast_findlabel_extension(chan, context ? context : chan->context, exten ? exten : chan->exten, 
 			pri, chan->cid.cid_num)) < 1) {
 			ast_log(LOG_WARNING, "Priority '%s' must be a number > 0, or valid label\n", pri);
 			return -1;
@@ -6049,9 +6049,6 @@ int ast_parseable_goto(struct ast_channel *chan, const char *goto_string)
 	} 
 	/* At this point we have a priority and maybe an extension and a context */
 
-	if (exten && !strcasecmp(exten, "BYEXTENSION"))
-		exten = NULL;
-
 	if (mode) 
 		ipri = chan->priority + (ipri * mode);