diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py
index 95d41d32c5959a54c5b87d957094569021b5ae5c..e79ab6d879abc1fdb3379350099312743f9c0320 100644
--- a/aleksis/core/forms.py
+++ b/aleksis/core/forms.py
@@ -534,7 +534,23 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
 
     class Meta:
         model = Person
-        exclude = ["guardians", "is_active", "user", "primary_group"]
+        fields = [
+            "first_name",
+            "additional_name",
+            "last_name",
+            "street",
+            "housenumber",
+            "postal_code",
+            "place",
+            "date_of_birth",
+            "place_of_birth",
+            "sex",
+            "photo",
+            "mobile_number",
+            "phone_number",
+            "short_name",
+            "description",
+        ]
 
     layout = Layout(
         Fieldset(
@@ -585,11 +601,25 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
             self.fields["email2"].disabled = True
 
             if person:
-                self.fields["first_name"].initial = person.first_name
-                self.fields["first_name"].disabled = True
-                self.fields["last_name"].initial = person.last_name
-                self.fields["last_name"].disabled = True
-
+                available_fields = [field.name for field in Person._meta.get_fields()]
+                for field in self.fields:
+                    if field in available_fields and getattr(person, field):
+                        self.fields[field].disabled = True
+                        self.fields[field].initial = getattr(person, field)
+
+
+    def save(self, request):
+        adapter = get_adapter(request)
+        user = adapter.new_user(request)
+        adapter.save_user(request, user, self)
+        # Create person
+        data = self.changed_data
+        if not Person.objects.filter(email=self.cleaned_data["email"]):
+            _person = Person.objects.create(user=user, **data)
+            _person.save()
+        self.custom_signup(request, user)
+        setup_user_email(request, user, [])
+        return user
 
 class ActionForm(forms.Form):
     """Generic form for executing actions on multiple items of a queryset.
diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py
index c6a18431f82d23427bdd87ea6f0b6aaebc6f6346..a102cb39873bdeb492156fc60597ce728ffc853f 100644
--- a/aleksis/core/preferences.py
+++ b/aleksis/core/preferences.py
@@ -295,14 +295,6 @@ class InviteCodePacketSize(IntegerPreference):
     verbose_name = _("Size of packets. (Default 5: abcde)")
 
 
-@site_preferences_registry.register
-class InviteDayExpiry(IntegerPreference):
-    section = auth
-    name = "invite_day_expiry"
-    default = 3
-    verbose_name = _("Expiration time of invitations in days.")
-
-
 class OAuthAllowedGrants(MultipleChoicePreference):
     """Grant Flows allowed for OAuth applications."""
 
diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py
index 546e62f3a73f493120818bddf31f958a5fc1b42a..0248a78cc07a70182c955e93e62b6a9f864a5fb4 100644
--- a/aleksis/core/settings.py
+++ b/aleksis/core/settings.py
@@ -354,7 +354,7 @@ ACCOUNT_UNIQUE_EMAIL = _settings.get("auth.login.registration.unique_email", Tru
 
 ACCOUNT_ADAPTER = "invitations.models.InvitationsAdapter"
 
-INVITATIONS_INVITATION_EXPIRY = lazy_preference("auth", "invite_day_expiry")
+INVITATIONS_INVITATION_EXPIRY = _settings.get("auth.invitation.expiry", 3)
 
 INVITATIONS_EMAIL_SUBJECT_PREFIX = ACCOUNT_EMAIL_SUBJECT_PREFIX