diff --git a/backend/metagenedb/apps/catalog/admin/function.py b/backend/metagenedb/apps/catalog/admin/function.py
index 5c4c2e0175b26c7a0c1b20c0ddda4edf1a464165..ac8c885a40f3c996c025dd75d731b2601372be07 100644
--- a/backend/metagenedb/apps/catalog/admin/function.py
+++ b/backend/metagenedb/apps/catalog/admin/function.py
@@ -20,9 +20,15 @@ class FunctionAdmin(admin.ModelAdmin):
 @admin.register(EggNog)
 class EggNogAdmin(admin.ModelAdmin):
 
-    list_display = ('function_id', 'name', 'functional_category')
+    list_display = ('function_id', 'name', 'get_functional_categories')
     search_fields = ('function_id', 'name')
 
+    def get_functional_categories(self, obj):
+        if obj.functional_categories.all():
+            return ",".join([str(f) for f in obj.functional_categories.all()])
+        return '-'
+    get_functional_categories.short_description = 'Functional categories'
+
 
 @admin.register(EggNogFunctionalCategory)
 class EggNogFunctionalCategoryAdmin(admin.ModelAdmin):
diff --git a/backend/metagenedb/apps/catalog/migrations/0015_m2m_func_cat_eggnog.py b/backend/metagenedb/apps/catalog/migrations/0015_m2m_func_cat_eggnog.py
new file mode 100644
index 0000000000000000000000000000000000000000..c784d39de4d7fa7fb43061a6ee5f21d07b87dcf6
--- /dev/null
+++ b/backend/metagenedb/apps/catalog/migrations/0015_m2m_func_cat_eggnog.py
@@ -0,0 +1,34 @@
+# Generated by Django 3.0 on 2019-12-10 14:28
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('catalog', '0014_eggnog_name_length'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='eggnog',
+            options={'verbose_name': 'EggNOG', 'verbose_name_plural': 'EggNOGs'},
+        ),
+        migrations.AlterModelOptions(
+            name='eggnogfunctionalcategory',
+            options={'verbose_name': 'EggNOG functional category', 'verbose_name_plural': 'EggNOG functional categories'},
+        ),
+        migrations.AlterModelOptions(
+            name='keggorthology',
+            options={'verbose_name': 'KEGG orthology', 'verbose_name_plural': 'KEGG orthologies'},
+        ),
+        migrations.RemoveField(
+            model_name='eggnog',
+            name='functional_category',
+        ),
+        migrations.AddField(
+            model_name='eggnog',
+            name='functional_categories',
+            field=models.ManyToManyField(to='catalog.EggNogFunctionalCategory'),
+        ),
+    ]
diff --git a/backend/metagenedb/apps/catalog/models/function.py b/backend/metagenedb/apps/catalog/models/function.py
index cf27a27a0459f81bb5414054be32e1e10baa6bfb..7a71d293330bbf4e65cfd05458334401cb687548 100644
--- a/backend/metagenedb/apps/catalog/models/function.py
+++ b/backend/metagenedb/apps/catalog/models/function.py
@@ -32,23 +32,8 @@ class KeggOrthology(Function):
         super(KeggOrthology, self).__init__(source=self.SOURCE, *args, **kwargs)
 
     class Meta:
-        verbose_name_plural = "Kegg orthologies"
-
-
-class EggNog(Function):
-    SOURCE = 'eggnog'
-
-    functional_category = models.ForeignKey(
-        'EggNogFunctionalCategory', related_name='eggnogs',
-        on_delete=models.SET_NULL,
-        null=True, blank=True
-    )
-
-    def __init__(self, *args, **kwargs):
-        super(EggNog, self).__init__(source=self.SOURCE, *args, **kwargs)
-
-    class Meta:
-        verbose_name_plural = "EggNog"
+        verbose_name = "KEGG orthology"
+        verbose_name_plural = "KEGG orthologies"
 
 
 class EggNogFunctionalCategory(models.Model):
@@ -67,4 +52,18 @@ class EggNogFunctionalCategory(models.Model):
         return f"{self.category_id} ({self.name})"
 
     class Meta:
-        verbose_name_plural = "EggNog Functional categories"
+        verbose_name = "EggNOG functional category"
+        verbose_name_plural = "EggNOG functional categories"
+
+
+class EggNog(Function):
+    SOURCE = 'eggnog'
+
+    functional_categories = models.ManyToManyField(EggNogFunctionalCategory)
+
+    def __init__(self, *args, **kwargs):
+        super(EggNog, self).__init__(source=self.SOURCE, *args, **kwargs)
+
+    class Meta:
+        verbose_name = "EggNOG"
+        verbose_name_plural = "EggNOGs"