diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c
index a36f54a7a1c1fc1cba4255905cee8fba37b02039..8dff0d76c156b5502de89e612403bf4bcdbfd4f4 100644
--- a/src/sbbs3/js_internal.c
+++ b/src/sbbs3/js_internal.c
@@ -1745,3 +1745,37 @@ void js_PrepareToExecute(JSContext *cx, JSObject *obj, const char *filename, con
 	_set_invalid_parameter_handler(msvc_invalid_parameter_handler);
 #endif
 }
+
+JSBool
+js_CreateArrayOfStrings(JSContext* cx, JSObject* parent, const char* name, const char* str[],uintN flags)
+{
+	JSObject*	array;
+	JSString*	js_str;
+	jsval		val;
+	size_t		i;
+	jsuint		len=0;
+
+	if(JS_GetProperty(cx,parent,name,&val) && val!=JSVAL_VOID)
+		array=JSVAL_TO_OBJECT(val);
+	else
+		if((array=JS_NewArrayObject(cx, 0, NULL))==NULL)	/* Assertion here, in _heap_alloc_dbg, June-21-2004 */
+			return(JS_FALSE);								/* Caused by nntpservice.js? */
+
+	if(!JS_DefineProperty(cx, parent, name, OBJECT_TO_JSVAL(array)
+		,NULL,NULL,flags))
+		return(JS_FALSE);
+
+	if(array == NULL || !JS_GetArrayLength(cx, array, &len))
+		return(JS_FALSE);
+
+	for(i=0;str[i]!=NULL;i++) {
+		if((js_str = JS_NewStringCopyZ(cx, str[i]))==NULL)
+			break;
+		val = STRING_TO_JSVAL(js_str);
+		if(!JS_SetElement(cx, array, len+i, &val))
+			break;
+	}
+
+	return(JS_TRUE);
+}
+
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 48f4a9a64c8b741f414bbd6672f00dcdf16b1e5c..4a8391494e2762a2e462aaf871a403e5286dc299 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -548,39 +548,6 @@ void* js_GetClassPrivate(JSContext *cx, JSObject *obj, JSClass* cls)
 	return ret;
 }
 
-JSBool
-js_CreateArrayOfStrings(JSContext* cx, JSObject* parent, const char* name, const char* str[],uintN flags)
-{
-	JSObject*	array;
-	JSString*	js_str;
-	jsval		val;
-	size_t		i;
-	jsuint		len=0;
-
-	if(JS_GetProperty(cx,parent,name,&val) && val!=JSVAL_VOID)
-		array=JSVAL_TO_OBJECT(val);
-	else
-		if((array=JS_NewArrayObject(cx, 0, NULL))==NULL)	/* Assertion here, in _heap_alloc_dbg, June-21-2004 */
-			return(JS_FALSE);								/* Caused by nntpservice.js? */
-
-	if(!JS_DefineProperty(cx, parent, name, OBJECT_TO_JSVAL(array)
-		,NULL,NULL,flags))
-		return(JS_FALSE);
-
-	if(array == NULL || !JS_GetArrayLength(cx, array, &len))
-		return(JS_FALSE);
-
-	for(i=0;str[i]!=NULL;i++) {
-		if((js_str = JS_NewStringCopyZ(cx, str[i]))==NULL)
-			break;
-		val = STRING_TO_JSVAL(js_str);
-		if(!JS_SetElement(cx, array, len+i, &val))
-			break;
-	}
-
-	return(JS_TRUE);
-}
-
 /* Convert from Synchronet-specific jsSyncMethodSpec to JSAPI's JSFunctionSpec */
 
 JSBool
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index e6f1b141bf603274f81bbfd813c942b710c98fa7..f012a137f8b5ed7d11a50013aefb38c6616a06c5 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1490,8 +1490,6 @@ extern "C" {
 	DLLEXPORT JSBool	js_DefineSyncProperties(JSContext* cx, JSObject* obj, jsSyncPropertySpec*);
 	DLLEXPORT JSBool	js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySpec* props, jsSyncMethodSpec* funcs, jsConstIntSpec* consts, int flags);
 	DLLEXPORT JSBool	js_DefineConstIntegers(JSContext* cx, JSObject* obj, jsConstIntSpec*, int flags);
-	DLLEXPORT JSBool	js_CreateArrayOfStrings(JSContext* cx, JSObject* parent
-														,const char* name, const char* str[], unsigned flags);
 	DLLEXPORT void*		js_GetClassPrivate(JSContext*, JSObject*, JSClass*);
 
 	DLLEXPORT bool	js_CreateCommonObjects(JSContext* cx
@@ -1547,6 +1545,8 @@ extern "C" {
 	DLLEXPORT char*		js_getstring(JSContext *cx, JSString *str);
 	DLLEXPORT JSBool	js_handle_events(JSContext *cx, js_callback_t *cb, volatile bool *terminated);
 	DLLEXPORT JSBool	js_clear_event(JSContext *cx, jsval *arglist, js_callback_t *cb, enum js_event_type et, int ididx);
+	DLLEXPORT JSBool	js_CreateArrayOfStrings(JSContext* cx, JSObject* parent
+														,const char* name, const char* str[], unsigned flags);
 
 	/* js_system.c */
 	DLLEXPORT JSObject* js_CreateSystemObject(JSContext* cx, JSObject* parent