diff --git a/commentaries/models.py b/commentaries/models.py
index da8321b411630469c64122437bb5de53f452a870..27db6d732b4144dfb15a8ca6c86997a6ac04b7b1 100644
--- a/commentaries/models.py
+++ b/commentaries/models.py
@@ -4,7 +4,7 @@ from django.core.urlresolvers import reverse
 from django.template import Template, Context
 
 from journals.constants import SCIPOST_JOURNALS_DOMAINS
-from scipost.behaviors import ArxivCallable, TimeStampedModel
+from scipost.behaviors import TimeStampedModel
 from scipost.models import Contributor
 from scipost.constants import SCIPOST_DISCIPLINES, DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS
 
@@ -12,7 +12,7 @@ from .constants import COMMENTARY_TYPES
 from .managers import CommentaryManager
 
 
-class Commentary(ArxivCallable, TimeStampedModel):
+class Commentary(TimeStampedModel):
     """
     A Commentary contains all the contents of a SciPost Commentary page for a given publication.
     """
@@ -72,10 +72,6 @@ class Commentary(ArxivCallable, TimeStampedModel):
     def __str__(self):
         return self.pub_title
 
-    @classmethod
-    def same_version_exists(self, identifier):
-        return self.objects.filter(arxiv_identifier=identifier).exists()
-
     def title_label(self):
         context = Context({
             'scipost_url': reverse('commentaries:commentary', args=(self.arxiv_or_DOI_string,)),
diff --git a/scipost/behaviors.py b/scipost/behaviors.py
index 1140c889dd21a75820f85e10182286069b4a13f3..7904262e934152b73b11ce7374c979ee55b02c1f 100644
--- a/scipost/behaviors.py
+++ b/scipost/behaviors.py
@@ -4,16 +4,6 @@ from django.utils import timezone
 from .db.fields import AutoDateTimeField
 
 
-class ArxivCallable(object):
-    '''Models that contain a Arxiv identification should contain these
-    methods to be compatible with the ArxivCaller().
-    '''
-    @classmethod
-    def same_version_exists(self, identifier):
-        '''Check if the given identifier already is present in the database.'''
-        raise NotImplementedError
-
-
 class TimeStampedModel(models.Model):
     """
     All objects should inherit from this abstract model.
diff --git a/scipost/services.py b/scipost/services.py
index 7a6707e8f7b84fab44f80726a0046724ed38bd23..9e61ccd731882f140a3095e7d0b7dfb786250892 100644
--- a/scipost/services.py
+++ b/scipost/services.py
@@ -1,15 +1,9 @@
 # Module for making external api calls as needed in the submissions cycle
 import feedparser
 import requests
-import re
 import datetime
 import dateutil.parser
 
-from django.template import Template, Context
-from .behaviors import ArxivCallable
-
-from strings import arxiv_caller_errormessages
-
 
 class DOICaller:
     def __init__(self, doi_string):
diff --git a/submissions/models.py b/submissions/models.py
index 8e887cc01e4678c4371faf3353b074afa5f447b7..2ecdcd874c1deec2a974979970a32346812ec5f2 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -16,7 +16,6 @@ from .managers import SubmissionManager, EditorialAssignmentManager, EICRecommen
 from .utils import ShortSubmissionCycle, DirectRecommendationSubmissionCycle,\
                    GeneralSubmissionCycle
 
-from scipost.behaviors import ArxivCallable
 from scipost.constants import TITLE_CHOICES
 from scipost.fields import ChoiceArrayField
 from scipost.models import Contributor
@@ -28,7 +27,7 @@ from journals.models import Publication
 ###############
 # Submissions:
 ###############
-class Submission(ArxivCallable, models.Model):
+class Submission(models.Model):
     # Main submission fields
     author_comments = models.TextField(blank=True, null=True)
     author_list = models.CharField(max_length=1000, verbose_name="author list")
@@ -164,6 +163,19 @@ class Submission(ArxivCallable, models.Model):
         return self.reports.awaiting_vetting().count()
 
 
+class SubmissionEvent(models.Model):
+    partner = models.ForeignKey('partners.Partner', on_delete=models.CASCADE,
+                                related_name='events')
+    event = models.CharField(max_length=64, choices=PARTNER_EVENTS)
+    comments = models.TextField(blank=True)
+    noted_on = models.DateTimeField(auto_now_add=True)
+    noted_by = models.ForeignKey(User, on_delete=models.CASCADE)
+
+    def __str__(self):
+        return '%s: %s' % (str(self.partner), self.get_event_display())
+
+
+
 ######################
 # Editorial workflow #
 ######################