diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java
index c31912d91b9ad77cbfa3053659da4136fe15b3a0..671992ca02f0268e7fad0fe2ffee536ae41c7e1c 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java
@@ -29,6 +29,10 @@ public class Introducer implements Parcelable {
         kcpEnabled = in.readByte() != 0;
     }
 
+    public String getFullyQualifiedDomainName() {
+        return fullyQualifiedDomainName;
+    }
+
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeString(type);
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
index ac3aba7a3b0a9179387015db255ddf76a5741ebb..5b5fac48d4ff00e6443cbb1967aafff670b76e77 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
@@ -135,7 +135,7 @@ public final class Provider implements Parcelable {
     public Provider() { }
 
     public Provider(Introducer introducer) {
-       this(introducer.toUrl(), null);
+        this("https://" + introducer.getFullyQualifiedDomainName());
         this.introducer = introducer;
     }
 
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java
index 926b154585555b7ba8a0e2418a44121fd7d5e394..9af14eda4e83566c746b90bee7a32ad74101b1a8 100644
--- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerV5.java
@@ -164,7 +164,9 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
             if (TorStatusObservable.isRunning() && TorStatusObservable.getSocksProxyPort() != -1) {
                 bm.setSocksProxy(SOCKS_PROXY_SCHEME + PROXY_HOST + ":" + TorStatusObservable.getSocksProxyPort());
             }
-            // TODO bm.setIntroducer();
+            if (provider.hasIntroducer()) {
+                bm.setIntroducer(provider.getIntroducer().toUrl());
+            }
         } catch (Exception e) {
             // TODO: improve error message
             return eventSender.setErrorResult(currentDownload, R.string.config_error_found, null);
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java
index 3ac122f8c714e1b9eb19f9e38086c9e99141f006..e4302be5a82eefedbd8cbd4ad2670a0a97c33057 100644
--- a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ProviderSelectionFragment.java
@@ -3,10 +3,8 @@ package se.leap.bitmaskclient.providersetup.fragments;
 import static se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModel.ADD_PROVIDER;
 import static se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModel.INVITE_CODE_PROVIDER;
 
-import android.Manifest;
 import android.app.Activity;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.graphics.Typeface;
 import android.os.Bundle;
 import android.text.Editable;
@@ -20,19 +18,17 @@ import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
 import androidx.lifecycle.ViewModelProvider;
 
 import java.util.ArrayList;
 
 import se.leap.bitmaskclient.R;
-import se.leap.bitmaskclient.providersetup.activities.scanner.ScannerActivity;
 import se.leap.bitmaskclient.base.models.Introducer;
 import se.leap.bitmaskclient.base.models.Provider;
 import se.leap.bitmaskclient.base.utils.ViewHelper;
 import se.leap.bitmaskclient.databinding.FProviderSelectionBinding;
 import se.leap.bitmaskclient.providersetup.activities.CancelCallback;
+import se.leap.bitmaskclient.providersetup.activities.scanner.ScannerActivity;
 import se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModel;
 import se.leap.bitmaskclient.providersetup.fragments.viewmodel.ProviderSelectionViewModelFactory;
 
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java
index 5f9a0f3d448098ea3b435e2008d78af7ea5fc442..fe21c6b37d1e27c431bcc98d3916cdfef09d29be 100644
--- a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/viewmodel/ProviderSelectionViewModel.java
@@ -6,7 +6,6 @@ import static se.leap.bitmaskclient.base.utils.ConfigHelper.isNetworkUrl;
 import android.content.Context;
 import android.content.res.AssetManager;
 import android.text.InputType;
-import android.util.Patterns;
 import android.view.View;
 
 import androidx.lifecycle.ViewModel;