diff --git a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
index e52a79bf27eace50a786be92d2ba7a28f4e3ab38..712d12e50c37f1103d11dc0298c10b9dfcba51c9 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
@@ -12,6 +12,7 @@ import android.content.SharedPreferences;
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
 import android.hardware.usb.UsbDevice;
 import android.hardware.usb.UsbManager;
+import android.net.Uri;
 import android.os.BatteryManager;
 import android.os.Bundle;
 import android.os.Handler;
@@ -38,6 +39,10 @@ import com.github.mikephil.charting.data.LineData;
 import com.github.mikephil.charting.data.realm.implementation.RealmLineDataSet;
 import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
 import com.github.mikephil.charting.utils.ColorTemplate;
+import com.google.android.gms.appindexing.Action;
+import com.google.android.gms.appindexing.AppIndex;
+import com.google.android.gms.appindexing.Thing;
+import com.google.android.gms.common.api.GoogleApiClient;
 import com.mikepenz.google_material_typeface_library.GoogleMaterial;
 import com.mikepenz.materialdrawer.AccountHeaderBuilder;
 import com.mikepenz.materialdrawer.Drawer;
@@ -45,10 +50,15 @@ import com.mikepenz.materialdrawer.DrawerBuilder;
 import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
 import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
 
+import java.text.DateFormat;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.Locale;
+import java.util.Queue;
+import java.util.Stack;
+import java.util.concurrent.ArrayBlockingQueue;
 
 import info.nightscout.android.R;
 import info.nightscout.android.USB.UsbHidDriver;
@@ -80,6 +90,11 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
     private Handler mUiRefreshHandler = new Handler();
     private Runnable mUiRefreshRunnable = new RefreshDisplayRunnable();
     private Realm mRealm;
+    /**
+     * ATTENTION: This was auto-generated to implement the App Indexing API.
+     * See https://g.co/AppIndexing/AndroidStudio for more information.
+     */
+    private GoogleApiClient client;
 
     public static void setActivePumpMac(long pumpMac) {
         activePumpMac = pumpMac;
@@ -202,6 +217,9 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
 
         mTextViewLog = (TextView) findViewById(R.id.textview_log);
         mChart = (LineChart) findViewById(R.id.chart);
+        // ATTENTION: This was auto-generated to implement the App Indexing API.
+        // See https://g.co/AppIndexing/AndroidStudio for more information.
+        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
     }
 
     @Override
@@ -456,13 +474,99 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
         return mActivePump;
     }
 
+    /**
+     * ATTENTION: This was auto-generated to implement the App Indexing API.
+     * See https://g.co/AppIndexing/AndroidStudio for more information.
+     */
+    public Action getIndexApiAction() {
+        Thing object = new Thing.Builder()
+                .setName("Main Page") // TODO: Define a title for the content shown.
+                // TODO: Make sure this auto-generated URL is correct.
+                .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))
+                .build();
+        return new Action.Builder(Action.TYPE_VIEW)
+                .setObject(object)
+                .setActionStatus(Action.STATUS_TYPE_COMPLETED)
+                .build();
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        // ATTENTION: This was auto-generated to implement the App Indexing API.
+        // See https://g.co/AppIndexing/AndroidStudio for more information.
+        client.connect();
+        AppIndex.AppIndexApi.start(client, getIndexApiAction());
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+
+        // ATTENTION: This was auto-generated to implement the App Indexing API.
+        // See https://g.co/AppIndexing/AndroidStudio for more information.
+        AppIndex.AppIndexApi.end(client, getIndexApiAction());
+        client.disconnect();
+    }
+
     private class StatusMessageReceiver extends BroadcastReceiver {
+        private class StatusMessage {
+            private long timestamp;
+            private String message;
+
+            public StatusMessage(String message) {
+                this(System.currentTimeMillis(), message);
+            }
+
+            public StatusMessage(long timestamp, String message) {
+                this.timestamp = timestamp;
+                this.message = message;
+            }
+
+            public long getTimestamp() {
+                return timestamp;
+            }
+
+            public void setTimestamp(long timestamp) {
+                this.timestamp = timestamp;
+            }
+
+            public String getMessage() {
+                return message;
+            }
+
+            public void setMessage(String message) {
+                this.message = message;
+            }
+
+            public String toString() {
+                return DateFormat.getTimeInstance(DateFormat.SHORT).format(timestamp) + ": " + message;
+            }
+        }
+
+        private Queue<StatusMessage> messages = new ArrayBlockingQueue<>(10);
+
         @Override
         public void onReceive(Context context, Intent intent) {
             String message = intent.getStringExtra(MedtronicCnlIntentService.Constants.EXTENDED_DATA);
-
             Log.i(TAG, "Message Receiver: " + message);
-            mTextViewLog.setText(mTextViewLog.getText() + "\n" + message, BufferType.EDITABLE);
+
+            synchronized (this) {
+                while (messages.size() > 8) {
+                    messages.poll();
+                }
+                messages.add(new StatusMessage(message));
+            }
+
+            StringBuilder sb = new StringBuilder();
+            for (StatusMessage msg : messages) {
+                if (sb.length() > 0)
+                    sb.append("\n");
+                sb.append(msg);
+            }
+
+            mTextViewLog.setText(sb.toString(), BufferType.EDITABLE);
         }
     }
 
@@ -486,7 +590,7 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
 
             PumpInfo pump = getActivePump();
 
-            if (pump != null & pump.isValid()) {
+            if (pump != null && pump.isValid()) {
                 pumpStatusData = pump.getPumpHistory().last();
             }
 
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 1eab92da74ecea4548ab9afdf0aed8f19839a223..1fa0191a8b23a80de20574a463cae7e521bcc3e3 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCNLReader.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCNLReader.java
@@ -43,9 +43,9 @@ import info.nightscout.android.utils.HexDump;
 /**
  * Created by lgoedhart on 24/03/2016.
  */
-public class MedtronicCnlReader implements ContourNextLinkMessageHandler {
+public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
 
-    private static final String TAG = MedtronicCnlReader.class.getSimpleName();
+    private static final String TAG = MedtronicCNLReader.class.getSimpleName();
 
     private static final int USB_BLOCKSIZE = 64;
     private static final int READ_TIMEOUT_MS = 5000;
@@ -58,7 +58,7 @@ public class MedtronicCnlReader implements ContourNextLinkMessageHandler {
 
     private String mStickSerial = null;
 
-    public MedtronicCnlReader(UsbHidDriver device) {
+    public MedtronicCNLReader(UsbHidDriver device) {
         mDevice = device;
     }
 
@@ -119,7 +119,7 @@ public class MedtronicCnlReader implements ContourNextLinkMessageHandler {
         } while (bytesRead > 0 && messageSize == 60);
 
         String responseString = HexDump.dumpHexString(responseMessage.toByteArray());
-        Log.d(TAG, "READ: " + responseString);
+        Log.d(TAG, "READ (" + this.getClass().getSimpleName() + "): " + responseString);
 
         return responseMessage.toByteArray();
     }
@@ -156,7 +156,7 @@ public class MedtronicCnlReader implements ContourNextLinkMessageHandler {
             pos += sendLength;
 
             String outputString = HexDump.dumpHexString(outputBuffer.array());
-            Log.d(TAG, "WRITE: " + outputString);
+            Log.d(TAG, "WRITE(" + this.getClass().getSimpleName() + "): " + outputString);
         }
     }
 
diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java
index bf3aadca466b5d48d49cdfb0670e1264a946991b..dd5738f4f3e3d208bf6c7c47926569682d461e35 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java
@@ -19,7 +19,7 @@ import java.util.concurrent.TimeoutException;
 
 import info.nightscout.android.USB.UsbHidDriver;
 import info.nightscout.android.medtronic.MainActivity;
-import info.nightscout.android.medtronic.MedtronicCnlReader;
+import info.nightscout.android.medtronic.MedtronicCNLReader;
 import info.nightscout.android.medtronic.message.ChecksumException;
 import info.nightscout.android.medtronic.message.EncryptionException;
 import info.nightscout.android.medtronic.message.MessageUtils;
@@ -125,7 +125,7 @@ public class MedtronicCnlIntentService extends IntentService {
             return;
         }
 
-        MedtronicCnlReader cnlReader = new MedtronicCnlReader(mHidDevice);
+        MedtronicCNLReader cnlReader = new MedtronicCNLReader(mHidDevice);
 
         Realm realm = Realm.getDefaultInstance();
         realm.beginTransaction();