diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py
index d2d8ddfc601472d70ff485072de37fc00e58da74..3f321df381fd5d605924ea4c373c6be41a29d18b 100644
--- a/ippisite/ippidb/models.py
+++ b/ippisite/ippidb/models.py
@@ -18,6 +18,8 @@ class AutoFillableModel(models.Model):
     def save(self, *args, **kwargs):
         if kwargs.get('autofill') is True:
             self.autofill()
+        if 'autofill' in kwargs:
+            del kwargs['autofill']
         super(AutoFillableModel, self).save(*args, **kwargs)
 
 
@@ -30,7 +32,7 @@ class Bibliography(AutoFillableModel):
         ('PT', 'Patent'),
         ('DO', 'DOI ID')
     )
-    source = models.CharField('Bibliographic type', max_length=2, choices=SOURCES)
+    source = models.CharField('Bibliographic type', max_length=2, choices=SOURCES, default='PM')
     id_source = models.CharField('Bibliographic ID', max_length=25)
     title = models.CharField('Title', max_length=300)
     journal_name = models.CharField('Journal name', max_length=50, null=True)
@@ -107,7 +109,7 @@ class Protein(AutoFillableModel):
             taxonomy.taxonomy_id = info['organism']
             taxonomy.save(autofill=True)
         self.organism = taxonomy
-        #super(Protein, self).save(*args, **kwargs)
+        super(Protein, self).save()
         for go_id in info['molecular_functions']:
             try:
                 mol_function = MolecularFunction.objects.get(go_id=go_id)
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index b6d1e782ad61501bd7f7b40cb2a0a22c6200652e..e0c0172a534d674b60b42fe60e47210789976d47 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -2,7 +2,10 @@ import ippidb
 from django.shortcuts import render
 from django.http import HttpResponseRedirect
 from formtools.wizard.views import SessionWizardView,NamedUrlSessionWizardView
+
 from .forms import IdForm, BibliographyForm, PDBForm, ProteinForm, ProteinDomainComplexTypeForm, ProteinDomainComplexForm, PpiForm, ProteinFormSet
+from .models import Protein
+from .ws import get_pdb_uniprot_mapping
 
 def index(request):
     return render(request, 'index.html')
@@ -48,6 +51,19 @@ class IppiWizard(SessionWizardView):
         if self.steps.current=='IdForm':
             form.instance.autofill()
             self.instance_dict['BibliographyForm'] = form.instance
+        elif self.steps.current=='PDBForm':
+            uniprot_ids = get_pdb_uniprot_mapping(form.cleaned_data['pdb_id'])
+            proteins = []
+            for uniprot_id in uniprot_ids:
+                try:
+                    p = Protein.objects.get(uniprot_id=uniprot_id)
+                except Protein.DoesNotExist:
+                    p = Protein()
+                    p.uniprot_id = uniprot_ids[0]
+                    p.autofill()
+                proteins.append(p)
+            #TODO replace p with proteins as the instance_dict
+            self.instance_dict['ProteinForm'] = p
         return self.get_form_step_data(form)
 
     def done(self, form_list, **kwargs):
diff --git a/ippisite/ippidb/ws.py b/ippisite/ippidb/ws.py
index 2c178fc1e80ca0bdb39e41d30571bde6756a9797..7a272f2a30e659ae65b408f4825b2085c2c3a9d4 100644
--- a/ippisite/ippidb/ws.py
+++ b/ippisite/ippidb/ws.py
@@ -78,3 +78,8 @@ def get_pfam_info(pfam_acc):
     domain_family = ''
     return {'id': pfam_id,
             'description': description}
+
+def get_pdb_uniprot_mapping(pdb_id):
+    resp = requests.get('https://www.ebi.ac.uk/pdbe/api/mappings/uniprot/{}'.format(pdb_id))
+    uniprot_ids = list(resp.json()[pdb_id]['UniProt'].keys())
+    return uniprot_ids