diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5240dbe..a18fabe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,8 +2,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
           package="com.fairphone.updater"
-    android:versionCode="33"
-    android:versionName="33" >
+    android:versionCode="35"
+    android:versionName="35" >
 
     <uses-sdk
         android:minSdkVersion="17"
@@ -94,4 +94,4 @@
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/app/src/main/java/com/fairphone/updater/BetaEnabler.java b/app/src/main/java/com/fairphone/updater/BetaEnabler.java
index 806f60a..988c15b 100644
--- a/app/src/main/java/com/fairphone/updater/BetaEnabler.java
+++ b/app/src/main/java/com/fairphone/updater/BetaEnabler.java
@@ -14,7 +14,6 @@
 
 public class BetaEnabler extends Activity {
 
-    public static final String BETA_DISABLED = "0";
     public static final String BETA_ENABLED = "1";
     
     @Override
diff --git a/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java b/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java
index 3a18116..53f7f30 100644
--- a/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java
+++ b/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java
@@ -635,7 +635,7 @@
         boolean update = false;
         if (mLatestVersion != null)
         {
-	        update = BETA_MODE_ENABLED || mLatestVersion.isNewerVersionThan(mDeviceVersion);
+	        update = mLatestVersion.isNewerVersionThan(mDeviceVersion);
         }
         return update;
     }
diff --git a/app/src/main/java/com/fairphone/updater/UpdaterService.java b/app/src/main/java/com/fairphone/updater/UpdaterService.java
index 04d12fc..3ead72a 100644
--- a/app/src/main/java/com/fairphone/updater/UpdaterService.java
+++ b/app/src/main/java/com/fairphone/updater/UpdaterService.java
@@ -138,11 +138,6 @@
 
     private static void showReinstallAlert(Context context)
     {
-        if ( FairphoneUpdater.BETA_MODE_ENABLED )
-        {
-            return;
-        }
-
 	    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
         
         //Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getResources().getString(R.string.supportAppStoreUrl)));
@@ -332,9 +327,17 @@
                 if(modelWithoutSpaces.startsWith(context.getResources().getString(R.string.FP1Model))) {
                     sb.append("&b_n=").append(URLEncoder.encode(currentVersion.getBuildNumber(), defaultCharset));
                 }
-                sb.append("&ota_v_n=").append(URLEncoder.encode(String.valueOf(currentVersion.getId()), defaultCharset));
-                sb.append("&beta=").append(FairphoneUpdater.BETA_MODE_ENABLED ? BetaEnabler.BETA_ENABLED : BetaEnabler.BETA_DISABLED);
-                sb.append("&dev=").append(FairphoneUpdater.DEV_MODE_ENABLED ? "1" : "0");
+                sb.append("&ap=").append(URLEncoder.encode(String.valueOf(currentVersion.getId()), defaultCharset));
+                if(modelWithoutSpaces.equals(context.getResources().getString(R.string.FP2Model))) {
+                    sb.append("&bp=").append(URLEncoder.encode(String.valueOf(currentVersion.getBasebandVersion()), defaultCharset));
+                }
+                sb.append("&u=").append(URLEncoder.encode(String.valueOf(Utils.getVersionCode(context.getApplicationContext())), defaultCharset));
+                if(FairphoneUpdater.BETA_MODE_ENABLED) {
+                    sb.append("&beta=").append(BetaEnabler.BETA_ENABLED);
+                }
+                if(FairphoneUpdater.DEV_MODE_ENABLED) {
+                    sb.append("&dev=").append("1");
+                }
             } catch (UnsupportedEncodingException e) {
                 Log.e(TAG, "Failed to add extra info on update request: "+e.getLocalizedMessage());
             }
@@ -343,12 +346,6 @@
 
     private static void setNotification(Context currentContext)
     {
-
-        if ( FairphoneUpdater.BETA_MODE_ENABLED )
-        {
-            return;
-        }
-        
         Context context = currentContext.getApplicationContext();
 
         NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
diff --git a/app/src/main/java/com/fairphone/updater/data/Version.java b/app/src/main/java/com/fairphone/updater/data/Version.java
index 2a206a0..1eab656 100644
--- a/app/src/main/java/com/fairphone/updater/data/Version.java
+++ b/app/src/main/java/com/fairphone/updater/data/Version.java
@@ -45,6 +45,8 @@
 
     private final List<Integer> mDependencies;
 
+    private String mBasebandVersion;
+
     public Version()
     {
         super();
@@ -52,6 +54,7 @@
         mAndroidVersion = "";
         mImageType = IMAGE_TYPE_FAIRPHONE;
         mErasePartitionsWarning = false;
+        mBasebandVersion = "";
     }
 
     public Version(Version other)
@@ -61,6 +64,7 @@
         mAndroidVersion = other.mAndroidVersion;
         mImageType = other.mImageType;
         mErasePartitionsWarning = other.hasEraseAllPartitionWarning();
+        mBasebandVersion = other.mBasebandVersion;
     }
 
     public void setEraseAllPartitionWarning()
@@ -110,6 +114,14 @@
         return description;
     }
 
+    public String getBasebandVersion() {
+        return mBasebandVersion;
+    }
+
+    public void setBasebandVersion(String basebandVersion) {
+        this.mBasebandVersion = basebandVersion;
+    }
+
 // --Commented out by Inspection START (06/02/2015 12:25):
 //    public String getAndroidVersion(Resources resources)
 //    {
diff --git a/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java b/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java
index 5334b7f..0511763 100644
--- a/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java
+++ b/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java
@@ -27,7 +27,7 @@
     private static final String CURRENT_VERSION_BUILD_NUMBER = "fairphone.ota.build_number";
     private static final String CURRENT_VERSION_IMAGE_TYPE = "fairphone.ota.image_type";
     private static final String CURRENT_VERSION_ID = "ro.build.version.incremental";                // for FP2
-
+    private static final String CURRENT_VERSION_BASEBAND_VERSION = "gsm.version.baseband";
 
     private static Version version;
     public static Version getDeviceVersion(Context context)
@@ -52,6 +52,7 @@
                 }
                 versionBuilder.setName(versionBuilder.getCurrentImageType());
                 versionBuilder.setBuildNumber(versionBuilder.getBuildNumberFromId());
+                versionBuilder.setBasebandVersion(getSystemData(context, CURRENT_VERSION_BASEBAND_VERSION, knownFPDevice));
             } else {
                 // FP1(U)
                 try
@@ -96,6 +97,9 @@
             case CURRENT_VERSION_ID:
                 result = Utils.getprop(CURRENT_VERSION_ID, useDefaults ? "" : ""); // TODO: define default value for fingerprint
                 break;
+            case CURRENT_VERSION_BASEBAND_VERSION:
+                result = Utils.getprop(CURRENT_VERSION_BASEBAND_VERSION, useDefaults ? "" : ""); // TODO: define default value for baseband version
+                break;
             default:
                 result = "";
                 break;
diff --git a/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java b/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
index f5eab9b..7fcfd91 100644
--- a/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
+++ b/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
@@ -33,10 +33,9 @@
     private final DetailLayoutType mLayoutType;
     private Button mOkButton;
 	private final boolean mIsOSChange;
-    private final boolean mIsOlderVersion;
     private final boolean mHasEraseAllDataWarning;
 
-    public ConfirmationPopupDialog(String version, boolean isOSChange, boolean isOlderVersion, boolean hasEraseAllDataWarning, DetailLayoutType layoutType,
+    public ConfirmationPopupDialog(String version, boolean isOSChange, boolean hasEraseAllDataWarning, DetailLayoutType layoutType,
             ConfirmationPopupDialogListener callback)
     {
         // Empty constructor required for DialogFragment
@@ -46,7 +45,6 @@
         mCallback = callback;
         mLayoutType = layoutType;
         mIsOSChange = isOSChange;
-        mIsOlderVersion = isOlderVersion;
         mHasEraseAllDataWarning = hasEraseAllDataWarning;
     }
 
@@ -81,10 +79,6 @@
         {
             versionTypeText.setText(R.string.a_different_os_from_the_current);
         }
-        else if (mIsOlderVersion)
-        {
-            versionTypeText.setText(R.string.an_older_version_of_os);
-        }
 
         TextView eraseAllDataWarning = (TextView) view.findViewById(R.id.erase_all_data_warning_text);
 
diff --git a/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java b/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java
index 1dcfb0a..2761fe8 100644
--- a/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java
+++ b/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java
@@ -57,7 +57,6 @@
     private DownloadManager mDownloadManager;
     private DetailLayoutType mDetailLayoutType;
     private boolean mIsOSChange;
-    private boolean mIsOlderVersion;
     private Store mSelectedStore;
     private final boolean mIsVersion;
 
@@ -240,35 +239,28 @@
                 mHeaderText = resources.getString(R.string.install_update);
                 mVersionDetailsTitle = resources.getString(R.string.update_version);
                 mIsOSChange = false;
-                mIsOlderVersion = false;
                 break;
 
             case ANDROID:
                 mHeaderText = mSelectedVersion.getHumanReadableName();
                 mVersionDetailsTitle = resources.getString(R.string.new_os);
                 mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_FAIRPHONE);
-                mIsOlderVersion =
-                        (deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP) && deviceVersion.isNewerVersionThan(mSelectedVersion));
                 break;
             case APP_STORE:
                 mHeaderText = FairphoneUpdater.getStoreName(mSelectedStore);
                 mVersionDetailsTitle = resources.getString(R.string.install);
                 mIsOSChange = false;
-                mIsOlderVersion = false;
                 break;
             case LATEST_FAIRPHONE:
                 mHeaderText = mSelectedVersion.getHumanReadableName();
                 mVersionDetailsTitle = resources.getString(R.string.latest_version);
                 mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP);
-                mIsOlderVersion = false;
                 break;
             case FAIRPHONE:
             default:
                 mHeaderText = mSelectedVersion.getHumanReadableName();
-                mVersionDetailsTitle = resources.getString(R.string.older_version);
+                mVersionDetailsTitle = resources.getString(R.string.additional_download);
                 mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP);
-                mIsOlderVersion =
-                        (deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_FAIRPHONE) && deviceVersion.isNewerVersionThan(mSelectedVersion));
                 break;
         }
     }
@@ -406,7 +398,7 @@
     {
         FragmentManager fm = getActivity().getSupportFragmentManager();
         ConfirmationPopupDialog popupDialog =
-                new ConfirmationPopupDialog(version, mIsOSChange, mIsOlderVersion, hasEraseAllDataWarning, mDetailLayoutType, listener);
+                new ConfirmationPopupDialog(version, mIsOSChange, hasEraseAllDataWarning, mDetailLayoutType, listener);
         popupDialog.show(fm, version);
     }
 
@@ -414,7 +406,7 @@
     {
         if (mIsVersion && mSelectedVersion != null)
         {
-            if (mIsOSChange || mIsOlderVersion)
+            if (mIsOSChange)
             {
                 showPopupDialog(mSelectedVersion.getHumanReadableName(), mSelectedVersion.hasEraseAllPartitionWarning(),
                         new ConfirmationPopupDialogListener()
diff --git a/app/src/main/java/com/fairphone/updater/tools/Utils.java b/app/src/main/java/com/fairphone/updater/tools/Utils.java
index c8b3930..cd757dc 100644
--- a/app/src/main/java/com/fairphone/updater/tools/Utils.java
+++ b/app/src/main/java/com/fairphone/updater/tools/Utils.java
@@ -24,6 +24,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.ConnectivityManager;
@@ -692,4 +693,19 @@
         mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent);
         System.exit(0);
     }
+
+    public static int getVersionCode(Context context) {
+        PackageManager packageManager = context.getPackageManager();
+        String packageName = context.getPackageName();
+
+        int versionCode = 0;
+
+        try {
+            versionCode = packageManager.getPackageInfo(packageName, 0).versionCode;
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(TAG, "App versionCode cannot be retrieved", e);
+        }
+
+        return versionCode;
+    }
 }
diff --git a/app/src/main/res/layout/fragment_other_os_options_android_list.xml b/app/src/main/res/layout/fragment_other_os_options_android_list.xml
index 4ff987e..e4343b3 100644
--- a/app/src/main/res/layout/fragment_other_os_options_android_list.xml
+++ b/app/src/main/res/layout/fragment_other_os_options_android_list.xml
@@ -48,7 +48,7 @@
             android:layout_height="wrap_content"
             android:layout_marginBottom="@dimen/main_padding_small"
             android:layout_marginTop="@dimen/main_padding"
-            android:text="@string/older_versions"/>
+            android:text="@string/additional_downloads"/>
 
         <ScrollView
             android:id="@+id/version_list_scroll"
diff --git a/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml b/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml
index ef265ab..a840fb6 100644
--- a/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml
+++ b/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml
@@ -49,7 +49,7 @@
             android:layout_height="wrap_content"
             android:layout_marginBottom="@dimen/main_padding_small"
             android:layout_marginTop="@dimen/main_padding"
-            android:text="@string/older_versions"/>
+            android:text="@string/additional_downloads"/>
 
         <ScrollView
             android:id="@+id/version_list_scroll"
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 1fd8f00..6a4c82c 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Neues Betriebssystem</string>
     <string name="no_space_available_cache_message">Kein Platz verfügbar im Cache</string>
     <string name="no_space_available_sd_card_message">Kein Platz verfügbar auf der SD Karte</string>
-    <string name="older_version">ältere Version</string>
+    <string name="additional_download">Weiterer Download</string>
     <string name="older_version_os_install_confirmation">Bist du sicher, dass du weitermachen willst?</string>
     <string name="older_version_os_install_confirmation_checkbox">Ich kenne und verstehe alle Konsequenzen dieser Installation</string>
-    <string name="older_versions">Ältere Versionen</string>
+    <string name="additional_downloads">Weitere Downloads</string>
     <string name="os_update_has_started_message">Das Update hat begonnen. Dies kann ein wenig dauern, abhängig von der Gechwindigkeit deiner Internet Verbindung.</string>
     <string name="other_os_options">Betrete den fortgeschrittenen Modus</string>
     <string name="please_be_patient">Bitte gedulde dich noch ein wenig&#8230;</string>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 6add2c8..9ea37b7 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Nuevo sistema operativo</string>
     <string name="no_space_available_cache_message">No hay espacio disponible en /cache.</string>
     <string name="no_space_available_sd_card_message">No hay espacio disponible en la tarjeta SD.</string>
-    <string name="older_version">Versión Anterior</string>
+    <string name="additional_download">Descarga adicional</string>
     <string name="older_version_os_install_confirmation">¿Seguro que deseas continuar?</string>
     <string name="older_version_os_install_confirmation_checkbox">Comprendo y acepto las consecuencias de esta instalación.</string>
-    <string name="older_versions">Versiones anteriores</string>
+    <string name="additional_downloads">Descarga(s) adicionales</string>
     <string name="os_update_has_started_message">Actualización en proceso. Puede tardar unos minutos dependiendo de la velocidad de tu red.</string>
     <string name="other_os_options">Accede al modo avanzado</string>
     <string name="please_be_patient">Un momento, por favor&#8230;</string>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 855b5ec..e606a55 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Nouveau système d’exploitation</string>
     <string name="no_space_available_cache_message">Pas d\'espace disponible dans le cache (/cache).</string>
     <string name="no_space_available_sd_card_message">Pas d\'espace disponible sur la carte SD.</string>
-    <string name="older_version">Version dépassée</string>
+    <string name="additional_download">Autre téléchargement</string>
     <string name="older_version_os_install_confirmation">Êtes-vous certain de vouloir continuer ?</string>
     <string name="older_version_os_install_confirmation_checkbox">Je comprends et j\'accepte toutes les implications de cette installation.</string>
-    <string name="older_versions">Anciennes versions</string>
+    <string name="additional_downloads">Autre(s) téléchargement(s)</string>
     <string name="os_update_has_started_message">La mise à jour a démarré. Selon la vitesse de votre connexion réseau, cette opération peut prendre un certain temps.</string>
     <string name="other_os_options">Passer en mode avancé</string>
     <string name="please_be_patient">Veuillez patienter&#8230;</string>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 6abe6e6..4be3687 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Nieuw besturingssysteem</string>
     <string name="no_space_available_cache_message">Geen ruimte beschikbaar in /cache</string>
     <string name="no_space_available_sd_card_message">Geen ruimte beschikbaar op de SD kaart</string>
-    <string name="older_version">Oudere versie</string>
+    <string name="additional_download">Overige download</string>
     <string name="older_version_os_install_confirmation">Weet je zeker dat je wilt doorgaan?</string>
     <string name="older_version_os_install_confirmation_checkbox">Ik ken en begrijp alle implicaties van het uitvoeren van deze installatie</string>
-    <string name="older_versions">Oudere versies</string>
+    <string name="additional_downloads">Overige download(s)</string>
     <string name="os_update_has_started_message">De update is gestart. Dit kan enige tijd duren, afhankelijk van de snelheid van je netwerkverbinding.</string>
     <string name="other_os_options">Open de geavanceerde modus</string>
     <string name="please_be_patient">Een ogenblik geduld&#8230;</string>
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 277c222..b3de181 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -36,12 +36,12 @@
     <string name="invalid_signature_download_message">Ficheiro inválido descarregado: Assinatura errada</string>
     <string name="latest_version">Versão mais recente</string>
     <string name="new_os">Novo Sistema Operativo</string>
-    <string name="no_space_available_cache_message">Sem espaço disponível em /cache. A abortar&#8230;</string>
-    <string name="no_space_available_sd_card_message">Sem espaço disponível na memória. A abortar&#8230;</string>
-    <string name="older_version">Versão anterior</string>
+    <string name="no_space_available_cache_message">Sem espaço disponível em /cache. A abortar…</string>
+    <string name="no_space_available_sd_card_message">Sem espaço disponível na memória. A abortar…</string>
+    <string name="additional_download">Download adicional</string>
     <string name="older_version_os_install_confirmation">Tem a certeza de que quer prosseguir?</string>
     <string name="older_version_os_install_confirmation_checkbox">Tomei conhecimento das implicações desta instalação</string>
-    <string name="older_versions">Versões anteriores</string>
+    <string name="additional_downloads">Downloads adicionais</string>
     <string name="os_update_has_started_message">A actualização foi iniciada. Isto pode levar algum tempo, dependendo da velocidade da sua ligação.</string>
     <string name="other_os_options">Entrar no modo avançado</string>
     <string name="please_be_patient">Por favor aguarde&#8230;</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7a34978..9a949b2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -39,10 +39,10 @@
     <string name="new_os">New operating system</string>
     <string name="no_space_available_cache_message">No space available on /cache.</string>
     <string name="no_space_available_sd_card_message">No space available on SD card.</string>
-    <string name="older_version">Older version</string>
+    <string name="additional_download">Additional download</string>
     <string name="older_version_os_install_confirmation">Are you sure you want to continue?</string>
     <string name="older_version_os_install_confirmation_checkbox">I know and understand all implications of performing this installation</string>
-    <string name="older_versions">Older versions</string>
+    <string name="additional_downloads">Additional download(s)</string>
     <string name="os_update_has_started_message">The update has started. This may take some time depending on your network connection speed.</string>
     <string name="other_os_options">Enter advanced mode</string>
     <string name="please_be_patient">Just a moment&#8230;</string>
