diff --git a/core/interfaces/src/main/java/info/nightscout/interfaces/source/BgSource.kt b/core/interfaces/src/main/java/info/nightscout/interfaces/source/BgSource.kt
index 35a326c040..5cf2991dec 100644
--- a/core/interfaces/src/main/java/info/nightscout/interfaces/source/BgSource.kt
+++ b/core/interfaces/src/main/java/info/nightscout/interfaces/source/BgSource.kt
@@ -1,7 +1,5 @@
 package info.nightscout.interfaces.source
 
-import info.nightscout.database.entities.GlucoseValue
-
 interface BgSource {
 
     /**
@@ -18,12 +16,4 @@ interface BgSource {
      */
     val sensorBatteryLevel: Int
         get() = -1
-
-    /**
-     * Decide if GlucoseValue should be uploaded to NS
-     *
-     * @param glucoseValue glucose value
-     * @return true if GlucoseValue should be uploaded to NS (supported by plugin and enabled in preferences)
-     */
-    fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean
 }
\ No newline at end of file
diff --git a/core/interfaces/src/main/java/info/nightscout/interfaces/source/DoingOwnUploadSource.kt b/core/interfaces/src/main/java/info/nightscout/interfaces/source/DoingOwnUploadSource.kt
deleted file mode 100644
index c44c70ff22..0000000000
--- a/core/interfaces/src/main/java/info/nightscout/interfaces/source/DoingOwnUploadSource.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package info.nightscout.interfaces.source
-
-interface DoingOwnUploadSource
\ No newline at end of file
diff --git a/core/interfaces/src/main/java/info/nightscout/interfaces/source/XDrip.kt b/core/interfaces/src/main/java/info/nightscout/interfaces/source/XDripSource.kt
similarity index 75%
rename from core/interfaces/src/main/java/info/nightscout/interfaces/source/XDrip.kt
rename to core/interfaces/src/main/java/info/nightscout/interfaces/source/XDripSource.kt
index efa60ce74f..121f67e2cd 100644
--- a/core/interfaces/src/main/java/info/nightscout/interfaces/source/XDrip.kt
+++ b/core/interfaces/src/main/java/info/nightscout/interfaces/source/XDripSource.kt
@@ -1,5 +1,5 @@
 package info.nightscout.interfaces.source
 
-interface XDrip {
+interface XDripSource {
     fun isEnabled(): Boolean
 }
\ No newline at end of file
diff --git a/plugins/main/src/main/java/info/nightscout/plugins/general/overview/OverviewFragment.kt b/plugins/main/src/main/java/info/nightscout/plugins/general/overview/OverviewFragment.kt
index fd1efea351..4ebf5c77ad 100644
--- a/plugins/main/src/main/java/info/nightscout/plugins/general/overview/OverviewFragment.kt
+++ b/plugins/main/src/main/java/info/nightscout/plugins/general/overview/OverviewFragment.kt
@@ -65,7 +65,7 @@ import info.nightscout.interfaces.profile.ProfileFunction
 import info.nightscout.interfaces.protection.ProtectionCheck
 import info.nightscout.interfaces.pump.defs.PumpType
 import info.nightscout.interfaces.source.DexcomBoyda
-import info.nightscout.interfaces.source.XDrip
+import info.nightscout.interfaces.source.XDripSource
 import info.nightscout.interfaces.ui.UiInteraction
 import info.nightscout.interfaces.utils.JsonHelper
 import info.nightscout.interfaces.utils.TrendCalculator
@@ -128,7 +128,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
     @Inject lateinit var activePlugin: ActivePlugin
     @Inject lateinit var iobCobCalculator: IobCobCalculator
     @Inject lateinit var dexcomBoyda: DexcomBoyda
-    @Inject lateinit var xDrip: XDrip
+    @Inject lateinit var xDripSource: XDripSource
     @Inject lateinit var notificationStore: NotificationStore
     @Inject lateinit var quickWizard: QuickWizard
     @Inject lateinit var config: Config
@@ -400,7 +400,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
                 }
 
                 R.id.cgm_button          -> {
-                    if (xDrip.isEnabled())
+                    if (xDripSource.isEnabled())
                         openCgmApp("com.eveningoutpost.dexdrip")
                     else if (dexcomBoyda.isEnabled()) {
                         dexcomBoyda.findDexcomPackageName()?.let {
@@ -411,7 +411,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
                 }
 
                 R.id.calibration_button  -> {
-                    if (xDrip.isEnabled()) {
+                    if (xDripSource.isEnabled()) {
                         uiInteraction.runCalibrationDialog(childFragmentManager)
                     } else if (dexcomBoyda.isEnabled()) {
                         try {
@@ -577,7 +577,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
                 && sp.getBoolean(R.string.key_show_insulin_button, true)).toVisibility()
 
             // **** Calibration & CGM buttons ****
-            val xDripIsBgSource = xDrip.isEnabled()
+            val xDripIsBgSource = xDripSource.isEnabled()
             val dexcomIsSource = dexcomBoyda.isEnabled()
             binding.buttonsLayout.calibrationButton.visibility = (xDripIsBgSource && actualBG != null && sp.getBoolean(R.string.key_show_calibration_button, true)).toVisibility()
             if (dexcomIsSource) {
diff --git a/plugins/source/src/main/java/info/nightscout/source/AidexPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/AidexPlugin.kt
index 5a78d807b8..38c78c287d 100644
--- a/plugins/source/src/main/java/info/nightscout/source/AidexPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/AidexPlugin.kt
@@ -35,17 +35,13 @@ class AidexPlugin @Inject constructor(
         .mainType(PluginType.BGSOURCE)
         .fragmentClass(BGSourceFragment::class.java.name)
         .pluginIcon((info.nightscout.core.main.R.drawable.ic_blooddrop_48))
+        .preferencesId(R.xml.pref_bgsource)
         .pluginName(R.string.aidex)
         .shortName(R.string.aidex_short)
         .description(R.string.description_source_aidex),
     aapsLogger, rh, injector
 ), BgSource {
 
-    /**
-     * Aidex App doesn't have upload to NS
-     */
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean = true
-
     // Allow only for pumpcontrol or dev & engineering_mode
     override fun specialEnableCondition(): Boolean {
         return config.APS.not() || config.isDev() && config.isEngineeringMode()
diff --git a/plugins/source/src/main/java/info/nightscout/source/DexcomPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/DexcomPlugin.kt
index 7aefb92707..19ecf845b0 100644
--- a/plugins/source/src/main/java/info/nightscout/source/DexcomPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/DexcomPlugin.kt
@@ -45,7 +45,6 @@ class DexcomPlugin @Inject constructor(
     injector: HasAndroidInjector,
     rh: ResourceHelper,
     aapsLogger: AAPSLogger,
-    private val sp: SP,
     private val context: Context,
     config: Config
 ) : PluginBase(
@@ -53,9 +52,9 @@ class DexcomPlugin @Inject constructor(
         .mainType(PluginType.BGSOURCE)
         .fragmentClass(BGSourceFragment::class.java.name)
         .pluginIcon(info.nightscout.core.main.R.drawable.ic_dexcom_g6)
+        .preferencesId(R.xml.pref_dexcom)
         .pluginName(R.string.dexcom_app_patched)
         .shortName(R.string.dexcom_short)
-        .preferencesId(R.xml.pref_dexcom)
         .description(R.string.description_source_dexcom),
     aapsLogger, rh, injector
 ), BgSource, DexcomBoyda {
@@ -68,12 +67,6 @@ class DexcomPlugin @Inject constructor(
 
     override fun advancedFilteringSupported(): Boolean = true
 
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        (glucoseValue.sourceSensor == GlucoseValue.SourceSensor.DEXCOM_G6_NATIVE ||
-            glucoseValue.sourceSensor == GlucoseValue.SourceSensor.DEXCOM_G5_NATIVE ||
-            glucoseValue.sourceSensor == GlucoseValue.SourceSensor.DEXCOM_NATIVE_UNKNOWN)
-            && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
     override fun onStart() {
         super.onStart()
         requestPermissionIfNeeded()
diff --git a/plugins/source/src/main/java/info/nightscout/source/EversensePlugin.kt b/plugins/source/src/main/java/info/nightscout/source/EversensePlugin.kt
index fef2626d90..c77c133892 100644
--- a/plugins/source/src/main/java/info/nightscout/source/EversensePlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/EversensePlugin.kt
@@ -19,7 +19,6 @@ import info.nightscout.interfaces.source.BgSource
 import info.nightscout.rx.logging.AAPSLogger
 import info.nightscout.rx.logging.LTag
 import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.sharedPreferences.SP
 import info.nightscout.shared.utils.DateUtil
 import kotlinx.coroutines.Dispatchers
 import java.util.Arrays
@@ -30,25 +29,21 @@ import javax.inject.Singleton
 class EversensePlugin @Inject constructor(
     injector: HasAndroidInjector,
     rh: ResourceHelper,
-    aapsLogger: AAPSLogger,
-    private val sp: SP
+    aapsLogger: AAPSLogger
 ) : PluginBase(
     PluginDescription()
-    .mainType(PluginType.BGSOURCE)
-    .fragmentClass(BGSourceFragment::class.java.name)
-    .pluginIcon(info.nightscout.core.main.R.drawable.ic_eversense)
-    .pluginName(R.string.eversense)
-    .shortName(R.string.eversense_shortname)
-    .preferencesId(R.xml.pref_bgsource)
-    .description(R.string.description_source_eversense),
+        .mainType(PluginType.BGSOURCE)
+        .fragmentClass(BGSourceFragment::class.java.name)
+        .pluginIcon(info.nightscout.core.main.R.drawable.ic_eversense)
+        .preferencesId(R.xml.pref_bgsource)
+        .pluginName(R.string.eversense)
+        .shortName(R.string.eversense_shortname)
+        .description(R.string.description_source_eversense),
     aapsLogger, rh, injector
 ), BgSource {
 
     override var sensorBatteryLevel = -1
 
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.EVERSENSE && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
     // cannot be inner class because of needed injection
     class EversenseWorker(
         context: Context,
@@ -126,14 +121,16 @@ class EversensePlugin @Inject constructor(
                     aapsLogger.debug(LTag.BGSOURCE, "calibrationTimestamps" + Arrays.toString(calibrationTimestamps))
                     aapsLogger.debug(LTag.BGSOURCE, "calibrationRecordNumbers" + Arrays.toString(calibrationRecordNumbers))
                     for (i in calibrationGlucoseLevels.indices) {
-                        repository.runTransactionForResult(InsertIfNewByTimestampTherapyEventTransaction(
-                            timestamp = calibrationTimestamps[i],
-                            type = TherapyEvent.Type.FINGER_STICK_BG_VALUE,
-                            glucose = calibrationGlucoseLevels[i].toDouble(),
-                            glucoseType = TherapyEvent.MeterType.FINGER,
-                            glucoseUnit = TherapyEvent.GlucoseUnit.MGDL,
-                            enteredBy = "AndroidAPS-Eversense"
-                        ))
+                        repository.runTransactionForResult(
+                            InsertIfNewByTimestampTherapyEventTransaction(
+                                timestamp = calibrationTimestamps[i],
+                                type = TherapyEvent.Type.FINGER_STICK_BG_VALUE,
+                                glucose = calibrationGlucoseLevels[i].toDouble(),
+                                glucoseType = TherapyEvent.MeterType.FINGER,
+                                glucoseUnit = TherapyEvent.GlucoseUnit.MGDL,
+                                enteredBy = "AndroidAPS-Eversense"
+                            )
+                        )
                             .doOnError {
                                 aapsLogger.error(LTag.DATABASE, "Error while saving therapy event", it)
                                 ret = Result.failure(workDataOf("Error" to it.toString()))
diff --git a/plugins/source/src/main/java/info/nightscout/source/GlimpPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/GlimpPlugin.kt
index 5e1328a22f..1630431807 100644
--- a/plugins/source/src/main/java/info/nightscout/source/GlimpPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/GlimpPlugin.kt
@@ -17,7 +17,6 @@ import info.nightscout.interfaces.source.BgSource
 import info.nightscout.rx.logging.AAPSLogger
 import info.nightscout.rx.logging.LTag
 import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.sharedPreferences.SP
 import kotlinx.coroutines.Dispatchers
 import javax.inject.Inject
 import javax.inject.Singleton
@@ -27,15 +26,14 @@ import javax.inject.Singleton
 class GlimpPlugin @Inject constructor(
     injector: HasAndroidInjector,
     rh: ResourceHelper,
-    aapsLogger: AAPSLogger,
-    private val sp: SP
+    aapsLogger: AAPSLogger
 ) : PluginBase(
     PluginDescription()
         .mainType(PluginType.BGSOURCE)
         .fragmentClass(BGSourceFragment::class.java.name)
         .pluginIcon(info.nightscout.core.main.R.drawable.ic_glimp)
-        .pluginName(R.string.glimp)
         .preferencesId(R.xml.pref_bgsource)
+        .pluginName(R.string.glimp)
         .description(R.string.description_source_glimp),
     aapsLogger, rh, injector
 ), BgSource {
@@ -78,8 +76,4 @@ class GlimpPlugin @Inject constructor(
             return ret
         }
     }
-
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.LIBRE_1_GLIMP && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
 }
\ No newline at end of file
diff --git a/plugins/source/src/main/java/info/nightscout/source/GlunovoPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/GlunovoPlugin.kt
index 2c7bf928ba..3bf28db760 100644
--- a/plugins/source/src/main/java/info/nightscout/source/GlunovoPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/GlunovoPlugin.kt
@@ -45,8 +45,8 @@ class GlunovoPlugin @Inject constructor(
         .mainType(PluginType.BGSOURCE)
         .fragmentClass(BGSourceFragment::class.java.name)
         .pluginIcon(info.nightscout.core.main.R.drawable.ic_glunovo)
-        .pluginName(R.string.glunovo)
         .preferencesId(R.xml.pref_bgsource)
+        .pluginName(R.string.glunovo)
         .shortName(R.string.glunovo)
         .description(R.string.description_source_glunovo),
     aapsLogger, resourceHelper, injector
@@ -167,9 +167,6 @@ class GlunovoPlugin @Inject constructor(
         }
     }
 
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.GLUNOVO_NATIVE && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
     companion object {
 
         const val AUTHORITY = "alexpr.co.uk.infinivocgm.cgm_db.CgmExternalProvider/"
diff --git a/plugins/source/src/main/java/info/nightscout/source/IntelligoPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/IntelligoPlugin.kt
index 411a30f0ac..0b9c3335d6 100644
--- a/plugins/source/src/main/java/info/nightscout/source/IntelligoPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/IntelligoPlugin.kt
@@ -48,8 +48,8 @@ class IntelligoPlugin @Inject constructor(
         .mainType(PluginType.BGSOURCE)
         .fragmentClass(BGSourceFragment::class.java.name)
         .pluginIcon(info.nightscout.core.ui.R.drawable.ic_intelligo)
-        .pluginName(R.string.intelligo)
         .preferencesId(R.xml.pref_bgsource)
+        .pluginName(R.string.intelligo)
         .shortName(R.string.intelligo)
         .description(R.string.description_source_intelligo),
     aapsLogger, resourceHelper, injector
@@ -175,14 +175,9 @@ class IntelligoPlugin @Inject constructor(
         }
     }
 
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.INTELLIGO_NATIVE && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
     companion object {
 
         const val AUTHORITY = "alexpr.co.uk.infinivocgm.intelligo.cgm_db.CgmExternalProvider"
-
-        //const val AUTHORITY = "alexpr.co.uk.infinivocgm.cgm_db.CgmExternalProvider/"
         const val TABLE_NAME = "CgmReading"
         const val INTERVAL = 180000L // 3 min
     }
diff --git a/plugins/source/src/main/java/info/nightscout/source/MM640gPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/MM640gPlugin.kt
index 41c60db626..f8e5521a0d 100644
--- a/plugins/source/src/main/java/info/nightscout/source/MM640gPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/MM640gPlugin.kt
@@ -16,7 +16,6 @@ import info.nightscout.interfaces.source.BgSource
 import info.nightscout.rx.logging.AAPSLogger
 import info.nightscout.rx.logging.LTag
 import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.sharedPreferences.SP
 import info.nightscout.shared.utils.DateUtil
 import kotlinx.coroutines.Dispatchers
 import org.json.JSONArray
@@ -28,15 +27,15 @@ import javax.inject.Singleton
 class MM640gPlugin @Inject constructor(
     injector: HasAndroidInjector,
     rh: ResourceHelper,
-    aapsLogger: AAPSLogger,
-    private val sp: SP
+    aapsLogger: AAPSLogger
 ) : PluginBase(
     PluginDescription()
-    .mainType(PluginType.BGSOURCE)
-    .fragmentClass(BGSourceFragment::class.java.name)
-    .pluginIcon(info.nightscout.core.main.R.drawable.ic_generic_cgm)
-    .pluginName(R.string.mm640g)
-    .description(R.string.description_source_mm640g),
+        .mainType(PluginType.BGSOURCE)
+        .fragmentClass(BGSourceFragment::class.java.name)
+        .preferencesId(R.xml.pref_bgsource)
+        .pluginIcon(info.nightscout.core.main.R.drawable.ic_generic_cgm)
+        .pluginName(R.string.mm640g)
+        .description(R.string.description_source_mm640g),
     aapsLogger, rh, injector
 ), BgSource {
 
@@ -75,6 +74,7 @@ class MM640gPlugin @Inject constructor(
                                         trendArrow = GlucoseValue.TrendArrow.fromString(jsonObject.getString("direction")),
                                         sourceSensor = GlucoseValue.SourceSensor.MM_600_SERIES
                                     )
+
                                 else  -> aapsLogger.debug(LTag.BGSOURCE, "Unknown entries type: $type")
                             }
                         }
@@ -98,8 +98,4 @@ class MM640gPlugin @Inject constructor(
             return ret
         }
     }
-
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.MM_600_SERIES && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
 }
\ No newline at end of file
diff --git a/plugins/source/src/main/java/info/nightscout/source/NSClientSourcePlugin.kt b/plugins/source/src/main/java/info/nightscout/source/NSClientSourcePlugin.kt
index d4aee71030..d6252a6ca8 100644
--- a/plugins/source/src/main/java/info/nightscout/source/NSClientSourcePlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/NSClientSourcePlugin.kt
@@ -7,7 +7,6 @@ import info.nightscout.interfaces.plugin.PluginBase
 import info.nightscout.interfaces.plugin.PluginDescription
 import info.nightscout.interfaces.plugin.PluginType
 import info.nightscout.interfaces.source.BgSource
-import info.nightscout.interfaces.source.DoingOwnUploadSource
 import info.nightscout.interfaces.source.NSClientSource
 import info.nightscout.rx.logging.AAPSLogger
 import info.nightscout.shared.interfaces.ResourceHelper
@@ -31,15 +30,13 @@ class NSClientSourcePlugin @Inject constructor(
         .alwaysEnabled(config.NSCLIENT)
         .setDefault(config.NSCLIENT),
     aapsLogger, rh, injector
-), BgSource, NSClientSource, DoingOwnUploadSource {
+), BgSource, NSClientSource {
 
     private var lastBGTimeStamp: Long = 0
     private var isAdvancedFilteringEnabled = false
 
     override fun advancedFilteringSupported(): Boolean = isAdvancedFilteringEnabled
 
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean = false
-
     override fun detectSource(glucoseValue: GlucoseValue) {
         if (glucoseValue.timestamp > lastBGTimeStamp) {
             isAdvancedFilteringEnabled = arrayOf(
diff --git a/plugins/source/src/main/java/info/nightscout/source/PoctechPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/PoctechPlugin.kt
index e4aa9ce32e..28fb917fb8 100644
--- a/plugins/source/src/main/java/info/nightscout/source/PoctechPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/PoctechPlugin.kt
@@ -18,7 +18,6 @@ import info.nightscout.interfaces.utils.JsonHelper.safeGetString
 import info.nightscout.rx.logging.AAPSLogger
 import info.nightscout.rx.logging.LTag
 import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.sharedPreferences.SP
 import kotlinx.coroutines.Dispatchers
 import org.json.JSONArray
 import org.json.JSONException
@@ -29,16 +28,15 @@ import javax.inject.Singleton
 class PoctechPlugin @Inject constructor(
     injector: HasAndroidInjector,
     rh: ResourceHelper,
-    aapsLogger: AAPSLogger,
-    private val sp: SP
+    aapsLogger: AAPSLogger
 ) : PluginBase(
     PluginDescription()
-    .mainType(PluginType.BGSOURCE)
-    .fragmentClass(BGSourceFragment::class.java.name)
-    .pluginIcon(info.nightscout.core.main.R.drawable.ic_poctech)
-    .pluginName(R.string.poctech)
-    .preferencesId(R.xml.pref_bgsource)
-    .description(R.string.description_source_poctech),
+        .mainType(PluginType.BGSOURCE)
+        .fragmentClass(BGSourceFragment::class.java.name)
+        .pluginIcon(info.nightscout.core.main.R.drawable.ic_poctech)
+        .preferencesId(R.xml.pref_bgsource)
+        .pluginName(R.string.poctech)
+        .description(R.string.description_source_poctech),
     aapsLogger, rh, injector
 ), BgSource {
 
@@ -91,8 +89,4 @@ class PoctechPlugin @Inject constructor(
             return ret
         }
     }
-
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.POCTECH_NATIVE && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
 }
\ No newline at end of file
diff --git a/plugins/source/src/main/java/info/nightscout/source/RandomBgPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/RandomBgPlugin.kt
index 0ba41981ec..0beff92a8e 100644
--- a/plugins/source/src/main/java/info/nightscout/source/RandomBgPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/RandomBgPlugin.kt
@@ -18,7 +18,6 @@ import info.nightscout.interfaces.source.BgSource
 import info.nightscout.rx.logging.AAPSLogger
 import info.nightscout.rx.logging.LTag
 import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.sharedPreferences.SP
 import info.nightscout.shared.utils.T
 import io.reactivex.rxjava3.disposables.CompositeDisposable
 import io.reactivex.rxjava3.kotlin.plusAssign
@@ -35,7 +34,6 @@ class RandomBgPlugin @Inject constructor(
     injector: HasAndroidInjector,
     rh: ResourceHelper,
     aapsLogger: AAPSLogger,
-    private val sp: SP,
     private val repository: AppRepository,
     private val virtualPump: VirtualPump,
     private val config: Config
@@ -44,9 +42,9 @@ class RandomBgPlugin @Inject constructor(
         .mainType(PluginType.BGSOURCE)
         .fragmentClass(BGSourceFragment::class.java.name)
         .pluginIcon(R.drawable.ic_dice)
+        .preferencesId(R.xml.pref_bgsource)
         .pluginName(R.string.random_bg)
         .shortName(R.string.random_bg_short)
-        .preferencesId(R.xml.pref_bgsource)
         .description(R.string.description_source_random_bg),
     aapsLogger, rh, injector
 ), BgSource {
@@ -73,9 +71,6 @@ class RandomBgPlugin @Inject constructor(
 
     override fun advancedFilteringSupported(): Boolean = true
 
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.RANDOM && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
     override fun onStart() {
         super.onStart()
         val cal = GregorianCalendar()
@@ -116,9 +111,7 @@ class RandomBgPlugin @Inject constructor(
         )
         disposable += repository.runTransactionForResult(CgmSourceTransaction(glucoseValues, emptyList(), null))
             .subscribe({ savedValues ->
-                           savedValues.inserted.forEach {
-                               aapsLogger.debug(LTag.DATABASE, "Inserted bg $it")
-                           }
+                           savedValues.inserted.forEach { aapsLogger.debug(LTag.DATABASE, "Inserted bg $it") }
                        }, { aapsLogger.error(LTag.DATABASE, "Error while saving values from Random plugin", it) }
             )
     }
diff --git a/plugins/source/src/main/java/info/nightscout/source/TomatoPlugin.kt b/plugins/source/src/main/java/info/nightscout/source/TomatoPlugin.kt
index 1c4d0432ab..7075ed516c 100644
--- a/plugins/source/src/main/java/info/nightscout/source/TomatoPlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/TomatoPlugin.kt
@@ -25,17 +25,16 @@ import javax.inject.Singleton
 class TomatoPlugin @Inject constructor(
     injector: HasAndroidInjector,
     rh: ResourceHelper,
-    aapsLogger: AAPSLogger,
-    private val sp: SP
+    aapsLogger: AAPSLogger
 ) : PluginBase(
     PluginDescription()
-    .mainType(PluginType.BGSOURCE)
-    .fragmentClass(BGSourceFragment::class.java.name)
-    .pluginIcon(info.nightscout.core.main.R.drawable.ic_sensor)
-    .pluginName(R.string.tomato)
-    .preferencesId(R.xml.pref_bgsource)
-    .shortName(R.string.tomato_short)
-    .description(R.string.description_source_tomato),
+        .mainType(PluginType.BGSOURCE)
+        .fragmentClass(BGSourceFragment::class.java.name)
+        .pluginIcon(info.nightscout.core.main.R.drawable.ic_sensor)
+        .preferencesId(R.xml.pref_bgsource)
+        .pluginName(R.string.tomato)
+        .shortName(R.string.tomato_short)
+        .description(R.string.description_source_tomato),
     aapsLogger, rh, injector
 ), BgSource {
 
@@ -78,8 +77,4 @@ class TomatoPlugin @Inject constructor(
             return ret
         }
     }
-
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean =
-        glucoseValue.sourceSensor == GlucoseValue.SourceSensor.LIBRE_1_TOMATO && sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false)
-
 }
\ No newline at end of file
diff --git a/plugins/source/src/main/java/info/nightscout/source/XdripSourcePlugin.kt b/plugins/source/src/main/java/info/nightscout/source/XdripSourcePlugin.kt
index 227fa23f42..39bcc209bf 100644
--- a/plugins/source/src/main/java/info/nightscout/source/XdripSourcePlugin.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/XdripSourcePlugin.kt
@@ -15,8 +15,7 @@ import info.nightscout.interfaces.plugin.PluginDescription
 import info.nightscout.interfaces.plugin.PluginType
 import info.nightscout.interfaces.receivers.Intents
 import info.nightscout.interfaces.source.BgSource
-import info.nightscout.interfaces.source.DoingOwnUploadSource
-import info.nightscout.interfaces.source.XDrip
+import info.nightscout.interfaces.source.XDripSource
 import info.nightscout.rx.logging.AAPSLogger
 import info.nightscout.rx.logging.LTag
 import info.nightscout.shared.interfaces.ResourceHelper
@@ -31,19 +30,18 @@ class XdripSourcePlugin @Inject constructor(
     aapsLogger: AAPSLogger
 ) : PluginBase(
     PluginDescription()
-    .mainType(PluginType.BGSOURCE)
-    .fragmentClass(BGSourceFragment::class.java.name)
-    .pluginIcon((info.nightscout.core.main.R.drawable.ic_blooddrop_48))
-    .pluginName(R.string.source_xdrip)
-    .description(R.string.description_source_xdrip),
+        .mainType(PluginType.BGSOURCE)
+        .fragmentClass(BGSourceFragment::class.java.name)
+        .pluginIcon((info.nightscout.core.main.R.drawable.ic_blooddrop_48))
+        .preferencesId(R.xml.pref_bgsource)
+        .pluginName(R.string.source_xdrip)
+        .description(R.string.description_source_xdrip),
     aapsLogger, rh, injector
-), BgSource, DoingOwnUploadSource, XDrip {
+), BgSource, XDripSource {
 
     private var advancedFiltering = false
     override var sensorBatteryLevel = -1
 
-    override fun shouldUploadToNs(glucoseValue: GlucoseValue): Boolean  = false
-
     override fun advancedFilteringSupported(): Boolean = advancedFiltering
 
     private fun detectSource(glucoseValue: GlucoseValue) {
@@ -82,8 +80,10 @@ class XdripSourcePlugin @Inject constructor(
                 raw = bundle.getDouble(Intents.EXTRA_RAW, 0.0),
                 noise = null,
                 trendArrow = GlucoseValue.TrendArrow.fromString(bundle.getString(Intents.EXTRA_BG_SLOPE_NAME)),
-                sourceSensor = GlucoseValue.SourceSensor.fromString(bundle.getString(Intents.XDRIP_DATA_SOURCE_DESCRIPTION)
-                    ?: "")
+                sourceSensor = GlucoseValue.SourceSensor.fromString(
+                    bundle.getString(Intents.XDRIP_DATA_SOURCE_DESCRIPTION)
+                        ?: ""
+                )
             )
             repository.runTransactionForResult(CgmSourceTransaction(glucoseValues, emptyList(), null))
                 .doOnError {
diff --git a/plugins/source/src/main/java/info/nightscout/source/di/SourceModule.kt b/plugins/source/src/main/java/info/nightscout/source/di/SourceModule.kt
index 7ef977156b..74cc1dc105 100644
--- a/plugins/source/src/main/java/info/nightscout/source/di/SourceModule.kt
+++ b/plugins/source/src/main/java/info/nightscout/source/di/SourceModule.kt
@@ -5,7 +5,7 @@ import dagger.Module
 import dagger.android.ContributesAndroidInjector
 import info.nightscout.interfaces.source.DexcomBoyda
 import info.nightscout.interfaces.source.NSClientSource
-import info.nightscout.interfaces.source.XDrip
+import info.nightscout.interfaces.source.XDripSource
 import info.nightscout.source.AidexPlugin
 import info.nightscout.source.BGSourceFragment
 import info.nightscout.source.DexcomPlugin
@@ -45,6 +45,6 @@ abstract class SourceModule {
 
         @Binds fun bindNSClientSource(nsClientSourcePlugin: NSClientSourcePlugin): NSClientSource
         @Binds fun bindDexcomBoyda(dexcomPlugin: DexcomPlugin): DexcomBoyda
-        @Binds fun bindXDrip(xdripSourcePlugin: XdripSourcePlugin): XDrip
+        @Binds fun bindXDrip(xdripSourcePlugin: XdripSourcePlugin): XDripSource
     }
 }
\ No newline at end of file
diff --git a/plugins/source/src/test/java/info/nightscout/source/GlimpPluginTest.kt b/plugins/source/src/test/java/info/nightscout/source/GlimpPluginTest.kt
index be6fc799ba..493259c63d 100644
--- a/plugins/source/src/test/java/info/nightscout/source/GlimpPluginTest.kt
+++ b/plugins/source/src/test/java/info/nightscout/source/GlimpPluginTest.kt
@@ -18,7 +18,7 @@ class GlimpPluginTest : TestBase() {
 
     @BeforeEach
     fun setup() {
-        glimpPlugin = GlimpPlugin({ AndroidInjector { } }, rh, aapsLogger, sp)
+        glimpPlugin = GlimpPlugin({ AndroidInjector { } }, rh, aapsLogger)
     }
 
     @Test fun advancedFilteringSupported() {
diff --git a/plugins/source/src/test/java/info/nightscout/source/MM640GPluginTest.kt b/plugins/source/src/test/java/info/nightscout/source/MM640GPluginTest.kt
index 4d71051ef7..bd71ea29b3 100644
--- a/plugins/source/src/test/java/info/nightscout/source/MM640GPluginTest.kt
+++ b/plugins/source/src/test/java/info/nightscout/source/MM640GPluginTest.kt
@@ -3,7 +3,6 @@ package info.nightscout.source
 import dagger.android.AndroidInjector
 import info.nightscout.androidaps.TestBase
 import info.nightscout.shared.interfaces.ResourceHelper
-import info.nightscout.shared.sharedPreferences.SP
 import org.junit.jupiter.api.Assertions
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
@@ -14,11 +13,10 @@ class MM640GPluginTest : TestBase() {
     private lateinit var mM640gPlugin: MM640gPlugin
 
     @Mock lateinit var rh: ResourceHelper
-    @Mock lateinit var sp: SP
 
     @BeforeEach
     fun setup() {
-        mM640gPlugin = MM640gPlugin({ AndroidInjector { } }, rh, aapsLogger, sp)
+        mM640gPlugin = MM640gPlugin({ AndroidInjector { } }, rh, aapsLogger)
     }
 
     @Test fun advancedFilteringSupported() {
diff --git a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/DataSyncSelectorV1.kt b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/DataSyncSelectorV1.kt
index 75cefbf012..7551996caf 100644
--- a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/DataSyncSelectorV1.kt
+++ b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/DataSyncSelectorV1.kt
@@ -4,6 +4,7 @@ import info.nightscout.core.utils.waitMillis
 import info.nightscout.database.impl.AppRepository
 import info.nightscout.interfaces.plugin.ActivePlugin
 import info.nightscout.interfaces.profile.ProfileFunction
+import info.nightscout.interfaces.source.NSClientSource
 import info.nightscout.interfaces.sync.DataSyncSelector
 import info.nightscout.interfaces.utils.JsonHelper
 import info.nightscout.plugins.sync.R
@@ -74,6 +75,9 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private var running = false
     private val sync = Any()
+
+    private val bgUploadEnabled get() = sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false) && activePlugin.activeBgSource !is NSClientSource
+
     override suspend fun doUpload() {
         synchronized(sync) {
             if (running) {
@@ -154,7 +158,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastBolusIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_bolus_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting Bolus data sync from $lastSynced")
             sp.putLong(R.string.key_ns_bolus_last_synced_id, lastSynced)
         }
     }
@@ -203,7 +206,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastCarbsIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_carbs_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting Carbs data sync from $lastSynced")
             sp.putLong(R.string.key_ns_carbs_last_synced_id, lastSynced)
         }
     }
@@ -252,7 +254,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastBolusCalculatorResultsIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_bolus_calculator_result_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting BolusCalculatorResult data sync from $lastSynced")
             sp.putLong(R.string.key_ns_bolus_calculator_result_last_synced_id, lastSynced)
         }
     }
@@ -301,7 +302,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastTempTargetsIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_temporary_target_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting TemporaryTarget data sync from $lastSynced")
             sp.putLong(R.string.key_ns_temporary_target_last_synced_id, lastSynced)
         }
     }
@@ -350,7 +350,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastFoodIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_food_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting Food data sync from $lastSynced")
             sp.putLong(R.string.key_ns_food_last_synced_id, lastSynced)
         }
     }
@@ -399,7 +398,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastGlucoseValueIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_glucose_value_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting GlucoseValue data sync from $lastSynced")
             sp.putLong(R.string.key_ns_glucose_value_last_synced_id, lastSynced)
         }
     }
@@ -419,7 +417,7 @@ class DataSyncSelectorV1 @Inject constructor(
             appRepository.getNextSyncElementGlucoseValue(startId).blockingGet()?.let { gv ->
                 aapsLogger.info(LTag.NSCLIENT, "Loading GlucoseValue data Start: $startId ${gv.first} forID: ${gv.second.id} ")
                 val dataPair = DataSyncSelector.PairGlucoseValue(gv.first, gv.second.id)
-                if (activePlugin.activeBgSource.shouldUploadToNs(gv.first)) {
+                if (bgUploadEnabled) {
                     when {
                         // new record with existing NS id => must be coming from NS => ignore
                         gv.first.id == gv.second.id && gv.first.interfaceIDs.nightscoutId != null ->
@@ -450,7 +448,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastTherapyEventIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_therapy_event_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting TherapyEvents data sync from $lastSynced")
             sp.putLong(R.string.key_ns_therapy_event_last_synced_id, lastSynced)
         }
     }
@@ -499,7 +496,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastDeviceStatusIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_device_status_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting DeviceStatus data sync from $lastSynced")
             sp.putLong(R.string.key_ns_device_status_last_synced_id, lastSynced)
         }
     }
@@ -531,7 +527,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastTemporaryBasalIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_temporary_basal_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting TemporaryBasal data sync from $lastSynced")
             sp.putLong(R.string.key_ns_temporary_basal_last_synced_id, lastSynced)
         }
     }
@@ -583,7 +578,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastExtendedBolusIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_extended_bolus_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting ExtendedBolus data sync from $lastSynced")
             sp.putLong(R.string.key_ns_extended_bolus_last_synced_id, lastSynced)
         }
     }
@@ -635,7 +629,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastProfileSwitchIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_profile_switch_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting ProfileSwitch data sync from $lastSynced")
             sp.putLong(R.string.key_ns_profile_switch_last_synced_id, lastSynced)
         }
     }
@@ -684,7 +677,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastEffectiveProfileSwitchIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_effective_profile_switch_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting EffectiveProfileSwitch data sync from $lastSynced")
             sp.putLong(R.string.key_ns_effective_profile_switch_last_synced_id, lastSynced)
         }
     }
@@ -733,7 +725,6 @@ class DataSyncSelectorV1 @Inject constructor(
 
     private fun confirmLastOfflineEventIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_offline_event_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting OfflineEvent data sync from $lastSynced")
             sp.putLong(R.string.key_ns_offline_event_last_synced_id, lastSynced)
         }
     }
diff --git a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/NSClientPlugin.kt b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/NSClientPlugin.kt
index 711106bedd..3d400bbee9 100644
--- a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/NSClientPlugin.kt
+++ b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/NSClientPlugin.kt
@@ -21,7 +21,6 @@ import info.nightscout.interfaces.plugin.PluginDescription
 import info.nightscout.interfaces.plugin.PluginType
 import info.nightscout.interfaces.profile.Profile
 import info.nightscout.interfaces.profile.ProfileFunction
-import info.nightscout.interfaces.source.DoingOwnUploadSource
 import info.nightscout.interfaces.sync.DataSyncSelector
 import info.nightscout.interfaces.sync.NsClient
 import info.nightscout.interfaces.sync.Sync
@@ -129,9 +128,6 @@ class NSClientPlugin @Inject constructor(
             preferenceFragment.findPreference<SwitchPreference>(rh.gs(info.nightscout.core.utils.R.string.key_ns_create_announcements_from_carbs_req))?.isVisible = false
         }
         preferenceFragment.findPreference<SwitchPreference>(rh.gs(R.string.key_ns_receive_tbr_eb))?.isVisible = config.isEngineeringMode()
-        if (activePlugin.activeBgSource is DoingOwnUploadSource) {
-            preferenceFragment.findPreference<SwitchPreference>(rh.gs(info.nightscout.core.utils.R.string.key_do_ns_upload))?.isVisible = false
-        }
     }
 
     override val hasWritePermission: Boolean get() = nsClientService?.hasWriteAuth ?: false
diff --git a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclientV3/DataSyncSelectorV3.kt b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclientV3/DataSyncSelectorV3.kt
index 3c5ea4b316..02b4276097 100644
--- a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclientV3/DataSyncSelectorV3.kt
+++ b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclientV3/DataSyncSelectorV3.kt
@@ -6,6 +6,7 @@ import info.nightscout.interfaces.Config
 import info.nightscout.interfaces.nsclient.StoreDataForDb
 import info.nightscout.interfaces.plugin.ActivePlugin
 import info.nightscout.interfaces.profile.ProfileFunction
+import info.nightscout.interfaces.source.NSClientSource
 import info.nightscout.interfaces.sync.DataSyncSelector
 import info.nightscout.interfaces.utils.JsonHelper
 import info.nightscout.plugins.sync.R
@@ -70,6 +71,8 @@ class DataSyncSelectorV3 @Inject constructor(
 
     override fun queueSize(): Long = queueCounter.size()
 
+    private val bgUploadEnabled get() = sp.getBoolean(info.nightscout.core.utils.R.string.key_do_ns_upload, false) && activePlugin.activeBgSource !is NSClientSource
+
     override suspend fun doUpload() {
         rxBus.send(EventNSClientUpdateGuiStatus())
         if ((config.NSCLIENT || sp.getBoolean(R.string.key_ns_upload, true)) && !isPaused) {
@@ -128,7 +131,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastBolusIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_bolus_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting Bolus data sync from $lastSynced")
             sp.putLong(R.string.key_ns_bolus_last_synced_id, lastSynced)
         }
     }
@@ -147,7 +149,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.bolusesRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementBolus(startId).blockingGet()?.let { bolus ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading Bolus data Start: $startId ${bolus.first} forID: ${bolus.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     bolus.first.id == bolus.second.id && bolus.first.interfaceIDs.nightscoutId != null ->
@@ -171,7 +172,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastCarbsIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_carbs_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting Carbs data sync from $lastSynced")
             sp.putLong(R.string.key_ns_carbs_last_synced_id, lastSynced)
         }
     }
@@ -190,7 +190,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.carbsRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementCarbs(startId).blockingGet()?.let { carb ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading Carbs data Start: $startId ${carb.first} forID: ${carb.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     carb.first.id == carb.second.id && carb.first.interfaceIDs.nightscoutId != null ->
@@ -214,7 +213,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastBolusCalculatorResultsIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_bolus_calculator_result_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting BolusCalculatorResult data sync from $lastSynced")
             sp.putLong(R.string.key_ns_bolus_calculator_result_last_synced_id, lastSynced)
         }
     }
@@ -233,7 +231,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.bcrRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementBolusCalculatorResult(startId).blockingGet()?.let { bolusCalculatorResult ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading BolusCalculatorResult data Start: $startId ${bolusCalculatorResult.first} forID: ${bolusCalculatorResult.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     bolusCalculatorResult.first.id == bolusCalculatorResult.second.id && bolusCalculatorResult.first.interfaceIDs.nightscoutId != null ->
@@ -265,7 +262,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastTempTargetsIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_temporary_target_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting TemporaryTarget data sync from $lastSynced")
             sp.putLong(R.string.key_ns_temporary_target_last_synced_id, lastSynced)
         }
     }
@@ -284,7 +280,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.ttsRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementTemporaryTarget(startId).blockingGet()?.let { tt ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading TemporaryTarget data Start: $startId ${tt.first} forID: ${tt.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     tt.first.id == tt.second.id && tt.first.interfaceIDs.nightscoutId != null ->
@@ -308,7 +303,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastFoodIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_food_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting Food data sync from $lastSynced")
             sp.putLong(R.string.key_ns_food_last_synced_id, lastSynced)
         }
     }
@@ -327,7 +321,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.foodsRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementFood(startId).blockingGet()?.let { food ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading Food data Start: $startId ${food.first} forID: ${food.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     food.first.id == food.second.id && food.first.interfaceIDs.nightscoutId != null ->
@@ -351,7 +344,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastGlucoseValueIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_glucose_value_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting GlucoseValue data sync from $lastSynced")
             sp.putLong(R.string.key_ns_glucose_value_last_synced_id, lastSynced)
         }
     }
@@ -370,8 +362,7 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.gvsRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementGlucoseValue(startId).blockingGet()?.let { gv ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading GlucoseValue data Start: $startId ${gv.first} forID: ${gv.second.id} ")
-                if (activePlugin.activeBgSource.shouldUploadToNs(gv.first)) {
+                if (bgUploadEnabled) {
                     when {
                         // new record with existing NS id => must be coming from NS => ignore
                         gv.first.id == gv.second.id && gv.first.interfaceIDs.nightscoutId != null ->
@@ -396,7 +387,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastTherapyEventIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_therapy_event_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting TherapyEvents data sync from $lastSynced")
             sp.putLong(R.string.key_ns_therapy_event_last_synced_id, lastSynced)
         }
     }
@@ -415,7 +405,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.tesRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementTherapyEvent(startId).blockingGet()?.let { te ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading TherapyEvents data Start: $startId ${te.first} forID: ${te.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     te.first.id == te.second.id && te.first.interfaceIDs.nightscoutId != null ->
@@ -439,7 +428,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastDeviceStatusIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_device_status_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting DeviceStatus data sync from $lastSynced")
             sp.putLong(R.string.key_ns_device_status_last_synced_id, lastSynced)
         }
     }
@@ -458,7 +446,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.dssRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementDeviceStatus(startId).blockingGet()?.let { deviceStatus ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading DeviceStatus data Start: $startId $deviceStatus")
                 cont = activePlugin.activeNsClient?.nsAdd("devicestatus", DataSyncSelector.PairDeviceStatus(deviceStatus, lastDbId), "$startId/$lastDbId") ?: false
                 if (cont) confirmLastDeviceStatusIdIfGreater(deviceStatus.id)
                 // with nsId = ignore
@@ -470,7 +457,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastTemporaryBasalIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_temporary_basal_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting TemporaryBasal data sync from $lastSynced")
             sp.putLong(R.string.key_ns_temporary_basal_last_synced_id, lastSynced)
         }
     }
@@ -490,7 +476,6 @@ class DataSyncSelectorV3 @Inject constructor(
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementTemporaryBasal(startId).blockingGet()?.let { tb ->
                 val profile = profileFunction.getProfile(tb.first.timestamp)
-                //aapsLogger.info(LTag.NSCLIENT, "Loading TemporaryBasal data Start: $startId ${tb.first} forID: ${tb.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     tb.first.id == tb.second.id && tb.first.interfaceIDs.nightscoutId != null ->
@@ -514,7 +499,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastExtendedBolusIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_extended_bolus_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting ExtendedBolus data sync from $lastSynced")
             sp.putLong(R.string.key_ns_extended_bolus_last_synced_id, lastSynced)
         }
     }
@@ -533,7 +517,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.ebsRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementExtendedBolus(startId).blockingGet()?.let { eb ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading ExtendedBolus data Start: $startId ${eb.first} forID: ${eb.second.id} ")
                 val profile = profileFunction.getProfile(eb.first.timestamp)
                 if (profile != null) {
                     when {
@@ -560,7 +543,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastProfileSwitchIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_profile_switch_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting ProfileSwitch data sync from $lastSynced")
             sp.putLong(R.string.key_ns_profile_switch_last_synced_id, lastSynced)
         }
     }
@@ -579,7 +561,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.pssRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementProfileSwitch(startId).blockingGet()?.let { ps ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading ProfileSwitch data Start: $startId ${ps.first} forID: ${ps.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     ps.first.id == ps.second.id && ps.first.interfaceIDs.nightscoutId != null ->
@@ -603,7 +584,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastEffectiveProfileSwitchIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_effective_profile_switch_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting EffectiveProfileSwitch data sync from $lastSynced")
             sp.putLong(R.string.key_ns_effective_profile_switch_last_synced_id, lastSynced)
         }
     }
@@ -622,7 +602,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.epssRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementEffectiveProfileSwitch(startId).blockingGet()?.let { ps ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading EffectiveProfileSwitch data Start: $startId ${ps.first} forID: ${ps.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     ps.first.id == ps.second.id && ps.first.interfaceIDs.nightscoutId != null ->
@@ -646,7 +625,6 @@ class DataSyncSelectorV3 @Inject constructor(
 
     private fun confirmLastOfflineEventIdIfGreater(lastSynced: Long) {
         if (lastSynced > sp.getLong(R.string.key_ns_offline_event_last_synced_id, 0)) {
-            //aapsLogger.debug(LTag.NSCLIENT, "Setting OfflineEvent data sync from $lastSynced")
             sp.putLong(R.string.key_ns_offline_event_last_synced_id, lastSynced)
         }
     }
@@ -665,7 +643,6 @@ class DataSyncSelectorV3 @Inject constructor(
             queueCounter.oesRemaining = lastDbId - startId
             rxBus.send(EventNSClientUpdateGuiQueue())
             appRepository.getNextSyncElementOfflineEvent(startId).blockingGet()?.let { oe ->
-                //aapsLogger.info(LTag.NSCLIENT, "Loading OfflineEvent data Start: $startId ${oe.first} forID: ${oe.second.id} ")
                 when {
                     // new record with existing NS id => must be coming from NS => ignore
                     oe.first.id == oe.second.id && oe.first.interfaceIDs.nightscoutId != null ->