diff --git a/journals/models.py b/journals/models.py
index 69542a2f256784b5735a71572c78ba31b03e6311..d7c4ca685c0ff51a8ac6196e1c155c6b05e056bd 100644
--- a/journals/models.py
+++ b/journals/models.py
@@ -2,7 +2,6 @@ from django.utils import timezone
 from django.db import models
 from django.contrib.auth.models import User
 
-from .models import *
 
 
 SCIPOST_JOURNALS = (
diff --git a/scipost/admin.py b/scipost/admin.py
index 29e7c8ccec3a9989ba22107b0dfc3eee3faa4efe..0c57c906b26e55f5399acf9bc5358f8e0acf2389 100644
--- a/scipost/admin.py
+++ b/scipost/admin.py
@@ -1,7 +1,7 @@
 from django.contrib import admin
 
 from django.contrib.auth.admin import UserAdmin
-from django.contrib.auth.models import User
+from django.contrib.auth.models import User, Permission
 
 from scipost.models import *
 
@@ -24,3 +24,5 @@ admin.site.register(RegistrationInvitation)
 
 admin.site.register(AuthorshipClaim)
 #admin.site.register(Opinion)
+
+admin.site.register(Permission)
diff --git a/scipost/management/commands/add_groups_and_permissions.py b/scipost/management/commands/add_groups_and_permissions.py
index 1216016bb286921491619df520d61e59202c890c..1dcd0754265a3983ea98e334c0612e7e9ec63f54 100644
--- a/scipost/management/commands/add_groups_and_permissions.py
+++ b/scipost/management/commands/add_groups_and_permissions.py
@@ -1,33 +1,71 @@
 from django.core.management.base import BaseCommand, CommandError
 
 from django.contrib.auth.models import Group, Permission
+from django.contrib.contenttypes.models import ContentType
+
+from scipost.models import Contributor
 
 class Command(BaseCommand):
     help = 'Defines groups and permissions'
 
     def handle(self, *args, **options):
+        # Create Groups
         SciPostAdmin, created = Group.objects.get_or_create(name='SciPost Administrators')
         AdvisoryBoard, created = Group.objects.get_or_create(name='Advisory Board')
         EditorialCollege, created = Group.objects.get_or_create(name='Editorial College')
         VettingEditors, created = Group.objects.get_or_create(name='Vetting Editors')
         RegisteredContributors, created = Group.objects.get_or_create(name='Registered Contributors')
+
+        # Create Permissions
+        content_type = ContentType.objects.get_for_model(Contributor)
         # Registration
-        can_manage_registration_invitations = Permission.objects.get(codename='can_manage_registration_invitations')
-        can_vet_registration_requests = Permission.objects.get(codename='can_vet_registration_requests')
+        can_manage_registration_invitations, created = Permission.objects.get_or_create(
+            codename='can_manage_registration_invitations',
+            name= 'Can manage registration invitations',
+            content_type=content_type)
+        can_vet_registration_requests, created = Permission.objects.get_or_create(
+            codename='can_vet_registration_requests',
+            name= 'Can vet registration requests',
+            content_type=content_type)
         # Vetting of simple objects
-        can_vet_commentary_requests = Permission.objects.get(codename='can_vet_commentary_requests')
-        can_vet_thesislink_requests = Permission.objects.get(codename='can_vet_thesislink_requests')
-        can_vet_authorship_claims = Permission.objects.get(codename='can_vet_authorship_claims')
-        can_vet_comments = Permission.objects.get(codename='can_vet_comments')
+        can_vet_commentary_requests, created = Permission.objects.get_or_create(
+            codename='can_vet_commentary_requests',
+            name= 'Can vet Commentary page requests',
+            content_type=content_type)
+        can_vet_thesislink_requests, created = Permission.objects.get_or_create(
+            codename='can_vet_thesislink_requests',
+            name= 'Can vet Thesis Link requests',
+            content_type=content_type)
+        can_vet_authorship_claims, created = Permission.objects.get_or_create(
+            codename='can_vet_authorship_claims',
+            name= 'Can vet Authorship claims',
+            content_type=content_type)
+        can_vet_comments, created = Permission.objects.get_or_create(
+            codename='can_vet_comments',
+            name= 'Can vet submitted Comments',
+            content_type=content_type)
         # Submission handling
-        can_process_incoming_submissions = Permission.objects.get(codename='can_process_incoming_submissions')
-        can_vet_submitted_reports = Permission.objects.get(codename='can_vet_submitted_reports')
+        can_process_incoming_submissions, created = Permission.objects.get_or_create(
+            codename='can_process_incoming_submissions',
+            name= 'Can process incoming Submissions',
+            content_type=content_type)
+        can_vet_submitted_reports, created = Permission.objects.get_or_create(
+            codename='can_vet_submitted_reports', 
+            name='Can vet submitted Reports', 
+            content_type=content_type)
+
+        # Assign permissions to groups
         SciPostAdmin.permissions.add(can_manage_registration_invitations,
                                      can_vet_registration_requests,
-                                     can_vet_commentary_requests, can_vet_thesislink_requests,
-                                     can_vet_authorship_claims, can_vet_comments,
+                                     can_vet_commentary_requests, 
+                                     can_vet_thesislink_requests,
+                                     can_vet_authorship_claims, 
+                                     can_vet_comments,
                                      )
-        VettingEditors.permissions.add(can_vet_commentary_requests, can_vet_thesislink_requests,
-                                       can_vet_authorship_claims, can_vet_comments,
+        VettingEditors.permissions.add(can_vet_commentary_requests, 
+                                       can_vet_thesislink_requests,
+                                       can_vet_authorship_claims, 
+                                       can_vet_comments,
                                        )
+
         self.stdout.write(self.style.SUCCESS('Successfully created groups and permissions'))
diff --git a/scipost/models.py b/scipost/models.py
index 182ed707d22fa148a97fc77774f5e08f60ad1669..7144644b068d1e17d7ca9149e71193158270c253 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -56,17 +56,6 @@ class Contributor(models.Model):
     personalwebpage = models.URLField(verbose_name='personal web page', blank=True)
     vetted_by = models.OneToOneField('self', blank=True, null=True)
 
-    class Meta:
-        permissions = (
-            ('can_manage_registration_invitations', 'Can manage registration invitations'),
-            ('can_vet_registration_requests', 'Can vet registration requests'),
-            ('can_vet_commentary_requests', 'Can vet Commentary page requests'),
-            ('can_vet_thesislink_requests', 'Can vet Thesis Link requests'),
-            ('can_vet_authorship_claims', 'Can vet Authorship claims'),
-            ('can_vet_comments', 'Can vet submitted comments'),
-            ('can_process_incoming_submissions', 'Can process incoming Submissions'),
-            ('can_vet_submitted_reports', 'Can vet submitted Reports'),
-            )
 
     def __str__ (self):
         return self.user.last_name + ', ' + self.user.first_name
diff --git a/scipost/utils.py b/scipost/utils.py
index 28905f64fab2399295eb9f7ebfef39de9338aa9b..26f7d492a97ca4e55b9ff7c041fd00c6f6371d70 100644
--- a/scipost/utils.py
+++ b/scipost/utils.py
@@ -1,6 +1,3 @@
-#!/usr/bin/env python
-# -*- coding: latin-1 -*-
-
 import datetime
 import hashlib
 import random
diff --git a/submissions/models.py b/submissions/models.py
index 107e98f1de5f1f19ee579004699d42bbcbbb802a..fc0385b061d413f62f01ab261cf136d374499853 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -4,9 +4,10 @@ from django.contrib.auth.models import User
 
 from .models import *
 
-from scipost.models import *
-from journals.models import *
-
+from scipost.models import Contributor
+from scipost.models import SCIPOST_DISCIPLINES
+from journals.models import SCIPOST_JOURNALS_SUBMIT, SCIPOST_JOURNALS_DOMAINS, SCIPOST_JOURNALS_SPECIALIZATIONS
+from journals.models import journals_submit_dict, journals_domains_dict, journals_spec_dict
 
 
 ###############