diff --git a/scipost/services.py b/scipost/services.py
index 47efe58b97208abc37a310f02b43b7e16d70d089..c3ad2777a0a078390c01b28867f7dbc5c2804abb 100644
--- a/scipost/services.py
+++ b/scipost/services.py
@@ -22,7 +22,7 @@ class DOICaller:
         request = requests.get(url)
         if request.ok:
             self.is_valid = True
-            self._crossref_data = requests.get(url).json()['message']
+            self._crossref_data = request.json()['message']
         else:
             self.is_valid = False
 
@@ -65,6 +65,48 @@ class DOICaller:
         return pub_date
 
 
+class ArxivCaller:
+    query_base_url = 'http://export.arxiv.org/api/query?id_list=%s'
+
+    def __init__(self, identifier):
+        self.identifier = identifier
+        self._call_arxiv()
+        if self.is_valid:
+            self._format_data()
+
+    def _call_arxiv(self):
+        url = self.query_base_url % self.identifier
+        request = requests.get(url)
+        if request.ok:
+            self.is_valid = True
+            self._arxiv_data = feedparser.parse(request.content)
+        else:
+            self.is_valid = False
+
+    def _format_data(self):
+        raise NotImplementedError
+
+
+#             metadata = caller.metadata
+#             pub_title = metadata['entries'][0]['title']
+#             authorlist = metadata['entries'][0]['authors'][0]['name']
+#             for author in metadata['entries'][0]['authors'][1:]:
+#                 authorlist += ', ' + author['name']
+#             arxiv_link = metadata['entries'][0]['id']
+#             abstract = metadata['entries'][0]['summary']
+#
+#             initialdata = {
+#                 'type': 'preprint',
+#                 'metadata': metadata,
+#                 'pub_title': pub_title,
+#                 'author_list': authorlist,
+#                 'arxiv_identifier': identifierform.cleaned_data['identifier'],
+#                 'arxiv_link': arxiv_link,
+#                 'pub_abstract': abstract
+#             }
+
+
+
 
 # I'm going to revamp this whole thing...
 class BaseCaller(object):
@@ -216,12 +258,8 @@ class BaseCaller(object):
         return t.render(Context(self.errorvariables))
 
 
-# class DOICaller(BaseCaller):
-#     """Perform a DOI lookup for a given identifier."""
-#     pass
-
 
-class ArxivCaller(BaseCaller):
+class ArxivCallerOld(BaseCaller):
     """ Performs an Arxiv article lookup for given identifier """
 
     # State of the caller
diff --git a/scipost/test_services.py b/scipost/test_services.py
index 6794725eb1c153155a64096f47ad89d564af47d0..44986d73dae3569b648aaca69c33db06b577f6cd 100644
--- a/scipost/test_services.py
+++ b/scipost/test_services.py
@@ -6,7 +6,13 @@ from submissions.models import Submission
 
 
 class ArxivCallerTest(TestCase):
+    def setUp(self):
+        self.valid_arxiv_identifier = '1612.07611v1'
 
+    def test_collects_metadata(self):
+        raise NotImplementedError
+
+class ArxivCallerTestOld(TestCase):
     def test_correct_lookup(self):
         caller = ArxivCaller(Submission, '1611.09574v1')