diff --git a/bricktracker/set_list.py b/bricktracker/set_list.py
index 6c3b9283..deaf269b 100644
--- a/bricktracker/set_list.py
+++ b/bricktracker/set_list.py
@@ -1,11 +1,14 @@
-from typing import Any, Self
+from typing import Any, Self, Union
 
 from flask import current_app
 
 from .record_list import BrickRecordList
+from .set_owner import BrickSetOwner
 from .set_owner_list import BrickSetOwnerList
 from .set_status_list import BrickSetStatusList
 from .set_storage import BrickSetStorage
+from .set_storage_list import BrickSetStorageList
+from .set_tag import BrickSetTag
 from .set_tag_list import BrickSetTagList
 from .set import BrickSet
 
@@ -163,3 +166,22 @@ class BrickSetList(BrickRecordList[BrickSet]):
         self.list(override_query=self.using_storage_query)
 
         return self
+
+
+# Helper to build the metadata lists
+def set_metadata_lists(
+    as_class: bool = False
+) -> dict[
+    str,
+    Union[
+        list[BrickSetOwner],
+        list[BrickSetStorage],
+        BrickSetStorageList,
+        list[BrickSetTag]
+    ]
+]:
+    return {
+        'brickset_owners': BrickSetOwnerList.list(),
+        'brickset_storages': BrickSetStorageList.list(as_class=as_class),
+        'brickset_tags': BrickSetTagList.list(),
+    }
diff --git a/bricktracker/views/add.py b/bricktracker/views/add.py
index fb11efe4..db4671e8 100644
--- a/bricktracker/views/add.py
+++ b/bricktracker/views/add.py
@@ -3,9 +3,7 @@ from flask_login import login_required
 
 from ..configuration_list import BrickConfigurationList
 from .exceptions import exception_handler
-from ..set_owner_list import BrickSetOwnerList
-from ..set_storage_list import BrickSetStorageList
-from ..set_tag_list import BrickSetTagList
+from ..set_list import set_metadata_lists
 from ..socket import MESSAGES
 
 add_page = Blueprint('add', __name__, url_prefix='/add')
@@ -20,12 +18,10 @@ def add() -> str:
 
     return render_template(
         'add.html',
-        brickset_owners=BrickSetOwnerList.list(),
-        brickset_storages=BrickSetStorageList.list(),
-        brickset_tags=BrickSetTagList.list(),
         path=current_app.config['SOCKET_PATH'],
         namespace=current_app.config['SOCKET_NAMESPACE'],
-        messages=MESSAGES
+        messages=MESSAGES,
+        **set_metadata_lists()
     )
 
 
@@ -38,11 +34,9 @@ def bulk() -> str:
 
     return render_template(
         'add.html',
-        brickset_owners=BrickSetOwnerList.list(),
-        brickset_storages=BrickSetStorageList.list(),
-        brickset_tags=BrickSetTagList.list(),
         path=current_app.config['SOCKET_PATH'],
         namespace=current_app.config['SOCKET_NAMESPACE'],
         messages=MESSAGES,
-        bulk=True
+        bulk=True,
+        **set_metadata_lists()
     )
diff --git a/bricktracker/views/index.py b/bricktracker/views/index.py
index b64775bf..1bf7c22e 100644
--- a/bricktracker/views/index.py
+++ b/bricktracker/views/index.py
@@ -2,11 +2,8 @@ from flask import Blueprint, render_template
 
 from .exceptions import exception_handler
 from ..minifigure_list import BrickMinifigureList
-from ..set_owner_list import BrickSetOwnerList
 from ..set_status_list import BrickSetStatusList
-from ..set_storage_list import BrickSetStorageList
-from ..set_tag_list import BrickSetTagList
-from ..set_list import BrickSetList
+from ..set_list import BrickSetList, set_metadata_lists
 
 index_page = Blueprint('index', __name__)
 
@@ -18,9 +15,7 @@ def index() -> str:
     return render_template(
         'index.html',
         brickset_collection=BrickSetList().last(),
-        brickset_owners=BrickSetOwnerList.list(),
         brickset_statuses=BrickSetStatusList.list(),
-        brickset_storages=BrickSetStorageList.list(as_class=True),
-        brickset_tags=BrickSetTagList.list(),
         minifigure_collection=BrickMinifigureList().last(),
+        **set_metadata_lists(as_class=True)
     )
diff --git a/bricktracker/views/minifigure.py b/bricktracker/views/minifigure.py
index 99587287..7123e4a7 100644
--- a/bricktracker/views/minifigure.py
+++ b/bricktracker/views/minifigure.py
@@ -3,10 +3,7 @@ from flask import Blueprint, render_template
 from .exceptions import exception_handler
 from ..minifigure import BrickMinifigure
 from ..minifigure_list import BrickMinifigureList
-from ..set_owner_list import BrickSetOwnerList
-from ..set_list import BrickSetList
-from ..set_storage_list import BrickSetStorageList
-from ..set_tag_list import BrickSetTagList
+from ..set_list import BrickSetList, set_metadata_lists
 
 minifigure_page = Blueprint('minifigure', __name__, url_prefix='/minifigures')
 
@@ -31,7 +28,5 @@ def details(*, figure: str) -> str:
         using=BrickSetList().using_minifigure(figure),
         missing=BrickSetList().missing_minifigure(figure),
         damaged=BrickSetList().damaged_minifigure(figure),
-        brickset_owners=BrickSetOwnerList.list(),
-        brickset_storages=BrickSetStorageList.list(as_class=True),
-        brickset_tags=BrickSetTagList.list(),
+        **set_metadata_lists(as_class=True)
     )
diff --git a/bricktracker/views/part.py b/bricktracker/views/part.py
index b2a9eedd..fc800c4e 100644
--- a/bricktracker/views/part.py
+++ b/bricktracker/views/part.py
@@ -4,10 +4,7 @@ from .exceptions import exception_handler
 from ..minifigure_list import BrickMinifigureList
 from ..part import BrickPart
 from ..part_list import BrickPartList
-from ..set_owner_list import BrickSetOwnerList
-from ..set_list import BrickSetList
-from ..set_storage_list import BrickSetStorageList
-from ..set_tag_list import BrickSetTagList
+from ..set_list import BrickSetList, set_metadata_lists
 
 part_page = Blueprint('part', __name__, url_prefix='/parts')
 
@@ -67,7 +64,5 @@ def details(*, part: str, color: int) -> str:
         ),
         different_color=BrickPartList().with_different_color(brickpart),
         similar_prints=BrickPartList().from_print(brickpart),
-        brickset_owners=BrickSetOwnerList.list(),
-        brickset_storages=BrickSetStorageList.list(as_class=True),
-        brickset_tags=BrickSetTagList.list(),
+        **set_metadata_lists(as_class=True)
     )
diff --git a/bricktracker/views/set.py b/bricktracker/views/set.py
index 8983cf94..de57cd30 100644
--- a/bricktracker/views/set.py
+++ b/bricktracker/views/set.py
@@ -16,7 +16,7 @@ from .exceptions import exception_handler
 from ..minifigure import BrickMinifigure
 from ..part import BrickPart
 from ..set import BrickSet
-from ..set_list import BrickSetList
+from ..set_list import BrickSetList, set_metadata_lists
 from ..set_owner_list import BrickSetOwnerList
 from ..set_status_list import BrickSetStatusList
 from ..set_storage_list import BrickSetStorageList
@@ -35,10 +35,8 @@ def list() -> str:
     return render_template(
         'sets.html',
         collection=BrickSetList().all(),
-        brickset_owners=BrickSetOwnerList.list(),
         brickset_statuses=BrickSetStatusList.list(),
-        brickset_storages=BrickSetStorageList.list(as_class=True),
-        brickset_tags=BrickSetTagList.list(),
+        **set_metadata_lists(as_class=True)
     )
 
 
@@ -145,10 +143,8 @@ def details(*, id: str) -> str:
         'set.html',
         item=BrickSet().select_specific(id),
         open_instructions=request.args.get('open_instructions'),
-        brickset_owners=BrickSetOwnerList.list(),
         brickset_statuses=BrickSetStatusList.list(all=True),
-        brickset_storages=BrickSetStorageList.list(as_class=True),
-        brickset_tags=BrickSetTagList.list(),
+        **set_metadata_lists(as_class=True)
     )
 
 
diff --git a/bricktracker/views/storage.py b/bricktracker/views/storage.py
index e41e97a4..7d5ba3f0 100644
--- a/bricktracker/views/storage.py
+++ b/bricktracker/views/storage.py
@@ -1,11 +1,9 @@
 from flask import Blueprint, render_template
 
 from .exceptions import exception_handler
-from ..set_owner_list import BrickSetOwnerList
-from ..set_list import BrickSetList
+from ..set_list import BrickSetList, set_metadata_lists
 from ..set_storage import BrickSetStorage
 from ..set_storage_list import BrickSetStorageList
-from ..set_tag_list import BrickSetTagList
 
 storage_page = Blueprint('storage', __name__, url_prefix='/storages')
 
@@ -30,7 +28,5 @@ def details(*, id: str) -> str:
         'storage.html',
         item=storage,
         sets=BrickSetList().using_storage(storage),
-        brickset_owners=BrickSetOwnerList.list(),
-        brickset_storages=BrickSetStorageList.list(as_class=True),
-        brickset_tags=BrickSetTagList.list(),
+        **set_metadata_lists(as_class=True)
     )