diff --git a/src/p_spec.c b/src/p_spec.c
index 7abf8cbf4cb30f9aaaa2ce96521c1a027048e553..4e833ba6d7a66a806a03c128a74ef7f0158e1fe7 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -1445,7 +1445,6 @@ void P_RunNightsCapsuleTouchExecutors(mobj_t *actor, boolean entering, boolean e
 static inline void P_InitTagLists(void)
 {
 	register size_t i;
-	size_t j;
 
 	for (i = numsectors - 1; i != (size_t)-1; i--)
 	{
@@ -1461,27 +1460,7 @@ static inline void P_InitTagLists(void)
 		lines[j].firsttag = (INT32)i;
 	}
 
-	for (i = 0; i < MAXTAGS; i++)
-	{
-		tags_sectors[i] = NULL;
-		tags_lines[i] = NULL;
-		tags_mapthings[i] = NULL;
-	}
-	for (i = 0; i < numsectors; i++)
-	{
-		for (j = 0; j < sectors[i].tags.count; j++)
-			Taglist_AddToSectors(sectors[i].tags.tags[j], i);
-	}
-	for (i = 0; i < numlines; i++)
-	{
-		for (j = 0; j < lines[i].tags.count; j++)
-			Taglist_AddToLines(lines[i].tags.tags[j], i);
-	}
-	for (i = 0; i < nummapthings; i++)
-	{
-		for (j = 0; j < mapthings[i].tags.count; j++)
-			Taglist_AddToMapthings(mapthings[i].tags.tags[j], i);
-	}
+	Taglist_InitGlobalTables();
 }
 
 /** Finds minimum light from an adjacent sector.
diff --git a/src/taglist.c b/src/taglist.c
index 0b7c8e23b787d401c90ad6e2e00f59361e633fc5..99d23bf5f3706af317685c16d5c7c1635eb5c34f 100644
--- a/src/taglist.c
+++ b/src/taglist.c
@@ -63,7 +63,7 @@ boolean Tag_Compare (const taglist_t* list1, const taglist_t* list2)
 	return true;
 }
 
-void Taglist_AddToSectors (const mtag_t tag, const size_t itemid)
+static void Taglist_AddToSectors (const mtag_t tag, const size_t itemid)
 {
 	taggroup_t* tagelems;
 
@@ -79,7 +79,7 @@ void Taglist_AddToSectors (const mtag_t tag, const size_t itemid)
 	tagelems->elements[tagelems->count - 1] = itemid;
 }
 
-void Taglist_AddToLines (const mtag_t tag, const size_t itemid)
+static void Taglist_AddToLines (const mtag_t tag, const size_t itemid)
 {
 	taggroup_t* tagelems;
 
@@ -95,7 +95,7 @@ void Taglist_AddToLines (const mtag_t tag, const size_t itemid)
 	tagelems->elements[tagelems->count - 1] = itemid;
 }
 
-void Taglist_AddToMapthings (const mtag_t tag, const size_t itemid)
+static void Taglist_AddToMapthings (const mtag_t tag, const size_t itemid)
 {
 	taggroup_t* tagelems;
 
@@ -111,6 +111,33 @@ void Taglist_AddToMapthings (const mtag_t tag, const size_t itemid)
 	tagelems->elements[tagelems->count - 1] = itemid;
 }
 
+void Taglist_InitGlobalTables(void)
+{
+	size_t i, j;
+
+	for (i = 0; i < MAXTAGS; i++)
+	{
+		tags_sectors[i] = NULL;
+		tags_lines[i] = NULL;
+		tags_mapthings[i] = NULL;
+	}
+	for (i = 0; i < numsectors; i++)
+	{
+		for (j = 0; j < sectors[i].tags.count; j++)
+			Taglist_AddToSectors(sectors[i].tags.tags[j], i);
+	}
+	for (i = 0; i < numlines; i++)
+	{
+		for (j = 0; j < lines[i].tags.count; j++)
+			Taglist_AddToLines(lines[i].tags.tags[j], i);
+	}
+	for (i = 0; i < nummapthings; i++)
+	{
+		for (j = 0; j < mapthings[i].tags.count; j++)
+			Taglist_AddToMapthings(mapthings[i].tags.tags[j], i);
+	}
+}
+
 INT32 Tag_Iterate_Sectors (const mtag_t tag, const size_t p)
 {
 	if (tag == MTAG_GLOBAL)
diff --git a/src/taglist.h b/src/taglist.h
index c22f9f2778c54e05cef4849568ba3922400a478c..b14c316ffa3492e7f8de1f1d65ce27b4c1615e2e 100644
--- a/src/taglist.h
+++ b/src/taglist.h
@@ -33,9 +33,7 @@ taggroup_t* tags_sectors[MAXTAGS + 1];
 taggroup_t* tags_lines[MAXTAGS + 1];
 taggroup_t* tags_mapthings[MAXTAGS + 1];
 
-void Taglist_AddToSectors (const mtag_t tag, const size_t itemid);
-void Taglist_AddToLines (const mtag_t tag, const size_t itemid);
-void Taglist_AddToMapthings (const mtag_t tag, const size_t itemid);
+void Taglist_InitGlobalTables(void);
 
 INT32 Tag_Iterate_Sectors (const mtag_t tag, const size_t p);
 INT32 Tag_Iterate_Lines (const mtag_t tag, const size_t p);