diff --git a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt
index ffa86cf54389ce467c8f0b8130d58e12d8eb4eae..5797e0ec608d1a90cd43a9a0c5e8e3b035de958e 100644
--- a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt
+++ b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt
@@ -536,7 +536,15 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
                         }
                     };
                     "BROWSE_PLUGINS" -> {
-                        navigate(_fragBrowser, "https://plugins.grayjay.app");
+                        navigate(_fragBrowser, BrowserFragment.NavigateOptions("https://plugins.grayjay.app/", mapOf(
+                            Pair("grayjay") { req ->
+                                StateApp.instance.contextOrNull?.let {
+                                    if(it is MainActivity) {
+                                        it.handleUrlAll(req.url.toString());
+                                    }
+                                };
+                            }
+                        )));
                     }
                 }
             }
diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourcesFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourcesFragment.kt
index c3d1230b8ea28ccd6b8e2c793707fdfba2659131..39c87028b30b050faa24ebbd1f5107a1c357b772 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourcesFragment.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourcesFragment.kt
@@ -8,6 +8,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.LinearLayout
+import androidx.core.view.isVisible
 import androidx.recyclerview.widget.ItemTouchHelper
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
@@ -25,6 +26,7 @@ import com.futo.platformplayer.views.adapters.DisabledSourceView
 import com.futo.platformplayer.views.adapters.EnabledSourceAdapter
 import com.futo.platformplayer.views.adapters.EnabledSourceViewHolder
 import com.futo.platformplayer.views.adapters.ItemMoveCallback
+import com.futo.platformplayer.views.buttons.BigButton
 import com.futo.platformplayer.views.sources.SourceUnderConstructionView
 import kotlinx.coroutines.runBlocking
 import java.util.Collections
@@ -86,6 +88,14 @@ class SourcesFragment : MainFragment() {
             _containerDisabledViews = findViewById(R.id.container_disabled_views);
             _containerConstruction = findViewById(R.id.container_construction);
 
+            if(StatePlatform.instance.getAvailableClients().isEmpty()) {
+                findViewById<LinearLayout>(R.id.no_sources).isVisible = true;
+                findViewById<LinearLayout>(R.id.plugin_disclaimer).isVisible = false;
+            }
+            findViewById<BigButton>(R.id.button_add_sources).onClick.subscribe {
+                fragment.startActivity(Intent(context, AddSourceOptionsActivity::class.java));
+            };
+
             for(inConstructSource in StatePlugins.instance.getSourcesUnderConstruction(context))
                 _containerConstruction.addView(SourceUnderConstructionView(context, inConstructSource.key, inConstructSource.value));
 
@@ -111,8 +121,6 @@ class SourcesFragment : MainFragment() {
 
                 adapterSourcesEnabled.notifyItemMoved(fromPosition, toPosition);
                 onEnabledChanged(enabledSources);
-                if(toPosition == 0)
-                    onPrimaryChanged(enabledSources.first());
 
                 StatePlatform.instance.setPlatformOrder(enabledSources.map { it.name });
             };
@@ -133,8 +141,6 @@ class SourcesFragment : MainFragment() {
 
                     updateContainerVisibility();
                     onEnabledChanged(enabledSources);
-                    if(index == 0)
-                        onPrimaryChanged(enabledSources.first());
 
                     if(enabledSources.size <= 1)
                         setCanRemove(false);
@@ -221,9 +227,6 @@ class SourcesFragment : MainFragment() {
             _adapterSourcesEnabled.canRemove = canRemove;
         }
 
-        private fun onPrimaryChanged(client: IPlatformClient) {
-            StatePlatform.instance.selectPrimaryClient(client.id);
-        }
         private fun onEnabledChanged(clients: List<IPlatformClient>) {
             runBlocking {
                 StatePlatform.instance.selectClients(*clients.map { it.id }.toTypedArray());
diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt
index 798e1988c20c6f9ce4287323f40ed28e080611d6..1aded91e0866b030a001917d6c1c40a828511b8d 100644
--- a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt
+++ b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt
@@ -94,11 +94,6 @@ class StatePlatform {
     private val _liveEventClientPool = PlatformMultiClientPool("LiveEvents", 1); //Used exclusively for live events
 
 
-    private val _primaryClientPersistent = FragmentedStorage.get<StringStorage>("primaryClient");
-    private var _primaryClientObj : IPlatformClient? = null;
-    val primaryClient : IPlatformClient get() = _primaryClientObj ?: throw IllegalStateException("PlatformState not yet initialized");
-
-
     private val _icons : HashMap<String, ImageVariable> = HashMap();
 
     val hasClients: Boolean get() = _availableClients.size > 0;
@@ -207,20 +202,6 @@ class StatePlatform {
                         .filter { id -> _availableClients.any { it.id == id } }
                         .toTypedArray();
                 }
-
-
-                val primary = _primaryClientPersistent.value;
-                if(primary.isEmpty() || primary == StateDeveloper.DEV_ID) {
-                    selectPrimaryClient(enabled.firstOrNull() ?: _availableClients.first().id);
-                } else if(!_availableClients.any { it.id == primary }) {
-                    selectPrimaryClient(_availableClients.firstOrNull()?.id!!);
-                } else {
-                    selectPrimaryClient(primary);
-                }
-
-                if(!enabled.any { it == primaryClient.id }) {
-                    enabled = enabled.concat(primaryClient.id);
-                }
             }
             selectClients(*enabled);
         };
@@ -323,8 +304,6 @@ class StatePlatform {
                     newClient.initialize();
                     _enabledClients.add(newClient);
                 }
-                if (_primaryClientObj == client)
-                    _primaryClientObj = newClient;
 
                 _availableClients.removeIf { it.id == id };
                 _availableClients.add(newClient);
@@ -365,17 +344,6 @@ class StatePlatform {
         };
     }
 
-    /**
-     * Selects the primary client, meaning the first target for requests.
-     * At the moment, since multi-client requests are not yet implemented, this is the goto client.
-     */
-    fun selectPrimaryClient(id: String) {
-        synchronized(_clientsLock) {
-            _primaryClientObj = getClient(id);
-            _primaryClientPersistent.setAndSave(id);
-        }
-    }
-
     fun getHome(): IPager<IPlatformContent> {
         Logger.i(TAG, "Platform - getHome");
         var clientIdsOngoing = mutableListOf<String>();
@@ -448,14 +416,12 @@ class StatePlatform {
             toAwait.map { PlaceholderPager(5, { PlatformContentPlaceholder(it.first.id) }) });
     }
 
-    fun getHomePrimary(): IPager<IPlatformContent> {
-        return primaryClient.getHome();
-    }
 
     //Search
     fun searchSuggestions(query: String): Array<String> {
         Logger.i(TAG, "Platform - searchSuggestions");
-        return primaryClient.searchSuggestions(query);
+        //TODO: hasSearchSuggestions
+        return getEnabledClients().firstOrNull()?.searchSuggestions(query) ?: arrayOf();
     }
 
     fun search(query: String, type: String? = null, sort: String? = null, filters: Map<String, List<String>> = mapOf(), clientIds: List<String>? = null): IPager<IPlatformContent> {
@@ -887,7 +853,6 @@ class StatePlatform {
         synchronized(_clientsLock) {
             val enabledExisting = _enabledClients.filter { it is DevJSClient };
             val isEnabled = !enabledExisting.isEmpty()
-            val isPrimary = _primaryClientObj is DevJSClient;
 
             for (enabled in enabledExisting) {
                 enabled.disable();
@@ -902,11 +867,7 @@ class StatePlatform {
             devId = newClient.devID;
             try {
                 StateDeveloper.instance.initializeDev(devId!!);
-                if (isPrimary) {
-                    _primaryClientObj = newClient;
-                    _enabledClients.add(0, newClient);
-                    newClient.initialize();
-                } else if (isEnabled) {
+                if (isEnabled) {
                     _enabledClients.add(newClient);
                     newClient.initialize();
                 }
diff --git a/app/src/main/res/layout/fragment_sources.xml b/app/src/main/res/layout/fragment_sources.xml
index 8cb41ff27c0bf438488ddbb099b88117e449bd9b..8a62342247c7222531930bc64850f0f6497bca5b 100644
--- a/app/src/main/res/layout/fragment_sources.xml
+++ b/app/src/main/res/layout/fragment_sources.xml
@@ -17,6 +17,40 @@
             android:orientation="vertical"
             android:paddingStart="20dp"
             android:paddingEnd="20dp">
+
+            <LinearLayout
+                android:id="@+id/no_sources"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:visibility="visible"
+                android:orientation="vertical">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginBottom="10dp">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        app:srcCompat="@drawable/ic_error"
+                        app:tint="#FFF" />
+
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:textColor="#FFF"
+                        android:textSize="12dp"
+                        android:fontFamily="@font/inter_light"
+                        android:text="@string/no_sources_installed"
+                        android:layout_gravity="center"
+                        android:layout_marginStart="8dp"/>
+
+                </LinearLayout>
+            </LinearLayout>
+
             <LinearLayout
                 android:id="@+id/container_enabled"
                 android:layout_width="match_parent"
@@ -91,6 +125,7 @@
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:id="@+id/plugin_disclaimer"
                 android:orientation="horizontal"
                 android:layout_marginTop="10dp"
                 android:layout_marginBottom="10dp">
@@ -113,6 +148,15 @@
 
             </LinearLayout>
 
+            <com.futo.platformplayer.views.buttons.BigButton
+                android:id="@+id/button_add_sources"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                app:buttonIcon="@drawable/ic_explore"
+                app:buttonText="Add Sources"
+                app:buttonSubText="Install new sources to see more content."
+                />
+
         </LinearLayout>
     </ScrollView>
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ac8e4b9bc369766cf40eed17078835fc0e86a51c..fabd85da1d4f3259557d34d9eddec2f298163652 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -214,6 +214,7 @@
     <string name="videos">Videos</string>
     <string name="clear_history">Clear history</string>
     <string name="nothing_to_import">Nothing to import</string>
+    <string name="no_sources_installed">You have no sources installed, please add sources to use the app as intended.</string>
     <string name="enabling_lots_of_sources_can_reduce_the_loading_speed_of_your_application">Enabling lots of sources can reduce the loading speed of your application.</string>
     <string name="support">Support</string>
     <string name="membership">Membership</string>
diff --git a/app/src/playstore/res/raw/plugin_config.json b/app/src/playstore/res/raw/plugin_config.json
index 87ab26d371f3925f69b2066d1918e35c7989c842..72fc5c5bfcd941b6a7fe441c4aaa03719acd333f 100644
--- a/app/src/playstore/res/raw/plugin_config.json
+++ b/app/src/playstore/res/raw/plugin_config.json
@@ -1,7 +1,7 @@
 {
     "SOURCES_EMBEDDED": {
-        "1c291164-294c-4c2d-800d-7bc6d31d0019": "sources/peertube/PeerTubeConfig.json"
+
     },
-    "SOURCES_EMBEDDED_DEFAULT": ["1c291164-294c-4c2d-800d-7bc6d31d0019"],
+    "SOURCES_EMBEDDED_DEFAULT": [],
     "SOURCES_UNDER_CONSTRUCTION": {}
 }