diff --git a/ontology/views.py b/ontology/views.py
index 4c15f76bcdb911e6bd8edfb38e7b40eb64d08ee3..7959ccedff629d5ccabaf1b4114785619c45d29a 100644
--- a/ontology/views.py
+++ b/ontology/views.py
@@ -32,9 +32,11 @@ class AcademicFieldAutocompleteView(autocomplete.Select2QuerySetView):
     """To feed the Select2 widget."""
     def get_queryset(self):
         qs = AcademicField.objects.all()
+        if self.request.GET.get('exclude'):
+            qs = qs.exclude(slug=self.request.GET['exclude'])
         if self.q:
             qs = qs.filter(name__icontains=self.q)
-        return qs
+        return qs.order_by('name')
 
 
 class SpecialtyAutocompleteView(autocomplete.Select2QuerySetView):
@@ -43,7 +45,7 @@ class SpecialtyAutocompleteView(autocomplete.Select2QuerySetView):
         qs = Specialty.objects.all()
         if self.q:
             qs = qs.filter(name__icontains=self.q)
-        return qs
+        return qs.order_by('name')
 
 
 class TagAutocompleteView(autocomplete.Select2QuerySetView):
diff --git a/scipost/admin.py b/scipost/admin.py
index db84bfffa2c19d482fdae35a831ef08532348e25..e370d77899a754024261f6635b09cc40572e0ec4 100644
--- a/scipost/admin.py
+++ b/scipost/admin.py
@@ -14,6 +14,7 @@ from scipost.models import TOTPDevice, Contributor, Remark,\
 
 from organizations.admin import ContactInline
 from production.admin import ProductionUserInline
+from profiles.models import Profile
 from submissions.models import Submission
 
 
diff --git a/scipost/forms.py b/scipost/forms.py
index 56191453c83b5271c7fa1cd1365ccd0f8f8eebc0..2bcaddde843f8e3c69322f44f456a70a6c0fedcb 100644
--- a/scipost/forms.py
+++ b/scipost/forms.py
@@ -20,7 +20,7 @@ from haystack.forms import ModelSearchForm as HayStackSearchForm
 
 from .behaviors import orcid_validator
 from .constants import (
-    SCIPOST_DISCIPLINES, TITLE_CHOICES, SCIPOST_FROM_ADDRESSES,
+    TITLE_CHOICES, SCIPOST_FROM_ADDRESSES,
     UNVERIFIABLE_CREDENTIALS, NO_SCIENTIST, DOUBLE_ACCOUNT, BARRED)
 from .fields import ReCaptchaField
 from .models import Contributor, UnavailabilityPeriod, \
@@ -91,7 +91,25 @@ class RegistrationForm(forms.Form):
         label="ORCID id", max_length=20, required=False, validators=[orcid_validator],
         widget=forms.TextInput({
             'placeholder': 'Recommended. Get one at orcid.org'}))
-    discipline = forms.ChoiceField(choices=SCIPOST_DISCIPLINES, label='* Main discipline')
+    acad_field = forms.ModelChoiceField(
+        queryset=AcademicField.objects.all(),
+        widget=autocomplete.ModelSelect2(
+            url='/ontology/acad_field-autocomplete?exclude=multidisciplinary'
+        ),
+        label='Academic field',
+        help_text='Your main field of activity',
+        required=False
+    )
+    specialties = forms.ModelMultipleChoiceField(
+        queryset=Specialty.objects.all(),
+        widget=autocomplete.ModelSelect2Multiple(
+            url='/ontology/specialty-autocomplete',
+            attrs={'data-html': True}
+        ),
+        label='Specialties',
+        help_text='Type to search, click to include',
+        required=False
+    )
     current_affiliation = forms.ModelChoiceField(
         queryset=Organization.objects.all(),
         widget=autocomplete.ModelSelect2(
@@ -137,14 +155,11 @@ class RegistrationForm(forms.Form):
             )
 
         profile = Profile.objects.filter(
-            title=self.cleaned_data['title'],
-            first_name=self.cleaned_data['first_name'],
-            last_name=self.cleaned_data['last_name'],
-            discipline=self.cleaned_data['discipline']).first()
+            emails__email__icontains=self.cleaned_data['email']).first()
         try:
             if profile and profile.contributor:
                 raise forms.ValidationError(
-                    'There is already a registered Contributor with your first and last names. '
+                    'There is already a registered Contributor with your email address. '
                     'Please contact techsupport@scipost.org to clarify this issue.'
                 )
         except Contributor.DoesNotExist:
@@ -190,18 +205,16 @@ class RegistrationForm(forms.Form):
         })
         # Get or create a Profile
         profile = Profile.objects.filter(
-            title=self.cleaned_data['title'],
-            first_name=self.cleaned_data['first_name'],
-            last_name=self.cleaned_data['last_name'],
-            discipline=self.cleaned_data['discipline']).first()
+            emails__email__icontains=self.cleaned_data['email']).first()
         if profile is None:
             profile = Profile.objects.create(
                 title=self.cleaned_data['title'],
                 first_name=self.cleaned_data['first_name'],
                 last_name=self.cleaned_data['last_name'],
-                discipline=self.cleaned_data['discipline'],
+                acad_field=self.cleaned_data['acad_field'],
                 orcid_id=self.cleaned_data['orcid_id'],
                 webpage=self.cleaned_data['personalwebpage'])
+            profile.specialties.set(self.cleaned_data['specialties'])
         # Add a ProfileEmail to this Profile
         profile_email, created = ProfileEmail.objects.get_or_create(
             profile=profile, email=self.cleaned_data['email'])
@@ -254,10 +267,11 @@ class UpdatePersonalDataForm(forms.ModelForm):
     acad_field = forms.ModelChoiceField(
         queryset=AcademicField.objects.all(),
         widget=autocomplete.ModelSelect2(
-            url='/ontology/acad_field-autocomplete'
+            url='/ontology/acad_field-autocomplete?exclude=multidisciplinary'
         ),
         label='Academic field',
-        help_text='Your main field of activity'
+        help_text='Your main field of activity',
+        required=False
     )
     specialties = forms.ModelMultipleChoiceField(
         queryset=Specialty.objects.all(),
@@ -266,7 +280,8 @@ class UpdatePersonalDataForm(forms.ModelForm):
             attrs={'data-html': True}
         ),
         label='Specialties',
-        help_text='Type to search, click to include'
+        help_text='Type to search, click to include',
+        required=False
     )
     class Meta:
         model = Contributor
diff --git a/scipost/static/scipost/update-personal-data-expertises.js b/scipost/static/scipost/update-personal-data-expertises.js
deleted file mode 100644
index d772bea3b8525d2e69e341b3f7bca8d5e8e2784d..0000000000000000000000000000000000000000
--- a/scipost/static/scipost/update-personal-data-expertises.js
+++ /dev/null
@@ -1,33 +0,0 @@
-$(document).ready(function(){
-    $('select#id_discipline').on('change', function() {
-        var selection = $(this).val();
-        $("ul[id^='id_expertises_']").closest("li").hide();
-
-        switch(selection){
-        case "physics":
-	    $('li:contains("Physics")').filter(function(){
-		return $(this).text().indexOf('Physics') == 0;}).show();
-            break;
-        case "astrophysics":
-	    $('li:contains("Astrophysics")').filter(function(){
-		return $(this).text().indexOf('Astrophysics') == 0;}).show();
-            break;
-        case "mathematics":
-	    $('li:contains("Mathematics")').filter(function(){
-		return $(this).text().indexOf('Mathematics') == 0;}).show();
-            break;
-        case "chemistry":
-	    $('li:contains("Chemistry")').filter(function(){
-		return $(this).text().indexOf('Chemistry') == 0;}).show();
-            break;
-        case "computerscience":
-	    $('li:contains("Computer Science")').filter(function(){
-		return $(this).text().indexOf('Computer Science') == 0;}).show();
-            break;
-        default:
-            $("ul[id^='id_expertises_']").closest("li").show();
-            break;
-        }
-    }).trigger('change');
-
-});
diff --git a/scipost/templates/partials/scipost/personal_page/account.html b/scipost/templates/partials/scipost/personal_page/account.html
index f8088019df6698d3174042b5256c0e43dd9b4638..870cc3241688f7b8d5c5b2a6e06f9e248b5b6162 100644
--- a/scipost/templates/partials/scipost/personal_page/account.html
+++ b/scipost/templates/partials/scipost/personal_page/account.html
@@ -31,18 +31,18 @@
 
     {% if contributor %}
       {# Scientist fields #}
-      <h3 class="mt-3">Your main discipline:</h3>
-      <ul><li>{{ contributor.get_discipline_display }}</li></ul>
-
-      <h3 class="mt-3">Your expertises:</h3>
-      {% if contributor.expertises %}
-        {% include "scipost/_expertises_as_ul.html" with contributor=contributor %}
-      {% else %}
-        <p>You haven't listed your expertise(s).<br/>
-          Do so by <a href="{% url 'scipost:update_personal_data' %}">updating your personal data</a>
-        </p>
-      {% endif %}
-      {# END: Scientist fields #}
+      <h3 class="mt-3">Your main academic field:</h3>
+      <ul><li>{{ contributor.profile.acad_field }}</li></ul>
+
+      <h3 class="mt-3">Your specialties:</h3>
+      <ul>
+	{% for specialty in contributor.profile.specialties.all %}
+	  <li>{{ specialty }}</li>
+	{% empty %}
+          <li>You haven't listed your specialties yet.</li>
+	{% endfor %}
+      </ul>
+      <p>You can add/remove specialties by <a href="{% url 'scipost:update_personal_data' %}">updating your personal data</a>.</p>
     {% endif %}
   </div>
 
diff --git a/scipost/templates/scipost/_expertises_as_ul.html b/scipost/templates/scipost/_expertises_as_ul.html
deleted file mode 100644
index a58ec6fbfc14a598a5cbf85b82b13422858f12da..0000000000000000000000000000000000000000
--- a/scipost/templates/scipost/_expertises_as_ul.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% load scipost_extras %}
-
-<ul>
-  {% for expertise in contributor.expertises %}
-    <li>
-      {{ expertise|get_specialization_display }}
-    </li>
-  {% endfor %}
-</ul>
diff --git a/scipost/templates/scipost/update_personal_data.html b/scipost/templates/scipost/update_personal_data.html
index 65e1efa3cc9e3c09328a973fa22147fdbf293529..b611cb18a94de870ccdc24bf6c76bdd77d07242b 100644
--- a/scipost/templates/scipost/update_personal_data.html
+++ b/scipost/templates/scipost/update_personal_data.html
@@ -12,12 +12,6 @@
 
 {% block content %}
 
-  {% if cont_form %}
-    <script src="{% static 'scipost/update-personal-data-expertises.js' %}"></script>
-  {% endif %}
-
-
-
   <form action="{% url 'scipost:update_personal_data' %}" method="post">
     {% csrf_token %}
     <div class="row justify-content-center">
diff --git a/scipost/views.py b/scipost/views.py
index 75e59448a192c64ead8732458b489726e0e2e496..786bc5252d23a0cbbbe01250f716ef9ed63526dd 100644
--- a/scipost/views.py
+++ b/scipost/views.py
@@ -898,7 +898,7 @@ def _update_personal_data_contributor(request):
         if 'orcid_id' in cont_form.changed_data:
             cont_form.propagate_orcid()
         messages.success(request, 'Your personal data has been updated.')
-        return redirect(reverse('scipost:update_personal_data'))
+        return redirect(reverse('scipost:personal_page'))
 
     context = {
         'user_form': user_form,