diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java
index b96532367ec9cd52ca681514cd0824164105b530..2a0294c987b99e446b6cf1d260752969cbaa4ab6 100644
--- a/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/JamiAccountCreationFragment.java
@@ -23,7 +23,6 @@ import android.content.Context;
 import android.os.Bundle;
 import android.util.SparseArray;
 import android.view.LayoutInflater;
-import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
@@ -38,7 +37,6 @@ import androidx.viewpager.widget.ViewPager;
 
 import cx.ring.databinding.FragAccJamiCreateBinding;
 import cx.ring.mvp.AccountCreationModel;
-import cx.ring.mvp.BaseSupportFragment;
 import cx.ring.views.WizardViewPager;
 
 public class JamiAccountCreationFragment extends Fragment {
@@ -104,12 +102,7 @@ public class JamiAccountCreationFragment extends Fragment {
 
         LinearLayout tabStrip = ((LinearLayout) mBinding.indicator.getChildAt(0));
         for(int i = 0; i < tabStrip.getChildCount(); i++) {
-            tabStrip.getChildAt(i).setOnTouchListener(new View.OnTouchListener() {
-                @Override
-                public boolean onTouch(View v, MotionEvent event) {
-                    return true;
-                }
-            });
+            tabStrip.getChildAt(i).setOnTouchListener((v, event) -> true);
         }
     }
 
@@ -142,6 +135,7 @@ public class JamiAccountCreationFragment extends Fragment {
             super(fm);
         }
 
+        @NonNull
         @Override
         public Fragment getItem(int position) {
             Fragment fragment = null;
@@ -157,7 +151,6 @@ public class JamiAccountCreationFragment extends Fragment {
                     fragment = ProfileCreationFragment.newInstance(ringAccountViewModel);
                     break;
             }
-
             return fragment;
         }
 
diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java
index 9c718c39c11e51ea5ee7a9f2b67e9f2c48b9038c..6db6ca0207f8ddedec0740cb8023722bb14cc594 100644
--- a/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/JamiAccountPasswordFragment.java
@@ -63,6 +63,10 @@ public class JamiAccountPasswordFragment extends BaseSupportFragment<JamiAccount
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        setRetainInstance(true);
+        if (savedInstanceState != null && model == null) {
+            model = (AccountCreationModelImpl) savedInstanceState.getSerializable(KEY_MODEL);
+        }
         binding = FragAccJamiPasswordBinding.inflate(inflater, container, false);
         ((JamiApplication) requireActivity().getApplication()).getInjectionComponent().inject(this);
         return binding.getRoot();
@@ -77,10 +81,6 @@ public class JamiAccountPasswordFragment extends BaseSupportFragment<JamiAccount
     @Override
     public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-        setRetainInstance(true);
-        if (savedInstanceState != null) {
-            model = (AccountCreationModelImpl) savedInstanceState.getSerializable(KEY_MODEL);
-        }
 
         binding.createAccount.setOnClickListener(v -> presenter.createAccount());
         binding.ringPasswordSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java
index 75f8d81eac61b7c7a2f3c20401453f668fd6c0ca..bbd8b045d082e7f4e716555269581ab0be37a645 100644
--- a/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/JamiAccountUsernameFragment.java
@@ -49,6 +49,7 @@ import cx.ring.utils.RegisteredNameFilter;
 public class JamiAccountUsernameFragment extends BaseSupportFragment<JamiAccountCreationPresenter>
         implements JamiAccountCreationView {
 
+    private static final String KEY_MODEL = "model";
     private AccountCreationModel model;
     private FragAccJamiUsernameBinding binding;
 
@@ -58,9 +59,19 @@ public class JamiAccountUsernameFragment extends BaseSupportFragment<JamiAccount
         return fragment;
     }
 
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        if (model != null)
+            outState.putSerializable(KEY_MODEL, model);
+    }
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        setRetainInstance(true);
+        if (savedInstanceState != null && model == null) {
+            model = (AccountCreationModelImpl) savedInstanceState.getSerializable(KEY_MODEL);
+        }
         binding = FragAccJamiUsernameBinding.inflate(inflater, container, false);
         ((JamiApplication) getActivity().getApplication()).getInjectionComponent().inject(this);
         return binding.getRoot();
diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java
index b71fb6dc74d65bf1b713170c5f18e008c19dccb0..f983c22c099947bcb61a37cb80ae966f7842f5c4 100644
--- a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountFragment.java
@@ -65,16 +65,24 @@ public class JamiLinkAccountFragment extends BaseSupportFragment {
         }
     };
 
-
     public static JamiLinkAccountFragment newInstance(AccountCreationModelImpl ringAccountViewModel) {
         JamiLinkAccountFragment fragment = new JamiLinkAccountFragment();
         fragment.model = ringAccountViewModel;
         return fragment;
     }
 
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        outState.putSerializable("model", model);
+    }
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        setRetainInstance(true);
+        if (savedInstanceState != null && model == null) {
+            model = (AccountCreationModel) savedInstanceState.getSerializable("model");
+        }
         mBinding = FragAccJamiLinkBinding.inflate(inflater, container, false);
         return mBinding.getRoot();
     }
@@ -109,7 +117,6 @@ public class JamiLinkAccountFragment extends BaseSupportFragment {
 
             }
         });
-
     }
 
     @Override
@@ -132,7 +139,6 @@ public class JamiLinkAccountFragment extends BaseSupportFragment {
     }
 
     private static class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
-
         AccountCreationModelImpl ringAccountViewModel;
         SparseArray<Fragment> mRegisteredFragments = new SparseArray<>();
 
diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java
index f592d815fc15ccf49ef8ee6ae10eb4265878c836..1c614317d58e652b2337a2cd8801e8951828e8ff 100644
--- a/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/JamiLinkAccountPasswordFragment.java
@@ -24,7 +24,6 @@ import android.content.Context;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
-import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -33,13 +32,9 @@ import android.view.inputmethod.InputMethodManager;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentStatePagerAdapter;
 
 import cx.ring.R;
 import cx.ring.application.JamiApplication;
-import cx.ring.databinding.FragAccJamiLinkBinding;
 import cx.ring.databinding.FragAccJamiLinkPasswordBinding;
 import cx.ring.mvp.AccountCreationModel;
 import cx.ring.mvp.BaseSupportFragment;
@@ -60,6 +55,8 @@ public class JamiLinkAccountPasswordFragment extends BaseSupportFragment<JamiLin
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        if (model == null)
+            return null;
         mBinding = FragAccJamiLinkPasswordBinding.inflate(inflater, container, false);
         ((JamiApplication) getActivity().getApplication()).getInjectionComponent().inject(this);
         return mBinding.getRoot();
@@ -74,7 +71,6 @@ public class JamiLinkAccountPasswordFragment extends BaseSupportFragment<JamiLin
     @Override
     public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-
         mBinding.linkButton.setOnClickListener(v -> presenter.linkClicked());
         mBinding.ringAddPin.setOnEditorActionListener((v, actionId, event) -> {
             if (actionId == EditorInfo.IME_ACTION_DONE) {
diff --git a/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java
index 2780bbb66b03ca00d333c1739547f7041a378c2e..c875815e06e79a247156facf4f6af08a1275bba6 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/account/JamiLinkAccountPresenter.java
@@ -48,12 +48,14 @@ public class JamiLinkAccountPresenter extends RootPresenter<JamiLinkAccountView>
     }
 
     public void passwordChanged(String password) {
-        mAccountCreationModel.setPassword(password);
+        if (mAccountCreationModel != null)
+            mAccountCreationModel.setPassword(password);
         showHideLinkButton();
     }
 
     public void pinChanged(String pin) {
-        mAccountCreationModel.setPin(pin);
+        if (mAccountCreationModel != null)
+            mAccountCreationModel.setPin(pin);
         showHideLinkButton();
     }