diff --git a/app/app.iml b/app/app.iml
index e31111587bb9475b2dd7f710c44e347710cea142..4a7d5c4eed469e88116b7cfeb0acf539e0cb5889 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -83,12 +83,13 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.3/jars" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/21.0.3/jars" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.4.0/jars" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.4.0/jars" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.4.0/jars" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.4.0/jars" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/answers/1.3.6/jars" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/beta/1.1.4/jars" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/crashlytics-core/2.3.8/jars" />
@@ -101,6 +102,7 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
@@ -113,20 +115,21 @@
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
     </content>
-    <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
+    <orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" exported="" name="physicaloidlibrary" level="project" />
+    <orderEntry type="library" exported="" name="support-annotations-23.4.0" level="project" />
     <orderEntry type="library" exported="" name="crashlytics-2.5.5" level="project" />
-    <orderEntry type="library" exported="" name="support-v4-21.0.3" level="project" />
     <orderEntry type="library" exported="" name="crashlytics-core-2.3.8" level="project" />
     <orderEntry type="library" exported="" name="beta-1.1.4" level="project" />
     <orderEntry type="library" exported="" name="logback-android-1.1.1-3" level="project" />
-    <orderEntry type="library" exported="" name="appcompat-v7-21.0.3" level="project" />
-    <orderEntry type="library" exported="" name="mongo-java-driver-3.0.2" level="project" />
+    <orderEntry type="library" exported="" name="animated-vector-drawable-23.4.0" level="project" />
     <orderEntry type="library" exported="" name="commons-lang3-3.4" level="project" />
-    <orderEntry type="library" exported="" name="support-annotations-21.0.3" level="project" />
+    <orderEntry type="library" exported="" name="support-v4-23.4.0" level="project" />
     <orderEntry type="library" exported="" name="slf4j-api-1.7.2" level="project" />
     <orderEntry type="library" exported="" name="answers-1.3.6" level="project" />
+    <orderEntry type="library" exported="" name="support-vector-drawable-23.4.0" level="project" />
+    <orderEntry type="library" exported="" name="appcompat-v7-23.4.0" level="project" />
     <orderEntry type="library" exported="" name="fabric-1.3.10" level="project" />
+    <orderEntry type="library" exported="" name="org.apache.http.legacy-android-23" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7ee69a920c051ab235cf104fdee66c745e9c292b..45fe30164faabb3156f08b49dd5aa7dcbd3e3fe3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,7 +4,7 @@ buildscript {
     }
 
     dependencies {
-        classpath 'io.fabric.tools:gradle:1.+'
+        classpath 'io.fabric.tools:gradle:1.21.6'
     }
 }
 plugins {
@@ -25,8 +25,10 @@ def gitVersion() {
 }
 
 android {
-    compileSdkVersion 21
+    compileSdkVersion 23
     buildToolsVersion "23.0.3"
+    // FIXME - replace with URLConnection. This is used in GetHmacAndKeyActivity.
+    useLibrary 'org.apache.http.legacy'
 
     applicationVariants.all { variant ->
         variant.resValue "string", "versionName", variant.versionName
@@ -35,7 +37,7 @@ android {
     defaultConfig {
         applicationId "info.nightscout.android"
         minSdkVersion 15
-        targetSdkVersion 21
+        targetSdkVersion 23
         versionName project.properties['version']
         versionCode gitVersion()
     }
@@ -47,10 +49,9 @@ android {
         }
     }
 
-    // FIXME - we really shouldn't be doing this.
-    // See https://github.com/pazaan/640gAndroidUploader/issues/43
     lintOptions {
-        abortOnError false
+        // TODO - 'InvalidPackage' is here because of logback. We can remove this if we remove logback.
+        disable 'InvalidPackage', 'TrulyRandom'
     }
 }
 
@@ -111,11 +112,9 @@ release {
 }
 
 dependencies {
-    compile 'com.android.support:appcompat-v7:21.+'
+    compile 'com.android.support:appcompat-v7:23.4.0'
     compile 'org.apache.commons:commons-lang3:3.4'
     compile files('libs/logback-android-1.1.1-3.jar')
-    compile files('libs/mongo-java-driver-3.0.2.jar')
-    compile files('libs/physicaloidlibrary.jar')
     compile files('libs/slf4j-api-1.7.2.jar')
     compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
         transitive = true;
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c7995f0b34a43a30bcb64bf32df46504f3dcc526..47d94a65882f9993945395ab18a71a3531dbbe26 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,9 +4,7 @@
     >
 
     <uses-sdk
-        android:maxSdkVersion="21"
-        android:minSdkVersion="15"
-        android:targetSdkVersion="21" />
+        android:maxSdkVersion="23" />
 
     <uses-feature android:name="android.hardware.usb.host" />
 
@@ -17,13 +15,13 @@
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
-    <android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
     <application
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
+        android:supportsRtl="true"
         android:theme="@style/AppBaseTheme" >
 
         <!-- I have set screenOrientation to "portrait" to avoid the restart of AsyncTasks when you rotate the phone -->
@@ -52,29 +50,10 @@
             android:icon="@drawable/ic_launcher"
             android:label="Settings" />
 
-        <service
-            android:name=".dexcom.DexcomG4Service"
-            android:icon="@drawable/ic_launcher" >
-        </service>
         <service
             android:name=".medtronic.service.MedtronicCNLService"
             android:icon="@drawable/ic_launcher" >
         </service>
-        <service
-            android:name=".widget.CGMWidgetUpdater"
-            android:icon="@drawable/ic_launcher"
-            android:label="@string/app_name" >
-        </service>
-
-        <receiver android:name=".widget.CGMWidget" >
-            <intent-filter>
-                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
-            </intent-filter>
-
-            <meta-data
-                android:name="android.appwidget.provider"
-                android:resource="@xml/example_appwidget_info" />
-        </receiver>
 
         <activity
             android:name=".medtronic.GetHmacAndKeyActivity"
diff --git a/app/src/main/java/info/nightscout/android/eula/Eula.java b/app/src/main/java/info/nightscout/android/eula/Eula.java
index eb90972fab98f861737962719e7e33f4c769b7d2..92ef18ad0d0bbae3c434da58a4e8d28c5c2054a6 100644
--- a/app/src/main/java/info/nightscout/android/eula/Eula.java
+++ b/app/src/main/java/info/nightscout/android/eula/Eula.java
@@ -21,11 +21,10 @@ import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.SharedPreferences;
 
-import java.io.IOException;
 import java.io.BufferedReader;
-import java.io.InputStreamReader;
 import java.io.Closeable;
-import java.util.Map;
+import java.io.IOException;
+import java.io.InputStreamReader;
 
 import info.nightscout.android.R;
 
@@ -39,13 +38,12 @@ import info.nightscout.android.R;
 public class Eula {
     private static final String ASSET_EULA = "EULA";
     private static final String PREFERENCE_EULA_ACCEPTED = "IUNDERSTAND";
-    private static final String PREFERENCES_EULA = "Disclaimer";
     private static AlertDialog aDialog = null;
 
     /**
      * callback to let the activity know when the user has accepted the EULA.
      */
-    public static interface OnEulaAgreedTo {
+    public interface OnEulaAgreedTo {
 
         /**
          * Called when the user has accepted the eula and the dialog closes.
@@ -68,7 +66,6 @@ public class Eula {
         //final SharedPreferences preferences = activity.getSharedPreferences(PREFERENCES_EULA,
         //        Activity.MODE_PRIVATE);
 
-        Map<String, ?> preferencesAll = preferences.getAll();
         if (!preferences.getBoolean(PREFERENCE_EULA_ACCEPTED, false)) {
             final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
             builder.setTitle(R.string.eula_title);
@@ -113,7 +110,7 @@ public class Eula {
     }
 
     private static void accept(SharedPreferences preferences) {
-        preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true).commit();
+        preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true).apply();
     }
 
     private static void refuse(Activity activity) {
diff --git a/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java b/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java
index c0ebff1f4e411657d220911989de9b8266a8017d..6351a83bd1b04d7c81bd5c4a8a736e86325a4311 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java
@@ -90,19 +90,18 @@ public class GetHmacAndKeyActivity extends Activity implements LoaderCallbacks<C
                 attemptLogin();
             }
         });
-        Button closeButton = (Button) findViewById(R.id.close_button);
-        closeButton.setOnClickListener(new OnClickListener() {
+
+        mLoginFormView = findViewById(R.id.login_form);
+        mProgressView = findViewById(R.id.login_progress);
+        mRegisteredStickView = (TextView)findViewById(R.id.registered_usb_devices);
+        mCloseButton = (Button)findViewById(R.id.close_button);
+        mCloseButton.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
                 finish();
             }
         });
 
-
-        mLoginFormView = findViewById(R.id.login_form);
-        mProgressView = findViewById(R.id.login_progress);
-        mRegisteredStickView = (TextView)findViewById(R.id.registered_usb_devices);
-        mCloseButton = (Button)findViewById(R.id.close_button);
         showRegisteredSticks();
     }
 
diff --git a/app/src/main/java/info/nightscout/android/medtronic/Medtronic640gActivity.java b/app/src/main/java/info/nightscout/android/medtronic/Medtronic640gActivity.java
index 34a77f04e2e2f5427df7ee343dcc2a956dd6b70c..2956563abbfc03ae2667e058cef47ea4ffb47045 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/Medtronic640gActivity.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/Medtronic640gActivity.java
@@ -40,6 +40,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.text.DecimalFormat;
+import java.util.Locale;
 
 import info.nightscout.android.R;
 import info.nightscout.android.eula.Eula;
@@ -74,7 +75,6 @@ public class Medtronic640gActivity extends Activity implements OnSharedPreferenc
     private TextView mDumpTextView;
     private Button b1;
     private TextView display;
-    private Intent service = null;
     private ServiceManager cgmService; // > service
 
     //Look for and launch the service, display status to user
@@ -125,15 +125,15 @@ public class Medtronic640gActivity extends Activity implements OnSharedPreferenc
             mHandlerActive = true;
         }
 
-        b1.setText("Stop Uploading CGM Data");
+        b1.setText(R.string.button_text_stop_uploading_data);
         lnr.addView(b1);
         lnr2.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
         lnr3.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
         Button b2 = new Button(this);
-        b2.setText("Clear Log");
+        b2.setText(R.string.button_text_clear_log);
         b2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1.0f));
         Button b4 = new Button(this);
-        b4.setText("Get Now");
+        b4.setText(R.string.button_text_get_now);
         b4.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1.0f));
         lnr3.addView(b4);
 
@@ -186,13 +186,13 @@ public class Medtronic640gActivity extends Activity implements OnSharedPreferenc
                         //mHandler.removeCallbacks(updateDataView);
                         keepServiceAlive = false;
                         stopCGMServices();
-                        b1.setText("Start Uploading CGM Data");
+                        b1.setText(R.string.button_text_start_uploading_data);
                         finish();
                     } else {
                         startCGMServices();
 
                         mHandlerActive = true;
-                        b1.setText("Stop Uploading CGM Data");
+                        b1.setText(R.string.button_text_stop_uploading_data);
                     }
                 }
 
@@ -327,9 +327,7 @@ public class Medtronic640gActivity extends Activity implements OnSharedPreferenc
                         //mHandler.removeCallbacks(updateDataView);
                         mHandlerActive = false;
                     }
-                    b1.setText("Start Uploading CGM Data");
-                    mTitleTextView.setTextColor(Color.RED);
-                    mTitleTextView.setText("CGM Service Stopped");
+                    b1.setText(R.string.button_text_start_uploading_data);
                     stopCGMServices();
                 } else {
                     startCGMServices();
@@ -338,8 +336,8 @@ public class Medtronic640gActivity extends Activity implements OnSharedPreferenc
                 }
             }
         } catch (Exception e) {
-            StringBuffer sb1 = new StringBuffer("");
-            sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
+            StringBuilder sb1 = new StringBuilder("");
+            sb1.append("EXCEPTION!!!!!! ").append(e.getMessage()).append(" ").append(e.getCause());
             for (StackTraceElement st : e.getStackTrace()) {
                 sb1.append(st.toString()).append("\n");
             }
@@ -407,7 +405,7 @@ public class Medtronic640gActivity extends Activity implements OnSharedPreferenc
                                 df = new DecimalFormat("#.00");
                             else
                                 df = new DecimalFormat("#.0");
-                            String sgvString = "---";
+                            String sgvString;
                             String unitsString = "mg/dL";
                             if (prefs.getBoolean("mmolxl", false)) {
 
@@ -428,7 +426,7 @@ public class Medtronic640gActivity extends Activity implements OnSharedPreferenc
 
                             mDumpTextView.setTextColor(Color.WHITE);
                             mDumpTextView.setText(Html.fromHtml(
-                                    String.format("<b>SG at:</b> %s<br/><b>Pump Time:</b> %s<br/><b>Active Insulin: </b>%.3f<br/><b>Rate of Change: </b>%s",
+                                    String.format( Locale.getDefault(), "<b>SG at:</b> %s<br/><b>Pump Time:</b> %s<br/><b>Active Insulin: </b>%.3f<br/><b>Rate of Change: </b>%s",
                                             DateUtils.formatDateTime(getBaseContext(), record.sgvDate.getTime(), DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME),
                                             DateUtils.formatDateTime(getBaseContext(), pumpStatusRecord.pumpDate.getTime(), DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME),
                                             pumpStatusRecord.activeInsulin,
diff --git a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCNLReader.java b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCNLReader.java
index cd1b6bb6e2d7815f49d30a4a291e619777199563..763e9171f30322803fe728b48f7aa847800a4fb3 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCNLReader.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCNLReader.java
@@ -141,7 +141,7 @@ public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
     // TODO - get rid of this - it should be in a message decoder
     private void checkControlMessage(byte[] msg, byte controlCharacter) throws IOException, TimeoutException, UnexpectedMessageException {
         if (msg.length != 1 || msg[0] != controlCharacter) {
-            throw new UnexpectedMessageException(String.format("Expected to get control character '%d' Got '%d'.",
+            throw new UnexpectedMessageException(String.format( Locale.getDefault(), "Expected to get control character '%d' Got '%d'.",
                     (int) controlCharacter, (int) msg[0]));
         }
     }
@@ -252,7 +252,7 @@ public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
                 if (responseBytes[76] == mPumpSession.getRadioChannel()) {
                     break;
                 } else {
-                    throw new IOException(String.format("Expected to get a message for channel %d. Got %d", mPumpSession.getRadioChannel(), responseBytes[76]));
+                    throw new IOException(String.format( Locale.getDefault(), "Expected to get a message for channel %d. Got %d", mPumpSession.getRadioChannel(), responseBytes[76]));
                 }
             } else {
                 mPumpSession.setRadioChannel((byte) 0);
@@ -338,7 +338,7 @@ public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
         cgmRecord.sgvDate = MessageUtils.decodeDateTime(rtc, offset);
         Medtronic640gActivity.pumpStatusRecord.recentBolusWizard = statusBuffer.get(0x48) != 0;
         Medtronic640gActivity.pumpStatusRecord.bolusWizardBGL = statusBuffer.getShort(0x49); // In mg/DL
-        long rawReservoirAmount = statusBuffer.getInt(0x2b) & 0xffffffff;
+        long rawReservoirAmount = statusBuffer.getInt(0x2b);
         Medtronic640gActivity.pumpStatusRecord.reservoirAmount = new BigDecimal(rawReservoirAmount / 10000f).setScale(3, BigDecimal.ROUND_HALF_UP);
         Medtronic640gActivity.pumpStatusRecord.batteryPercentage = (statusBuffer.get(0x2a));
     }
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java
index c0c8db8cc06318fdc2ad53a93510d1a2672fbe27..1f773efbdfa5e3430cce9e277c412ba3c9487765 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java
@@ -4,6 +4,7 @@ import info.nightscout.android.medtronic.MedtronicCNLSession;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
+import java.util.Locale;
 
 /**
  * Created by lgoedhart on 26/03/2016.
@@ -76,7 +77,7 @@ public class ContourNextLinkBinaryMessage extends ContourNextLinkMessage{
         byte calculatedChecksum = (byte) (MessageUtils.oneByteSum(message.mPayload.array()) - messageChecksum);
 
         if (messageChecksum != calculatedChecksum) {
-            throw new ChecksumException(String.format("Expected to get %d. Got %d", (int) calculatedChecksum, (int) messageChecksum));
+            throw new ChecksumException(String.format(Locale.getDefault(), "Expected to get %d. Got %d", (int) calculatedChecksum, (int) messageChecksum));
         }
 
         return message;
diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCNLService.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCNLService.java
index 366874497285733c9aaba6f303ecafb2cd30d564..2f1ca0b145438db9870b4102af28349a5ee26a0e 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCNLService.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCNLService.java
@@ -19,6 +19,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.util.Locale;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.TimeoutException;
@@ -164,7 +165,7 @@ public class MedtronicCNLService extends AbstractService {
                         send(Message.obtain(null, Medtronic640gActivity.Medtronic640gActivityHandler.MSG_ERROR, "Could not communicate with the 640g. Are you near the pump?"));
                         Log.i(TAG, "Could not communicate with the 640g. Are you near the pump?");
                     } else {
-                        send(Message.obtain(null, Medtronic640gActivity.Medtronic640gActivityHandler.MSG_STATUS, String.format("Connected to Contour Next Link on channel %d.", (int) radioChannel)));
+                        send(Message.obtain(null, Medtronic640gActivity.Medtronic640gActivityHandler.MSG_STATUS, String.format( Locale.getDefault(), "Connected to Contour Next Link on channel %d.", (int) radioChannel)));
                         Log.d(TAG, String.format("Connected to Contour Next Link on channel %d.", (int) radioChannel));
                         cnlReader.beginEHSMSession();
 
@@ -220,6 +221,9 @@ public class MedtronicCNLService extends AbstractService {
         return netInfo != null && netInfo.isConnectedOrConnecting();
     }
 
+    /*
+    // FIXME - when we want to enable notifications, start with this. We'll need to fix the icon to match
+    // the Android standards (linter will fail anyway)
     private void showNotification(String title, String message) {
         NotificationManagerCompat nm = NotificationManagerCompat.from(mContext);
 
@@ -238,6 +242,7 @@ public class MedtronicCNLService extends AbstractService {
                 .setContentIntent(contentIntent)
                 .build());
     }
+    */
 
     // FIXME - replace this with writing to the SQLite DB.
     private void writeData(CGMRecord mostRecentData) {
diff --git a/app/src/main/java/info/nightscout/android/upload/UploadHelper.java b/app/src/main/java/info/nightscout/android/upload/UploadHelper.java
index f5b720c5136c6c3af66256fc53141a36edf7e143..065a28afaeb1c35d361e35e5764e1b011002a160 100644
--- a/app/src/main/java/info/nightscout/android/upload/UploadHelper.java
+++ b/app/src/main/java/info/nightscout/android/upload/UploadHelper.java
@@ -3,17 +3,11 @@ package info.nightscout.android.upload;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.AsyncTask;
-import android.os.Messenger;
 import android.preference.PreferenceManager;
 import android.util.Log;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.HttpClient;
 import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.BasicResponseHandler;
 import org.apache.http.impl.client.DefaultHttpClient;
@@ -28,8 +22,6 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.security.MessageDigest;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -55,8 +47,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
     private static final int CONNECTION_TIMEOUT = 30 * 1000;
 
     Context context;
-    private int cgmSelected = Medtronic640gActivity.CNL_24;
-    private List<JSONObject> recordsNotUploadedList = new ArrayList<JSONObject>();
+	private List<JSONObject> recordsNotUploadedList = new ArrayList<JSONObject>();
     private List<JSONObject> recordsNotUploadedListJson = new ArrayList<JSONObject>();
 
     public static final Object isModifyingRecordsLock = new Object();
@@ -67,8 +58,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
     
     public UploadHelper(Context context, int cgmSelected) {
         this.context = context;
-        this.cgmSelected = cgmSelected;
-        settings = context.getSharedPreferences(MedtronicConstants.PREFS_NAME, 0);
+		settings = context.getSharedPreferences(MedtronicConstants.PREFS_NAME, 0);
         synchronized (isModifyingRecordsLock) {
 	        try {
 	        	long currentTime = System.currentTimeMillis();
@@ -80,7 +70,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
 	    				editor.remove("recordsNotUploaded");
 	    			if (settings.contains("recordsNotUploadedJson"))
 	    				editor.remove("recordsNotUploadedJson");
-	            	editor.commit();
+	            	editor.apply();
 	    		}
 	        	if (settings.contains("recordsNotUploaded")){
 	        		JSONArray recordsNotUploaded = new JSONArray(settings.getString("recordsNotUploaded","[]"));
@@ -90,7 +80,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
 	        		log.debug("retrieve older json records -->" +recordsNotUploaded.length());
 	            	SharedPreferences.Editor editor = settings.edit();
 	            	editor.remove("recordsNotUploaded");
-	            	editor.commit();
+	            	editor.apply();
 	            }	
 	        	if (settings.contains("recordsNotUploadedJson")){
 	        		JSONArray recordsNotUploadedJson = new JSONArray(settings.getString("recordsNotUploadedJson","[]"));
@@ -100,134 +90,23 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
 	        		log.debug("retrieve older json records -->" +recordsNotUploadedJson.length());
 	            	SharedPreferences.Editor editor = settings.edit();
 	            	editor.remove("recordsNotUploadedJson");
-	            	editor.commit();
+	            	editor.apply();
 	            }	
 			} catch (Exception e) {
 				log.debug("ERROR Retrieving older list, I have lost them");
-				recordsNotUploadedList = new ArrayList<JSONObject>();
-				recordsNotUploadedListJson = new ArrayList<JSONObject>();
+				recordsNotUploadedList = new ArrayList<>();
+				recordsNotUploadedListJson = new ArrayList<>();
 				SharedPreferences.Editor editor = settings.edit();
 				if (settings.contains("recordsNotUploaded"))
 					editor.remove("recordsNotUploaded");
 				if (settings.contains("recordsNotUploadedJson"))
 					editor.remove("recordsNotUploadedJson");
-	        	editor.commit();
+	        	editor.apply();
 			}
         }
     }
-    
-    public UploadHelper(Context context, int cgmSelected, ArrayList<Messenger> mClients) {
-    	this(context, cgmSelected);
-    }
-	
-	private JSONArray doGetRequest(HttpClient client, String url, String filter, String sort, String limit, String apiKey){
-		JSONArray result = null;
-		 URI nUri = null;
-		 String query = "";
-		 if (filter != null && filter.length() > 0) {
-			 query += filter + "&";
-		 }
-		 if (sort != null && sort.length() > 0) {
-			 query += sort + "&";
-		 }
-		 if (limit != null && limit.length() > 0) {
-			 query += limit + "&";
-		 }
-		    try {
-				nUri = new URI("https", null, "api.mongolab.com", 443, url, query + "apiKey="+apiKey,null);
-			} catch (URISyntaxException e2) {
-				// TODO Auto-generated catch block
-				e2.printStackTrace();
-			}
-		    //URIUtils.
-		    HttpGet getRequest = new HttpGet(nUri);
-		    HttpPost postRequest = null;
-		    getRequest.addHeader("accept", "application/json");
-		    try {
-				HttpResponse response = client.execute(getRequest);
-				InputStream instream = response.getEntity().getContent();
-		        String sResult = convertStreamToString(instream);
-		        // now you have the string representation of the HTML request
-		        System.out.println("RESPONSE: " + sResult);
-		        instream.close();
-		        result = new JSONArray(sResult);
-			} catch (ClientProtocolException e1) {
-				// TODO Auto-generated catch block
-				e1.printStackTrace();
-			} catch (IOException e1) {
-				// TODO Auto-generated catch block
-				e1.printStackTrace();
-			} catch (Exception e2) {
-				// TODO Auto-generated catch block
-				e2.printStackTrace();
-			}
-		return result;
-	}
-	
-	private boolean doPutRequest(HttpClient client, String url, String filter, String apiKey, JSONObject data){
-		 String query = "";
-		 if (filter != null && filter.length() > 0) {
-			 query += filter + "&";
-		 }
-	
-		try {
-			URI nUri = null;
-		    try {
-				nUri = new URI("https", null, "api.mongolab.com", 443, url, query + "&apiKey="+apiKey,null);
-			} catch (URISyntaxException e2) {
-				// TODO Auto-generated catch block
-				e2.printStackTrace();
-				return false;
-			}
-			HttpPut putRequest = new HttpPut(nUri);
-			putRequest.setHeader("Accept", "application/json");
-			putRequest.setHeader("Content-type", "application/json");
-	        StringEntity se = new StringEntity(data.toString());
-	        putRequest.setEntity(se);
-	        HttpResponse resp = client.execute(putRequest);
-	        if (resp.getStatusLine().getStatusCode() > 201) {
-	        	Log.e("UploaderHelper", "The can't be uploaded");
-				log.error("The record can't be uploaded Code: "+resp.getStatusLine().getStatusCode());
-				return false;
-	        }
-		}catch(IllegalArgumentException ex){
-			log.error("UploaderHelper", "Illegal record");
-			return false;
-		}catch (Exception e){
-			Log.e("UploaderHelper", "The retried can't be uploaded");
-			log.error("The retried record can't be uploaded ", e);
-			return false;
-		}
-		return true;
-	}
-	
-	private boolean doPostRequest(HttpClient client, String url, String apiKey, JSONObject data){
-		URI nUri = null;
-		try {
-			nUri = new URI("https", null, "api.mongolab.com", 443, url, "apiKey="+apiKey, null);
-			HttpPost postRequest = new HttpPost(nUri);
-			postRequest.setHeader("Accept", "application/json");
-	        postRequest.setHeader("Content-type", "application/json");
-	        StringEntity se = new StringEntity(data.toString());
-	        postRequest.setEntity(se);
-	        HttpResponse resp = client.execute(postRequest);
-	        if (resp.getStatusLine().getStatusCode() > 201) {
-	        	Log.e("UploaderHelper", "The can't be uploaded");
-				log.error("The record can't be uploaded Code: "+resp.getStatusLine().getStatusCode());
-				return false;
-	        }
-		}catch(IllegalArgumentException ex){
-			log.error("UploaderHelper", "Illegal record");
-			return false;
-		}catch (Exception e){
-			Log.e("UploaderHelper", "The retried can't be uploaded");
-			log.error("The retried record can't be uploaded ", e);
-			return false;
-		}
-		return true;
-	}
 
-    /**
+	/**
      * doInBackground
      */
     protected Long doInBackground(Record... records) {
@@ -297,23 +176,22 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
     }
 
     private void doRESTUploadTo(String baseURI, Record[] records) {
-    	Integer typeSaved = null;
-        try {
+		try {
             int apiVersion = 0;
             if (baseURI.endsWith("/v1/")) apiVersion = 1;
 
-            String baseURL = null;
+            String baseURL;
             String secret = null;
             String[] uriParts = baseURI.split("@");
 
             if (uriParts.length == 1 && apiVersion == 0) {
                 baseURL = uriParts[0];
-            } else if (uriParts.length == 1 && apiVersion > 0) {
+            } else if (uriParts.length == 1) {
             	if (recordsNotUploadedListJson.size() > 0){
                  	JSONArray jsonArray = new JSONArray(recordsNotUploadedListJson);
                  	SharedPreferences.Editor editor = settings.edit();
                  	editor.putString("recordsNotUploaded", jsonArray.toString());
-                 	editor.commit();
+                 	editor.apply();
                  }
                 throw new Exception("Starting with API v1, a pass phase is required");
             } else if (uriParts.length == 2 && apiVersion > 0) {
@@ -323,8 +201,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
                 // new format URL!
 
                 if (secret.contains("http")) {
-                    String b = "http://";
-                    if (secret.contains("https")) {
+					if (secret.contains("https")) {
                         baseURL = "https://" + baseURL;
                     } else {
                         baseURL = "http://" + baseURL;
@@ -339,7 +216,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
                  	JSONArray jsonArray = new JSONArray(recordsNotUploadedListJson);
                  	SharedPreferences.Editor editor = settings.edit();
                  	editor.putString("recordsNotUploadedJson", jsonArray.toString());
-                 	editor.commit();
+                 	editor.apply();
                  }
                 throw new Exception(String.format("Unexpected baseURI: %s, uriParts.length: %s, apiVersion: %s", baseURI, uriParts.length, apiVersion));
             }
@@ -371,7 +248,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
                              	JSONArray jsonArray = new JSONArray(auxList);
                              	SharedPreferences.Editor editor = settings.edit();
                              	editor.putString("recordsNotUploaded", jsonArray.toString());
-                             	editor.commit();
+                             	editor.apply();
                              }
                             throw new Exception("Starting with API v1, a pass phase is required");
                         } else {
@@ -411,11 +288,9 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
             for (Record record : records) {
             	String postURL = baseURL; 
             	if (record instanceof GlucometerRecord){
-            		typeSaved = 0;
-            		postURL +=  "entries";
+					postURL +=  "entries";
             	}else{
-            		typeSaved = 0;
-            		postURL += "entries";
+					postURL += "entries";
             	}
                 Log.i(TAG, "postURL: " + postURL);
                 log.info( "postURL: " + postURL);
@@ -428,7 +303,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
                           	JSONArray jsonArray = new JSONArray(recordsNotUploadedListJson);
                           	SharedPreferences.Editor editor = settings.edit();
                           	editor.putString("recordsNotUploadedJson", jsonArray.toString());
-                          	editor.commit();
+                          	editor.apply();
                           }
                         throw new Exception("Starting with API v1, a pass phase is required");
                     } else {
@@ -469,16 +344,15 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
 					ResponseHandler responseHandler = new BasicResponseHandler();
                     httpclient.execute(post, responseHandler);
                 } catch (Exception e) {
-                    if ((typeSaved != null) && (typeSaved == 0)){//Only EGV records are important enough.
-    	                if (recordsNotUploadedListJson.size() > 49){
-    	                	recordsNotUploadedListJson.remove(0);
-    	                	recordsNotUploadedListJson.add(49,json);
-    	            	}else{
-    	            		recordsNotUploadedListJson.add(json);
-    	            	}
+					//Only EGV records are important enough.
+					if (recordsNotUploadedListJson.size() > 49){
+                        recordsNotUploadedListJson.remove(0);
+                        recordsNotUploadedListJson.add(49,json);
+                    }else{
+                        recordsNotUploadedListJson.add(json);
                     }
 
-                    Log.w(TAG, "Unable to post data to: '" + post.getURI().toString() + "'", e);
+					Log.w(TAG, "Unable to post data to: '" + post.getURI().toString() + "'", e);
                     log.warn( "Unable to post data to: '" + post.getURI().toString() + "'", e);
                 }
             }
@@ -515,18 +389,18 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
 	        		log.debug("retrieve older json records -->" +recordsNotUploadedJson.length());
 	            	SharedPreferences.Editor editor = settings.edit();
 	            	editor.remove("recordsNotUploadedJson");
-	            	editor.commit();	
+	            	editor.apply();
     			} catch (Exception e) {
     				log.debug("ERROR RETRIEVING OLDER LISTs, I HAVE LOST THEM");	
     				SharedPreferences.Editor editor = settings.edit();
     				if (settings.contains("recordsNotUploadedJson"))
     					editor.remove("recordsNotUploadedJson");
-    	        	editor.commit();
+    	        	editor.apply();
     			}
     	        JSONArray jsonArray = new JSONArray(recordsNotUploadedListJson);
             	SharedPreferences.Editor editor = settings.edit();
             	editor.putString("recordsNotUploadedJson", jsonArray.toString());
-            	editor.commit();
+            	editor.apply();
             }
         }
     }
@@ -594,7 +468,7 @@ public class UploadHelper extends AsyncTask<Record, Integer, Long> {
 	    String line = null;
 	    try {
 	        while ((line = reader.readLine()) != null) {
-	            sb.append(line + "\n");
+	            sb.append(line).append("\n");
 	        }
 	    } catch (IOException e) {
 	        e.printStackTrace();
diff --git a/app/src/main/res/drawable-hdpi/ic_action_warning.png b/app/src/main/res/drawable-hdpi/ic_action_warning.png
deleted file mode 100644
index 98b90c257c20f82aabc9f8c8be5c77acca030bb6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_action_warning.png and /dev/null differ
diff --git a/app/src/main/res/drawable-ldpi/icon36x36.png b/app/src/main/res/drawable-ldpi/icon36x36.png
deleted file mode 100644
index 70129cd357610cb7912e7e6b50f15736e015f710..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-ldpi/icon36x36.png and /dev/null differ
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c81f8e8bb6299c27826cf047b841396f77d16186..d1f5cfe4ff088813d271a15840080fc40275bee8 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -20,14 +20,13 @@
         android:visibility="gone"/>
 
     <ScrollView
-        android:id="@+id/scroll_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
         <LinearLayout
             android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="match_parent">
+            android:layout_height="wrap_content">
 
             <LinearLayout
                 android:id="@+id/login_form"
@@ -39,8 +38,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:textAppearance="?android:attr/textAppearanceMedium"
-                    android:text="@string/prompt_carelink_username_password"
-                    android:id="@+id/textView" />
+                    android:text="@string/prompt_carelink_username_password" />
 
                 <AutoCompleteTextView
                     android:id="@+id/username"
diff --git a/app/src/main/res/layout/adb.xml b/app/src/main/res/layout/adb.xml
index 43a947b6c3765ddb25fed48257b36e1033617155..9e1dba225c4528214e90e9b98d55dcbe0c5b3833 100644
--- a/app/src/main/res/layout/adb.xml
+++ b/app/src/main/res/layout/adb.xml
@@ -5,43 +5,35 @@
     android:orientation="vertical"
     android:paddingTop="15dp">
 
-    <LinearLayout
-        android:orientation="vertical"
+    <TextView
+        android:id="@+id/demoTitle"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <TextView
-            android:id="@+id/demoTitle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:textSize="50sp"
-            android:gravity="center"
-            android:textStyle="bold"
-
-            android:text="@string/hello" />
-
-        <TextView
-            android:id="@+id/demoText"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:textSize="20sp"
-
-             android:gravity="left" />
-
-        <ScrollView
-            android:id="@+id/demoScroller"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:padding="10dp">
-
-            <LinearLayout android:id="@+id/container"
-              android:orientation="vertical"
-              android:layout_width="fill_parent"
-              android:layout_height="fill_parent">
-          </LinearLayout>
-        </ScrollView>
-
-    </LinearLayout>
+        android:layout_height="wrap_content"
+        android:textSize="50sp"
+        android:gravity="center"
+        android:textStyle="bold"
+
+        android:text="@string/hello" />
+
+    <TextView
+        android:id="@+id/demoText"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textSize="20sp"
+
+         android:gravity="start" />
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dp">
+
+        <LinearLayout android:id="@+id/container"
+          android:orientation="vertical"
+          android:layout_width="fill_parent"
+          android:layout_height="wrap_content">
+      </LinearLayout>
+    </ScrollView>
 
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/widget_lock.xml b/app/src/main/res/layout/widget_lock.xml
deleted file mode 100644
index 7aca06ee606a43a5809d98899c8ebd4e75b46b45..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/widget_lock.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@android:color/background_dark"
-    android:orientation="horizontal"
-    android:padding="@dimen/widget_margin" >
-
-	    <TextView
-        android:id="@+id/sgv_id"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:text="@string/arrow_none"
-        android:textColor="#ffffff"
-        android:textSize="40sp"
-         android:gravity="center_vertical|right" />
-
-    <TextView
-        android:id="@+id/arrow_id"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:text="@string/arrow_none"
-        android:textColor="#ffffff"
-        android:textSize="18sp" 
-         android:gravity="center_vertical|right"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_main.xml b/app/src/main/res/layout/widget_main.xml
deleted file mode 100644
index 0009b3b7f01457303a8617177269ea309678b12e..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/widget_main.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@android:color/background_dark"
-    android:orientation="horizontal"
-    android:padding="@dimen/widget_margin" >
-
-    <ImageButton
-        android:id="@+id/imageButton1"
-        android:layout_width="48dp"
-        android:layout_height="match_parent"
-        android:background="#000000"
-        android:contentDescription="@string/but_contentDesc"
-        android:src="@drawable/ic_launcher" />
-
-    <TextView
-        android:id="@+id/sgv_id"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:text="@string/arrow_none"
-        android:textColor="#ffffff"
-        android:textSize="40sp"
-         android:gravity="center_vertical|right" />
-
-    <TextView
-        android:id="@+id/arrow_id"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:text="@string/arrow_none"
-        android:textColor="#ffffff"
-        android:textSize="18sp" 
-         android:gravity="center_vertical|right"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml
index eecdd8158944293d9f06c49d01c9b813294fc77f..66a845035a8bc1a2b96c08db01ed3a528cf30ff0 100644
--- a/app/src/main/res/menu/menu.xml
+++ b/app/src/main/res/menu/menu.xml
@@ -3,7 +3,7 @@
     <item
             android:id="@+id/menu_settings"
             android:orderInCategory="100"
-            android:title="Preferences">
+            android:title="@string/menu_name_preferences">
     </item>
     <item
             android:id="@+id/registerCNL"
diff --git a/app/src/main/res/values-v14/dimens.xml b/app/src/main/res/values-v14/dimens.xml
index f3eb5babe7c94c1ecb11d7a3002ab943b2a9b40c..55c1e5908c7e0f157fe815acd6d5cd7358463390 100644
--- a/app/src/main/res/values-v14/dimens.xml
+++ b/app/src/main/res/values-v14/dimens.xml
@@ -3,6 +3,5 @@
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
     <dimen name="activity_vertical_margin">16dp</dimen>
-    <dimen name="widget_margin">0dp</dimen>
 
 </resources>
diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml
index 45757d6d4b3d5e60115dbf5cfb58695c05877945..f3e70203b90ac39368a634f0c6388ccb615ffeca 100644
--- a/app/src/main/res/values-w820dp/dimens.xml
+++ b/app/src/main/res/values-w820dp/dimens.xml
@@ -6,6 +6,5 @@
          would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
     -->
     <dimen name="activity_horizontal_margin">64dp</dimen>
-    <dimen name="widget_margin">8dp</dimen>
 
 </resources>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 09ea631c2f25204bf1f55e288c632cda4b75ace9..55c1e5908c7e0f157fe815acd6d5cd7358463390 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -3,6 +3,5 @@
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
     <dimen name="activity_vertical_margin">16dp</dimen>
-    <dimen name="widget_margin">8dp</dimen>
 
 </resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 71bd1212cb02746572b6d0039adbb2cdc4483f8c..e6e61757d1ecd9bcbbe63835193560c1f64c119f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,100 +3,18 @@
 
     <string name="hello">---</string>
     <string name="app_name">NS 640g Uploader</string>
-    <string name="hello_world">Hello world!</string>
-    <string name="action_settings">Settings</string>
-    <string name="sgv_id">sgv_id</string>
-    <string name="arrow_id">arrow_id</string>
-    <string name="arrow_none">---</string>
-    <string name="self_destruct">Close It</string>
-    <string name="but_contentDesc">Launch Nightscout</string>
     <string name="eula_title">Disclaimer</string>
     <string name="eula_accept">Accept</string>
     <string name="eula_refuse">Refuse</string>
-    <style name="ButtonText">
-    <item name="android:layout_width">fill_parent</item>
-    <item name="android:layout_height">wrap_content</item>
-    <item name="android:textColor">#ffffff</item>
-    <item name="android:gravity">center</item>
-    <item name="android:layout_margin">3dp</item>
-    <item name="android:textSize">30dp</item>
-    <item name="android:textStyle">bold</item>
-    <item name="android:shadowColor">#000000</item>
-    <item name="android:shadowDx">1</item>
-    <item name="android:shadowDy">1</item>
-    <item name="android:shadowRadius">2</item>
-	</style>
-	<string-array name="types">
-        <item>Contour NextLink 2.4</item>
-    </string-array>
-    <string-array name="types_values">
-     <item>1</item>
-     <item>2</item>
-        <item>3</item>
-    </string-array>
-     <string-array name="calib_types_values">
+    <string-array name="calib_types_values">
      <item>1</item>
      <item>2</item>
      <item>3</item>
     </string-array>
-    <string-array name="calibrationTypes">
-     <item>Glucometer</item>
-     <item>Medtronic Pump</item>
-     <item>Manual</item>
-    </string-array>
-     <string-array name="sourceTypes">
-     <item>Medtronic Sensor</item>
-     <item>Medtronic Pump</item>
-     <item>Both (sensor + pump support)</item>
-    </string-array>
-    <string-array name="pumpPeriodList">
-     <item>30 min.</item>
-     <item>60 min.</item>
-     <item>90 min.</item>
-     <item>120 min.</item>
-    </string-array>
-    <string-array name="pumpperiod_values">
-     <item>1</item>
-     <item>2</item>
-     <item>3</item>
-     <item>4</item>
-    </string-array>
-     <string-array name="historicPeriodList">
-     <item>5 min.</item>
-     <item>10 min.</item>
-     <item>15 min.</item>
-     <item>20 min.</item>
-    </string-array>
     <string-array name="levelList">
      <item>Error</item>
      <item>Info</item>
      <item>Debug</item>
-    </string-array>
-     <string-array name="historicMixPeriodList">
-     <item>10 min.</item>
-     <item>15 min.</item>
-     <item>20 min.</item>
-     <item>25 min.</item>
-     <item>30 min.</item>
-     <item>35 min.</item>
-     <item>40 min.</item>
-     <item>45 min.</item>
-     <item>50 min.</item>
-     <item>55 min.</item>
-     <item>60 min.</item>
-    </string-array>
-     <string-array name="historicMixPeriodVal">
-     <item>1</item>
-     <item>2</item>
-     <item>3</item>
-     <item>4</item>
-     <item>5</item>
-     <item>6</item>
-     <item>7</item>
-     <item>8</item>
-     <item>9</item>
-     <item>10</item>
-     <item>11</item>
     </string-array>
     <string name="title_activity_login">CareLink login</string>
 
@@ -105,13 +23,9 @@
     <string name="prompt_password">Password</string>
     <string name="action_sign_in">Retrieve keys for USB</string>
     <string name="action_sign_in_short">Retrieve keys</string>
-    <string name="error_invalid_username">This username is invalid</string>
     <string name="error_invalid_password">Password is required</string>
     <string name="error_incorrect_password">The Username or password is incorrect</string>
     <string name="error_field_required">This field is required</string>
-    <string name="permission_rationale">"Contacts permissions are needed for providing email
-        completions."
-    </string>
     <string name="preference_nightscout_url">Nightscout URL</string>
     <string name="preference_api_secret">API SECRET</string>
     <string name="prompt_carelink_username_password">Please enter your CareLink details.\nThey will not be stored.</string>
@@ -119,4 +33,9 @@
     <string name="register_contour_next_link">Register Contour Next Link</string>
     <string name="preferences_enable_crashlytics">prefs_enable_crashlytics</string>
     <string name="preferences_enable_answers">prefs_enable_answers</string>
+    <string name="menu_name_preferences">Preferences</string>
+    <string name="button_text_stop_uploading_data">Stop Uploading CGM Data</string>
+    <string name="button_text_clear_log">Clear Log</string>
+    <string name="button_text_get_now">Get Now</string>
+    <string name="button_text_start_uploading_data">Start Uploading CGM Data</string>
 </resources>
diff --git a/app/src/main/res/xml/example_appwidget_info.xml b/app/src/main/res/xml/example_appwidget_info.xml
deleted file mode 100644
index 475a7427f4422c303a4b08a4879e10c099fd416a..0000000000000000000000000000000000000000
--- a/app/src/main/res/xml/example_appwidget_info.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minResizeHeight="20dp" android:minWidth="70dp" android:resizeMode="horizontal|vertical" android:initialKeyguardLayout="@layout/widget_lock" android:minResizeWidth="70dp" android:minHeight="20dp" android:initialLayout="@layout/widget_main" android:updatePeriodMillis="10000" android:widgetCategory="home_screen|keyguard">
-    
-
-</appwidget-provider>