diff --git a/src/sbbs3/js_branch.c b/src/sbbs3/js_branch.c
deleted file mode 100644
index d676341752cc5dc4fc80e5f5266cfafc2e3e7565..0000000000000000000000000000000000000000
--- a/src/sbbs3/js_branch.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* js_branch.c */
-
-/* Synchronet "branch" object, for JavaScript BranchCallback control */
-
-/* $Id$ */
-
-/****************************************************************************
- * @format.tab-size 4		(Plain Text/Source Code File Header)			*
- * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
- *																			*
- * Copyright 2003 Rob Swindell - http://www.synchro.net/copyright.html		*
- *																			*
- * This program is free software; you can redistribute it and/or			*
- * modify it under the terms of the GNU General Public License				*
- * as published by the Free Software Foundation; either version 2			*
- * of the License, or (at your option) any later version.					*
- * See the GNU General Public License for more details: gpl.txt or			*
- * http://www.fsf.org/copyleft/gpl.html										*
- *																			*
- * Anonymous FTP access to the most recent released source is available at	*
- * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net	*
- *																			*
- * Anonymous CVS access to the development source and modification history	*
- * is available at cvs.synchro.net:/cvsroot/sbbs, example:					*
- * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login			*
- *     (just hit return, no password is necessary)							*
- * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src		*
- *																			*
- * For Synchronet coding style and modification guidelines, see				*
- * http://www.synchro.net/source.html										*
- *																			*
- * You are encouraged to submit any modifications (preferably in Unix diff	*
- * format) via e-mail to mods@synchro.net									*
- *																			*
- * Note: If this box doesn't appear square, then you need to fix your tabs.	*
- ****************************************************************************/
-
-#include "sbbs.h"
-
-#include <jscntxt.h>	/* Needed for Context-private data structure */
-
-enum {
-	 BRANCH_PROP_COUNTER
-	,BRANCH_PROP_LIMIT
-	,BRANCH_PROP_YIELD_INTERVAL
-	,BRANCH_PROP_GC_INTERVAL
-#ifdef jscntxt_h___
-	,BRANCH_PROP_GC_BYTES
-	,BRANCH_PROP_GC_LASTBYTES
-	,BRANCH_PROP_GC_MAXBYTES
-	,BRANCH_PROP_GC_COUNTER
-#endif
-};
-
-static JSBool js_branch_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
-{
-    jsint			tiny;
-	js_branch_t*	branch;
-
-	if((branch=(js_branch_t*)JS_GetPrivate(cx,obj))==NULL)
-		return(JS_FALSE);
-
-    tiny = JSVAL_TO_INT(id);
-
-	switch(tiny) {
-		case BRANCH_PROP_COUNTER:
-			JS_NewNumberValue(cx,branch->counter,vp);
-			break;
-		case BRANCH_PROP_LIMIT:
-			JS_NewNumberValue(cx,branch->limit,vp);
-			break;
-		case BRANCH_PROP_YIELD_INTERVAL:
-			JS_NewNumberValue(cx,branch->yield_freq,vp);
-			break;
-		case BRANCH_PROP_GC_INTERVAL:
-			JS_NewNumberValue(cx,branch->gc_freq,vp);
-			break;
-#ifdef jscntxt_h___
-		case BRANCH_PROP_GC_BYTES:
-			JS_NewNumberValue(cx,cx->runtime->gcBytes,vp);
-			break;
-		case BRANCH_PROP_GC_LASTBYTES:
-			JS_NewNumberValue(cx,cx->runtime->gcLastBytes,vp);
-			break;
-		case BRANCH_PROP_GC_MAXBYTES:
-			JS_NewNumberValue(cx,cx->runtime->gcMaxBytes,vp);
-			break;
-		case BRANCH_PROP_GC_COUNTER:
-			JS_NewNumberValue(cx,cx->runtime->gcNumber,vp);
-			break;
-#endif
-	}
-
-	return(JS_TRUE);
-}
-
-static JSBool js_branch_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
-{
-    jsint			tiny;
-	js_branch_t*	branch;
-
-	if((branch=(js_branch_t*)JS_GetPrivate(cx,obj))==NULL)
-		return(JS_FALSE);
-
-    tiny = JSVAL_TO_INT(id);
-
-	switch(tiny) {
-		case BRANCH_PROP_COUNTER:
-			JS_ValueToInt32(cx, *vp, (int32*)&branch->counter);
-			break;
-		case BRANCH_PROP_LIMIT:
-			JS_ValueToInt32(cx, *vp, (int32*)&branch->limit);
-			break;
-		case BRANCH_PROP_GC_INTERVAL:
-			JS_ValueToInt32(cx, *vp, (int32*)&branch->gc_freq);
-			break;
-		case BRANCH_PROP_YIELD_INTERVAL:
-			JS_ValueToInt32(cx, *vp, (int32*)&branch->yield_freq);
-			break;
-	}
-
-	return(TRUE);
-}
-
-#define GC_PROP_FLAGS	JSPROP_ENUMERATE|JSPROP_READONLY
-
-static struct JSPropertySpec js_branch_properties[] = {
-/*		 name,				tinyid,						flags,				getter,	setter	*/
-
-	{	"counter",			BRANCH_PROP_COUNTER,		JSPROP_ENUMERATE,	NULL,	NULL },
-	{	"limit",			BRANCH_PROP_LIMIT,			JSPROP_ENUMERATE,	NULL,	NULL },
-	{	"yield_freq",		BRANCH_PROP_YIELD_INTERVAL,	0 /* ALIAS */,		NULL,	NULL },
-	{	"yield_interval",	BRANCH_PROP_YIELD_INTERVAL,	JSPROP_ENUMERATE,	NULL,	NULL },
-	{	"gc_freq",			BRANCH_PROP_GC_INTERVAL,	0 /* ALIAS */,		NULL,	NULL },
-	{	"gc_interval",		BRANCH_PROP_GC_INTERVAL,	JSPROP_ENUMERATE,	NULL,	NULL },
-#ifdef jscntxt_h___
-	{	"gc_bytes",			BRANCH_PROP_GC_BYTES,		GC_PROP_FLAGS,		NULL,	NULL },
-	{	"gc_last_bytes",	BRANCH_PROP_GC_LASTBYTES,	GC_PROP_FLAGS,		NULL,	NULL },
-	{	"gc_max_bytes",		BRANCH_PROP_GC_MAXBYTES,	GC_PROP_FLAGS,		NULL,	NULL },
-	{	"gc_counter",		BRANCH_PROP_GC_COUNTER,		GC_PROP_FLAGS,		NULL,	NULL },
-#endif
-	{0}
-};
-
-#ifdef _DEBUG
-static char* branch_prop_desc[] = {
-	 "counter incremented for each branch"
-	,"maximum number of branches, used for infinite-loop detection (0=disabled)"
-	,"interval of periodic garbage collection (lower number=higher frequency, 0=disabled)"
-	,"interval of periodic time-slice yields (lower number=higher frequency, 0=disabled)"
-#ifdef jscntxt_h___
-	,"number of bytes currently in heap"
-	,"number of bytes in heap after last garbage collection"
-	,"maximum number of bytes in heap"
-	,"number of garbage collections"
-#endif
-	,NULL
-};
-#endif
-
-
-static JSClass js_branch_class = {
-     "Branch"				/* name			*/
-    ,JSCLASS_HAS_PRIVATE	/* flags		*/
-	,JS_PropertyStub		/* addProperty	*/
-	,JS_PropertyStub		/* delProperty	*/
-	,js_branch_get			/* getProperty	*/
-	,js_branch_set			/* setProperty	*/
-	,JS_EnumerateStub		/* enumerate	*/
-	,JS_ResolveStub			/* resolve		*/
-	,JS_ConvertStub			/* convert		*/
-	,JS_FinalizeStub		/* finalize		*/
-};
-
-JSObject* DLLCALL js_CreateBranchObject(JSContext* cx, JSObject* parent, js_branch_t* branch)
-{
-	JSObject*	obj;
-
-	if((obj = JS_DefineObject(cx, parent, "branch", &js_branch_class, NULL
-		,JSPROP_ENUMERATE|JSPROP_READONLY))==NULL)
-		return(NULL);
-
-	if(!JS_SetPrivate(cx, obj, branch))	/* Store a pointer to js_branch_t */
-		return(NULL);
-
-	if(!JS_DefineProperties(cx, obj, js_branch_properties))	/* expose them */
-		return(NULL);
-
-#ifdef _DEBUG
-	js_DescribeObject(cx,obj,"JavaScript execution branch control object");
-	js_CreateArrayOfStrings(cx, obj, "_property_desc_list", branch_prop_desc, JSPROP_READONLY);
-#endif
-
-	return(obj);
-}