diff --git a/bricktracker/views/admin/admin.py b/bricktracker/views/admin/admin.py
index bb6a5e6..08cdafc 100644
--- a/bricktracker/views/admin/admin.py
+++ b/bricktracker/views/admin/admin.py
@@ -87,15 +87,19 @@ def admin() -> str:
     open_tag = request.args.get('open_tag', None)
     open_theme = request.args.get('open_theme', None)
 
+    open_metadata = (
+        open_owner or
+        open_status or
+        open_storage or
+        open_tag
+    )
+
     open_database = (
         open_image is None and
         open_instructions is None and
         open_logout is None and
-        open_owner is None and
+        not open_metadata and
         open_retired is None and
-        open_status is None and
-        open_storage is None and
-        open_tag is None and
         open_theme is None
     )
 
@@ -120,6 +124,7 @@ def admin() -> str:
         open_image=open_image,
         open_instructions=open_instructions,
         open_logout=open_logout,
+        open_metadata=open_metadata,
         open_owner=open_owner,
         open_retired=open_retired,
         open_status=open_status,
diff --git a/templates/admin.html b/templates/admin.html
index 3582c7b..22a7e1a 100644
--- a/templates/admin.html
+++ b/templates/admin.html
@@ -1,3 +1,5 @@
+{% import 'macro/accordion.html' as accordion %}
+
 {% extends 'base.html' %}
 
 {% block title %} - Administration{% endblock %}
@@ -36,10 +38,12 @@
               {% endif %}
               {% include 'admin/theme.html' %}
               {% include 'admin/retired.html' %}
+              {{ accordion.header('Set metadata', 'metadata', 'admin', expanded=open_metadata, icon='profile-line', class='p-0') }}
               {% include 'admin/owner.html' %}
               {% include 'admin/status.html' %}
               {% include 'admin/storage.html' %}
               {% include 'admin/tag.html' %}
+              {{ accordion.footer() }}
               {% include 'admin/database.html' %}
               {% include 'admin/configuration.html' %}
             {% endif %}
diff --git a/templates/admin/owner.html b/templates/admin/owner.html
index 8c7c261..351eaa5 100644
--- a/templates/admin/owner.html
+++ b/templates/admin/owner.html
@@ -1,6 +1,6 @@
 {% import 'macro/accordion.html' as accordion %}
 
-{{ accordion.header('Set owners', 'owner', 'admin', expanded=open_owner, icon='user-line', class='p-0') }}
+{{ accordion.header('Set owners', 'owner', 'metadata', expanded=open_owner, icon='user-line', class='p-0') }}
 {% if owner_error %}<div class="alert alert-danger m-2" role="alert"><strong>Error:</strong> {{ owner_error }}.</div>{% endif %}
 <ul class="list-group list-group-flush">
   {% if metadata_owners | length %}
diff --git a/templates/admin/status.html b/templates/admin/status.html
index 609bc68..0377a4c 100644
--- a/templates/admin/status.html
+++ b/templates/admin/status.html
@@ -1,6 +1,6 @@
 {% import 'macro/accordion.html' as accordion %}
 
-{{ accordion.header('Set statuses', 'status', 'admin', expanded=open_status, icon='checkbox-line', class='p-0') }}
+{{ accordion.header('Set statuses', 'status', 'metadata', expanded=open_status, icon='checkbox-line', class='p-0') }}
 {% if status_error %}<div class="alert alert-danger m-2" role="alert"><strong>Error:</strong> {{ status_error }}.</div>{% endif %}
 <ul class="list-group list-group-flush">
   {% if metadata_statuses | length %}
diff --git a/templates/admin/storage.html b/templates/admin/storage.html
index 1f317e6..ddd3e4b 100644
--- a/templates/admin/storage.html
+++ b/templates/admin/storage.html
@@ -1,6 +1,6 @@
 {% import 'macro/accordion.html' as accordion %}
 
-{{ accordion.header('Set storages', 'storage', 'admin', expanded=open_storage, icon='archive-2-line', class='p-0') }}
+{{ accordion.header('Set storages', 'storage', 'metadata', expanded=open_storage, icon='archive-2-line', class='p-0') }}
 {% if storage_error %}<div class="alert alert-danger m-2" role="alert"><strong>Error:</strong> {{ storage_error }}.</div>{% endif %}
 <ul class="list-group list-group-flush">
   {% if metadata_storages | length %}
diff --git a/templates/admin/tag.html b/templates/admin/tag.html
index c3ca1f6..30bfa71 100644
--- a/templates/admin/tag.html
+++ b/templates/admin/tag.html
@@ -1,6 +1,6 @@
 {% import 'macro/accordion.html' as accordion %}
 
-{{ accordion.header('Set tags', 'tag', 'admin', expanded=open_tag, icon='price-tag-2-line', class='p-0') }}
+{{ accordion.header('Set tags', 'tag', 'metadata', expanded=open_tag, icon='price-tag-2-line', class='p-0') }}
 {% if tag_error %}<div class="alert alert-danger m-2" role="alert"><strong>Error:</strong> {{ tag_error }}.</div>{% endif %}
 <ul class="list-group list-group-flush">
   {% if metadata_tags | length %}
diff --git a/templates/set/management.html b/templates/set/management.html
index 26959d3..1a8c2b7 100644
--- a/templates/set/management.html
+++ b/templates/set/management.html
@@ -1,5 +1,6 @@
 {% if g.login.is_authenticated() %}
-  {{ accordion.header('Owners', 'owner', 'set-details', icon='group-line', class='p-0') }}
+  {{ accordion.header('Management', 'set-management', 'set-details', icon='settings-4-line', class='p-0') }}
+    {{ accordion.header('Owners', 'owner', 'set-management', icon='group-line', class='p-0') }}
     <ul class="list-group list-group-flush">
     {% if brickset_owners | length %}
       {% for owner in brickset_owners %}
@@ -13,7 +14,7 @@
       <a class="list-group-item list-group-item-action" href="{{ url_for('admin.admin', open_owner=true) }}"><i class="ri-settings-4-line"></i> Manage the set owners</a>
     </div>
   {{ accordion.footer() }}
-  {{ accordion.header('Storage', 'storage', 'set-details', icon='archive-2-line') }}
+    {{ accordion.header('Storage', 'storage', 'set-management', icon='archive-2-line') }}
     {% if brickset_storages | length %}
       {{ form.select('Storage', item, 'storage', brickset_storages, delete=delete) }}
     {% else %}
@@ -22,7 +23,7 @@
     <hr>
       <a href="{{ url_for('admin.admin', open_storage=true) }}" class="btn btn-primary" role="button"><i class="ri-settings-4-line"></i> Manage the set storages</a>
   {{ accordion.footer() }}
-  {{ accordion.header('Tags', 'tag', 'set-details', icon='price-tag-2-line', class='p-0') }}
+    {{ accordion.header('Tags', 'tag', 'set-management', icon='price-tag-2-line', class='p-0') }}
     <ul class="list-group list-group-flush">
     {% if brickset_tags | length %}
       {% for tag in brickset_tags %}
@@ -36,8 +37,8 @@
       <a class="list-group-item list-group-item-action" href="{{ url_for('admin.admin', open_tag=true) }}"><i class="ri-settings-4-line"></i> Manage the set tags</a>
     </div>
   {{ accordion.footer() }}
-  {{ accordion.header('Management', 'management', 'set-details', icon='settings-4-line') }}
-    <h5 class="border-bottom">Data</h5>
+    {{ accordion.header('Data', 'data', 'set-management', icon='database-2-line') }}
     <a href="{{ item.url_for_refresh() }}" class="btn btn-primary" role="button"><i class="ri-refresh-line"></i> Refresh the set data</a>
+    {{ accordion.footer() }}
   {{ accordion.footer() }}
 {% endif %}