diff --git a/backend/metagenedb/api/catalog/views/function.py b/backend/metagenedb/api/catalog/views/function.py
index 9a4d6b14cea23c18631e17454f8933eb71c716cd..a26b79e43ad85552235841d8e2e99c6de8193ab9 100644
--- a/backend/metagenedb/api/catalog/views/function.py
+++ b/backend/metagenedb/api/catalog/views/function.py
@@ -57,7 +57,7 @@ class FunctionViewSet(BulkViewSet):
         return super().partial_update(*args, **kwargs)
 
 
-class KeggOrthologyViewSet(QParamsValidationViewSet):
+class KeggOrthologyViewSet(BulkViewSet):
     queryset = KeggOrthology.objects.all()
     serializer_class = KeggOrthologySerializer
     lookup_field = 'function_id'
@@ -117,7 +117,7 @@ class KeggOrthologyViewSet(QParamsValidationViewSet):
         return super().partial_update(*args, **kwargs)
 
 
-class EggNOGViewSet(QParamsValidationViewSet):
+class EggNOGViewSet(BulkViewSet):
     queryset = EggNOG.objects.all()
     serializer_class = EggNOGSerializer
     lookup_field = 'function_id'
diff --git a/backend/metagenedb/api/catalog/views/statistics.py b/backend/metagenedb/api/catalog/views/statistics.py
index f0e3cfd92c570a1de1b0b7238b60793186e853c1..7146b7fdf3107c06fe656f0a8fd78b4bc4027cac 100644
--- a/backend/metagenedb/api/catalog/views/statistics.py
+++ b/backend/metagenedb/api/catalog/views/statistics.py
@@ -1,4 +1,3 @@
-from django.shortcuts import get_object_or_404
 from drf_yasg.utils import swagger_auto_schema
 from rest_framework import viewsets
 from rest_framework.response import Response
@@ -6,8 +5,12 @@ from rest_framework.response import Response
 from metagenedb.apps.catalog.models import Statistics
 from metagenedb.apps.catalog.serializers import StatisticsSerializer
 
+from .base import BulkViewSet
 
-class StatisticsViewSet(viewsets.ViewSet):
+
+class StatisticsViewSet(BulkViewSet):
+    queryset = Statistics.objects.all()
+    serializer_class = StatisticsSerializer
     lookup_field = 'stats_id'
 
     @swagger_auto_schema(
@@ -15,18 +18,31 @@ class StatisticsViewSet(viewsets.ViewSet):
         operation_summary="API to list all pre-computed statistics.",
         tags=['Statistics'],
     )
-    def list(self, request):
-        queryset = Statistics.objects.all()
-        serializer = StatisticsSerializer(queryset, many=True)
-        return Response(serializer.data)
+    def list(self, *args, **kwargs):
+        return super().list(*args, **kwargs)
 
     @swagger_auto_schema(
         operation_description="Retrieve pre-computed statistics from an ID",
         operation_summary="API to retrieve pre-computed statistics.",
         tags=['Statistics'],
     )
-    def retrieve(self, request, stats_id=None):
-        queryset = Statistics.objects.all()
-        stats = get_object_or_404(queryset, stats_id=stats_id)
-        serializer = StatisticsSerializer(stats)
-        return Response(serializer.data)
+    def retrieve(self, *args, **kwargs):
+        return super().retrieve(*args, **kwargs)
+
+    @swagger_auto_schema(
+        tags=['Statistics'],
+    )
+    def create(self, *args, **kwargs):
+        return super().create(*args, **kwargs)
+
+    @swagger_auto_schema(
+        tags=['Statistics'],
+    )
+    def update(self, *args, **kwargs):
+        return super().update(*args, **kwargs)
+
+    @swagger_auto_schema(
+        tags=['Statistics'],
+    )
+    def partial_update(self, *args, **kwargs):
+        return super().partial_update(*args, **kwargs)
diff --git a/backend/metagenedb/apps/catalog/admin/__init__.py b/backend/metagenedb/apps/catalog/admin/__init__.py
index f7d7aca57c0b5b0c860d3a70d7887edc6cef111a..93ccd2c7ba4e6eaa890f73e791ebacd94fca3c75 100644
--- a/backend/metagenedb/apps/catalog/admin/__init__.py
+++ b/backend/metagenedb/apps/catalog/admin/__init__.py
@@ -1,3 +1,4 @@
 from .gene import GeneAdmin  # noqa
 from .function import FunctionAdmin, KeggOrthologyAdmin  # noqa
+from .statistics import Statistics  # noqa
 from .taxonomy import TaxonomyAdmin  # noqa
diff --git a/backend/metagenedb/apps/catalog/admin/statistics.py b/backend/metagenedb/apps/catalog/admin/statistics.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b1d5755fdb3dbacb22bba0d2b2f72a199072a5c
--- /dev/null
+++ b/backend/metagenedb/apps/catalog/admin/statistics.py
@@ -0,0 +1,9 @@
+from django.contrib import admin
+
+from metagenedb.apps.catalog.models import Statistics
+
+
+@admin.register(Statistics)
+class StatisticsAdmin(admin.ModelAdmin):
+    list_display = ('stats_id',)
+    search_fields = ('stats_id',)
diff --git a/backend/metagenedb/apps/catalog/models/statistics.py b/backend/metagenedb/apps/catalog/models/statistics.py
index 71630a7e66320f9326d5b0c8f83310b450c4f2e7..70371c626b7b74bf63e710a574ba03280a9c4bef 100644
--- a/backend/metagenedb/apps/catalog/models/statistics.py
+++ b/backend/metagenedb/apps/catalog/models/statistics.py
@@ -9,3 +9,6 @@ class Statistics(models.Model):
 
     stats_id = models.SlugField(max_length=400, db_index=True, unique=True)
     body = JSONField()
+
+    class Meta:
+        verbose_name_plural = "Statistics"
diff --git a/backend/metagenedb/common/django_default/permissions.py b/backend/metagenedb/common/django_default/permissions.py
index 456f88f6fbb4d9bd5a2b79b6e27d49d7a741e4f4..c92bbde9b39c2d0407bc55e7476b4c1ac6d9957c 100644
--- a/backend/metagenedb/common/django_default/permissions.py
+++ b/backend/metagenedb/common/django_default/permissions.py
@@ -7,4 +7,7 @@ class ListAndRetrieveAll(BasePermission):
     """
 
     def has_permission(self, request, view):
+        print(view.action)
+        print(view.action in ['list', 'retrieve'])
+        print(request.user.is_staff)
         return view.action in ['list', 'retrieve'] or request.user.is_staff