diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index f7b3a44868ac2205316394f265d244b59e4f592c..45c8774f7df8f10c479c8ef6b7570caba9a0d4b4 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -2,5 +2,10 @@
   <profile version="1.0">
     <option name="myName" value="Project Default" />
     <inspection_tool class="AndroidLintRtlHardcoded" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="AndroidLintUselessParent" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
+      <option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
+      <option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
+    </inspection_tool>
   </profile>
 </component>
\ No newline at end of file
diff --git a/.idea/libraries/appcompat_v7_21_0_3.xml b/.idea/libraries/appcompat_v7_21_0_3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52ea574e89cf839e9ed2760007ab7219830ba164
--- /dev/null
+++ b/.idea/libraries/appcompat_v7_21_0_3.xml
@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="appcompat-v7-21.0.3">
+    <CLASSES>
+      <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.3/res" />
+      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.3/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/commons_lang3_3_4.xml b/.idea/libraries/commons_lang3_3_4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e55d8a6ae51f08cbc2d1745daab9248048797031
--- /dev/null
+++ b/.idea/libraries/commons_lang3_3_4.xml
@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="commons-lang3-3.4">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.4/5fe28b9518e58819180a43a850fbc0dd24b7c050/commons-lang3-3.4.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.4/b49dafc9cfef24c356827f322e773e7c26725dd2/commons-lang3-3.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/support_annotations_21_0_3.xml b/.idea/libraries/support_annotations_21_0_3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b8eeb0cac515f61968922565fbe567e6a813415c
--- /dev/null
+++ b/.idea/libraries/support_annotations_21_0_3.xml
@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="support-annotations-21.0.3">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/21.0.3/support-annotations-21.0.3.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/21.0.3/support-annotations-21.0.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/support_v4_21_0_3.xml b/.idea/libraries/support_v4_21_0_3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..064682a5d37ef40677a278bf6451f8faaf831377
--- /dev/null
+++ b/.idea/libraries/support_v4_21_0_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="support-v4-21.0.3">
+    <CLASSES>
+      <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-v4/21.0.3/res" />
+      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-v4/21.0.3/jars/libs/internal_impl-21.0.3.jar!/" />
+      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-v4/21.0.3/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-v4/21.0.3/support-v4-21.0.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 5d19981032aa01b060f5a568641d7a8840cc90dc..fbb68289f4352bf149aa31a2c9940faa99174224 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
     <ConfirmationsSetting value="0" id="Add" />
     <ConfirmationsSetting value="0" id="Remove" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 47a223cf29bf5f923de391b4b8539ec8c6fca6b1..51b1b8bed761cee6de041dfcd4832514297c577c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -17,54 +17,54 @@
   </component>
   <component name="AndroidLayouts">
     <shared>
-      <config />
+      <config>
+        <target>android-19</target>
+      </config>
     </shared>
+    <layouts>
+      <layout url="file://$PROJECT_DIR$/.idea/misc.xml">
+        <config>
+          <theme>@style/AppBaseTheme</theme>
+        </config>
+      </layout>
+      <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/adb.xml">
+        <config>
+          <theme>@android:style/Theme.DeviceDefault</theme>
+        </config>
+      </layout>
+    </layouts>
   </component>
   <component name="AndroidLogFilters">
     <option name="TOOL_WINDOW_CONFIGURED_FILTER" value="Show only selected application" />
   </component>
   <component name="ChangeListManager">
     <list default="true" id="73c0df16-fbb3-4a39-b542-4a9ed61c734a" name="Default" comment="Commit working version of Uploader before refactoring messages to be &quot;classier&quot;.">
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/BeginEHSMMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkCommandMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessageHandler.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/EncryptionException.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/EndEHSMMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicReceiveMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicSendMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpStatusRequestMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpStatusResponseMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpTimeRequestMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpTimeResponseMessage.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/UnexpectedMessageException.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/Medtronic640gPumpRecord.java" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/logback_android_1_1_1_3.xml" afterPath="" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/mongo_java_driver_3_0_2.xml" afterPath="" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/physicaloidlibrary.xml" afterPath="" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/slf4j_api_1_7_2.xml" afterPath="" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MessageHandler.java" afterPath="" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.gitignore" afterPath="$PROJECT_DIR$/.gitignore" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/gradle.xml" afterPath="$PROJECT_DIR$/.idea/gradle.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/libraries/appcompat_v7_21_0_3.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/libraries/commons_lang3_3_4.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/libraries/support_annotations_21_0_3.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/libraries/support_v4_21_0_3.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/LoginActivity.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigContract.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigDbHelper.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ReadInfoResponseMessage.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/misc.xml" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/app.iml" afterPath="$PROJECT_DIR$/app/app.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/build.gradle" afterPath="$PROJECT_DIR$/app/build.gradle" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" afterPath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/eula/Eula.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/eula/Eula.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ChannelNegotiateMessage.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ChannelNegotiateMessage.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessage.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessage.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicMessage.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicMessage.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/settings/SettingsFragment.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/settings/SettingsFragment.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/UploadHelper.java" afterPath="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/UploadHelper.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/res/layout/adb.xml" afterPath="$PROJECT_DIR$/app/src/main/res/layout/adb.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/res/menu/menu.xml" afterPath="$PROJECT_DIR$/app/src/main/res/menu/menu.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/res/values-v11/styles.xml" afterPath="$PROJECT_DIR$/app/src/main/res/values-v11/styles.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/res/values-v14/styles.xml" afterPath="$PROJECT_DIR$/app/src/main/res/values-v14/styles.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/src/main/res/xml/preferences.xml" afterPath="$PROJECT_DIR$/app/src/main/res/xml/preferences.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/build.gradle" afterPath="$PROJECT_DIR$/build.gradle" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/build/intermediates/dex-cache/cache.xml" afterPath="$PROJECT_DIR$/build/intermediates/dex-cache/cache.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" afterPath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" />
     </list>
     <ignored path="MedtronicUploader.iws" />
     <ignored path=".idea/workspace.xml" />
@@ -97,7 +97,7 @@
         <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java">
           <provider selected="true" editor-type-id="text-editor">
             <state vertical-scroll-proportion="0.0">
-              <caret line="524" column="0" selection-start-line="524" selection-start-column="0" selection-end-line="524" selection-end-column="0" />
+              <caret line="382" column="34" selection-start-line="382" selection-start-column="34" selection-end-line="382" selection-end-column="34" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -105,41 +105,21 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="UploadHelper.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/UploadHelper.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="-1.1111112">
-              <caret line="2" column="7" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="7" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="MedtronicCNLService.java" pinned="false" current-in-tab="false">
+      <file leaf-file-name="MedtronicCNLService.java" pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="105" column="0" selection-start-line="105" selection-start-column="0" selection-end-line="105" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="MedtronicCNLSession.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
+            <state vertical-scroll-proportion="0.6199095">
+              <caret line="147" column="0" selection-start-line="147" selection-start-column="0" selection-end-line="147" selection-end-column="0" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="MedtronicCNLReader.java" pinned="false" current-in-tab="true">
+      <file leaf-file-name="MedtronicCNLReader.java" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.33802816">
-              <caret line="189" column="91" selection-start-line="189" selection-start-column="91" selection-end-line="189" selection-end-column="91" />
+            <state vertical-scroll-proportion="0.0">
+              <caret line="185" column="9" selection-start-line="185" selection-start-column="9" selection-end-line="185" selection-end-column="9" />
               <folding />
             </state>
           </provider>
@@ -151,6 +131,7 @@
     <option name="RECENT_TEMPLATES">
       <list>
         <option value="Interface" />
+        <option value="valueResourceFile" />
         <option value="Class" />
       </list>
     </option>
@@ -649,6 +630,16 @@
                 <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
                 <option name="name" value="preReleaseUnitTestBuild" />
               </ExternalTaskPojo>
+              <ExternalTaskPojo>
+                <option name="description" value="Prepare com.android.support:appcompat-v7:21.0.3" />
+                <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
+                <option name="name" value="prepareComAndroidSupportAppcompatV72103Library" />
+              </ExternalTaskPojo>
+              <ExternalTaskPojo>
+                <option name="description" value="Prepare com.android.support:support-v4:21.0.3" />
+                <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
+                <option name="name" value="prepareComAndroidSupportSupportV42103Library" />
+              </ExternalTaskPojo>
               <ExternalTaskPojo>
                 <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
                 <option name="name" value="prepareDebugAndroidTestDependencies" />
@@ -1252,6 +1243,16 @@
                 <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" />
                 <option name="name" value="preReleaseUnitTestBuild" />
               </ExternalTaskPojo>
+              <ExternalTaskPojo>
+                <option name="description" value="Prepare com.android.support:appcompat-v7:21.0.3" />
+                <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" />
+                <option name="name" value="prepareComAndroidSupportAppcompatV72103Library" />
+              </ExternalTaskPojo>
+              <ExternalTaskPojo>
+                <option name="description" value="Prepare com.android.support:support-v4:21.0.3" />
+                <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" />
+                <option name="name" value="prepareComAndroidSupportSupportV42103Library" />
+              </ExternalTaskPojo>
               <ExternalTaskPojo>
                 <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/app" />
                 <option name="name" value="prepareDebugAndroidTestDependencies" />
@@ -1435,7 +1436,7 @@
     </option>
     <option name="modificationStamps">
       <map>
-        <entry key="$PROJECT_DIR$" value="4379299520000" />
+        <entry key="$PROJECT_DIR$" value="4383407236000" />
       </map>
     </option>
     <option name="projectBuildClasspath">
@@ -1617,6 +1618,10 @@
                             <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" />
                             <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0-sources.jar" />
                             <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0.jar" />
+                            <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/21.0.3/appcompat-v7-21.0.3.aar" />
+                            <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.4/5fe28b9518e58819180a43a850fbc0dd24b7c050/commons-lang3-3.4.jar" />
+                            <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-v4/21.0.3/support-v4-21.0.3.aar" />
+                            <option value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/21.0.3/support-annotations-21.0.3.jar" />
                             <option value="$MODULE_DIR$/libs/logback-android-1.1.1-3.jar" />
                             <option value="$MODULE_DIR$/libs/mongo-java-driver-3.0.2.jar" />
                             <option value="$MODULE_DIR$/libs/physicaloidlibrary.jar" />
@@ -1706,17 +1711,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/widget/CGMWidget.java" />
-        <option value="$PROJECT_DIR$/app/src/main/assets/logback.xml" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLService.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/USB/HidBridge.java" />
-        <option value="$PROJECT_DIR$/app/build/intermediates/manifests/full/debug/AndroidManifest.xml" />
-        <option value="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/USB/CommonUsbDriver.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/USB/HidBridge.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/USB/USBPower.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/USB/USBPower.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/USB/UsbHidDriver.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/TestService.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/service/AbstractService.java" />
@@ -1738,7 +1732,6 @@
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicMessage.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpTimeRequestMessage.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpTimeResponseMessage.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpStatusRequestMessage.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpStatusResponseMessage.java" />
@@ -1746,15 +1739,27 @@
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/EndEHSMMessage.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicReceiveMessage.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/UnexpectedMessageException.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/Medtronic640gPumpRecord.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/UploadHelper.java" />
-        <option value="$PROJECT_DIR$/app/src/main/res/layout/adb.xml" />
-        <option value="$PROJECT_DIR$/app/src/main/res/values/strings.xml" />
         <option value="$PROJECT_DIR$/app/src/main/res/xml/preferences.xml" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/settings/SettingsFragment.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/eula/Eula.java" />
+        <option value="$PROJECT_DIR$/app/src/main/res/layout/adb.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/res/values-v11/styles.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/res/values-v21/styles.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/res/values-v14/styles.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/res/menu/menu.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/res/values/strings.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigContract.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java" />
+        <option value="$PROJECT_DIR$/app/build.gradle" />
+        <option value="$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigDbHelper.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/LoginActivity.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ReadInfoResponseMessage.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java" />
       </list>
@@ -1770,7 +1775,7 @@
   <component name="ProjectFrameBounds">
     <option name="y" value="23" />
     <option name="width" value="1400" />
-    <option name="height" value="783" />
+    <option name="height" value="807" />
   </component>
   <component name="ProjectInspectionProfilesVisibleTreeState">
     <entry key="Project Default">
@@ -1816,7 +1821,6 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
-      <pane id="Scratches" />
       <pane id="ProjectPane" />
       <pane id="AndroidView">
         <subPane>
@@ -1835,281 +1839,12 @@
               <option name="myItemId" value="MedtronicUploader" />
               <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
             </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="res" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="xml" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderTypeNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="res" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="res" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="menu" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderTypeNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="res" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="layout" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderTypeNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="res" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="drawable" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidResFolderTypeNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="upload" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="settings" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="service" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="medtronic" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="medtronic" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="service" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="medtronic" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="message" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="MedtronicUploader" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="app" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="java" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidSourceTypeNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="android" />
-              <option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidPsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="dexcom" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
           </PATH>
         </subPane>
       </pane>
       <pane id="Scope" />
       <pane id="PackagesPane" />
+      <pane id="Scratches" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -2121,20 +1856,23 @@
     <property name="ANDROID_EXTENDED_DEVICE_CHOOSER_SERIALS" value="d1cd921" />
     <property name="ANDROID_EXTENDED_DEVICE_CHOOSER_AVD" value="Nexus_5_API_23_x86" />
     <property name="restartRequiresConfirmation" value="true" />
-    <property name="OverrideImplement.combined" value="true" />
-    <property name="OverrideImplement.overriding.sorted" value="false" />
-    <property name="SearchEverywhereHistoryKey" value="adb&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/res/layout/adb.xml&#10;string&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/res/values/strings.xml&#10;640g&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/upload/Medtronic640gPumpRecord.java&#10;e&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java&#10;egv&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java&#10;medtronicme&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicMessage.java&#10;chann&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ChannelNegotiateMessage.java&#10;binary&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java&#10;nego&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ChannelNegotiateMessage.java&#10;commandme&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkCommandMessage.java&#10;contourne&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessage.java&#10;con&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessage.java" />
+    <property name="SearchEverywhereHistoryKey" value="messageu&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java&#10;adb&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/res/layout/adb.xml&#10;string&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/res/values/strings.xml&#10;640g&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/upload/Medtronic640gPumpRecord.java&#10;e&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java&#10;egv&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java&#10;medtronicme&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicMessage.java&#10;chann&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ChannelNegotiateMessage.java&#10;binary&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java&#10;nego&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ChannelNegotiateMessage.java&#10;commandme&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkCommandMessage.java&#10;contourne&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessage.java&#10;con&#9;FILE&#9;file:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessage.java" />
     <property name="last_opened_file_path" value="$USER_HOME$/Desktop" />
-    <property name="device.picker.selection" value="Nexus_5_API_23_x86" />
+    <property name="device.picker.selection" value="192.168.0.115:5555" />
   </component>
   <component name="RecentsManager">
     <key name="CreateClassDialog.RecentsKey">
       <recent name="com.nightscout.android.medtronic.message" />
     </key>
+    <key name="android.template.packageName">
+      <recent name="com.nightscout.android.dexcom" />
+      <recent name="values-v21" />
+    </key>
     <key name="IntroduceConstantDialog.RECENTS_KEY">
       <recent name="com.nightscout.android.medtronic.MedtronicCNLReader" />
     </key>
     <key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
+      <recent name="com.nightscout.android.medtronic.data" />
       <recent name="com.nightscout.android.USB" />
       <recent name="com.nightscout.android.medtronic.service" />
       <recent name="com.nightscout.android" />
@@ -2144,6 +1882,9 @@
       <recent name="com.nightscout.android.USB" />
       <recent name="com.nightscout.android.medtronic" />
     </key>
+    <key name="android.template.parentActivityClass">
+      <recent name="" />
+    </key>
   </component>
   <component name="RunManager" selected="Android Application.app">
     <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
@@ -2392,8 +2133,43 @@
       <option name="ACTIVITY_CLASS" value="" />
       <method />
     </configuration>
-    <list size="1">
+    <configuration default="false" name="LoginActivity" type="AndroidRunConfigurationType" factoryName="Android Application" activateToolWindowBeforeRun="false">
+      <module name="app" />
+      <option name="DEPLOY" value="true" />
+      <option name="ARTIFACT_NAME" value="" />
+      <option name="PM_INSTALL_OPTIONS" value="" />
+      <option name="ACTIVITY_EXTRA_FLAGS" value="" />
+      <option name="MODE" value="specific_activity" />
+      <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
+      <option name="PREFERRED_AVD" value="" />
+      <option name="CLEAR_LOGCAT" value="false" />
+      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
+      <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
+      <option name="FORCE_STOP_RUNNING_APP" value="true" />
+      <option name="DEBUGGER_TYPE" value="Java" />
+      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
+      <option name="PREFERRED_AVD" value="" />
+      <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
+      <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
+      <Native>
+        <option name="WORKING_DIR" value="" />
+        <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
+      </Native>
+      <Java />
+      <Hybrid>
+        <option name="WORKING_DIR" value="" />
+        <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
+      </Hybrid>
+      <Profilers>
+        <option name="GAPID_DISABLE_PCS" value="false" />
+      </Profilers>
+      <option name="DEEP_LINK" value="" />
+      <option name="ACTIVITY_CLASS" value="com.nightscout.android.dexcom.LoginActivity" />
+      <method />
+    </configuration>
+    <list size="2">
       <item index="0" class="java.lang.String" itemvalue="Android Application.app" />
+      <item index="1" class="java.lang.String" itemvalue="Android Application.LoginActivity" />
     </list>
     <configuration name="&lt;template&gt;" type="Applet" default="true" selected="false">
       <option name="MAIN_CLASS_NAME" />
@@ -2410,7 +2186,7 @@
   </component>
   <component name="ShelveChangesManager" show_recycled="false" />
   <component name="StructureViewFactory">
-    <option name="ACTIVE_ACTIONS" value=",SHOW_INHERITED,ALPHA_COMPARATOR" />
+    <option name="ACTIVE_ACTIONS" value=",ALPHA_COMPARATOR" />
   </component>
   <component name="SvnConfiguration">
     <configuration />
@@ -2441,7 +2217,7 @@
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="23" width="1400" height="783" extended-state="0" />
+    <frame x="0" y="23" width="1400" height="807" extended-state="0" />
     <editor active="true" />
     <layout>
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32833582" sideWeight="0.4970545" order="6" side_tool="false" content_ui="tabs" />
@@ -2450,22 +2226,20 @@
       <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.70464766" sideWeight="0.52061856" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.70464766" sideWeight="0.47938144" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298969" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.748191" sideWeight="0.47938144" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298351" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32833582" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.47226387" sideWeight="0.4867452" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32706222" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.47178003" sideWeight="0.4867452" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2496318" sideWeight="0.49199083" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.60569715" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2496318" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.42578712" sideWeight="0.47864506" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32850942" sideWeight="0.47864506" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
@@ -2474,6 +2248,8 @@
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3988006" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298969" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.6049204" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
     </layout>
   </component>
   <component name="UpdateCopyrightCheckinHandler">
@@ -2503,7 +2279,7 @@
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java</url>
-          <line>238</line>
+          <line>257</line>
           <properties />
           <option name="timeStamp" value="66" />
         </line-breakpoint>
@@ -2511,400 +2287,377 @@
       <breakpoints-dialog>
         <breakpoints-dialog />
       </breakpoints-dialog>
-      <option name="time" value="73" />
+      <option name="time" value="96" />
     </breakpoint-manager>
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ChecksumException.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/settings/SettingsActivity.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.11737089">
-          <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.28169015">
+          <caret line="13" column="1" selection-start-line="13" selection-start-column="1" selection-end-line="13" selection-end-column="1" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ChannelNegotiateMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/settings/SettingsFragment.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.5164319">
-          <caret line="22" column="0" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
+        <state vertical-scroll-proportion="-0.12254902">
+          <caret line="22" column="46" selection-start-line="22" selection-start-column="41" selection-end-line="22" selection-end-column="52" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/USB/UsbDriver.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="1.6666666">
-          <caret line="73" column="0" selection-start-line="73" selection-start-column="0" selection-end-line="73" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.25821596">
+          <caret line="29" column="17" selection-start-line="29" selection-start-column="17" selection-end-line="29" selection-end-column="17" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpTimeRequestMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/USB/HidBridge.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.23474178">
-          <caret line="10" column="4" selection-start-line="10" selection-start-column="4" selection-end-line="10" selection-end-column="4" />
+        <state vertical-scroll-proportion="0.18779343">
+          <caret line="24" column="13" selection-start-line="24" selection-start-column="13" selection-end-line="24" selection-end-column="13" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/assets/EULA">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.18779343">
-          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/xml/preferences.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.7183099">
-          <caret line="49" column="0" selection-start-line="49" selection-start-column="0" selection-end-line="49" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.024390243">
+          <caret line="1" column="0" selection-start-line="51" selection-start-column="29" selection-end-line="51" selection-end-column="40" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/xml/device_filter.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.09389672">
-          <caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.33333334">
-          <caret line="84" column="28" selection-start-line="84" selection-start-column="28" selection-end-line="84" selection-end-column="28" />
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/widget_main.xml">
+      <provider editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
+      <provider selected="true" editor-type-id="android-designer">
+        <state />
+      </provider>
     </entry>
-    <entry file="file://$USER_HOME$/Library/Android/sdk/sources/android-21/android/view/View.java">
-      <provider selected="true" editor-type-id="text-editor">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/widget_lock.xml">
+      <provider editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0">
-          <caret line="4507" column="0" selection-start-line="4507" selection-start-column="0" selection-end-line="4507" selection-end-column="0" />
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
+      <provider selected="true" editor-type-id="android-designer">
+        <state />
+      </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/xml/example_appwidget_info.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.60294116">
-          <caret line="588" column="118" selection-start-line="588" selection-start-column="110" selection-end-line="588" selection-end-column="118" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Service.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values-w820dp/dimens.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.58685446">
-          <caret line="191" column="29" selection-start-line="191" selection-start-column="29" selection-end-line="191" selection-end-column="29" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$USER_HOME$/Library/Android/sdk/sources/android-21/android/content/ContextWrapper.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values-v14/dimens.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.33171913">
-          <caret line="611" column="15" selection-start-line="611" selection-start-column="15" selection-end-line="611" selection-end-column="15" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/service/AbstractService.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values/dimens.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.2542373">
-          <caret line="55" column="16" selection-start-line="55" selection-start-column="16" selection-end-line="55" selection-end-column="16" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/service/ServiceManager.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="-1.6962306">
-          <caret line="50" column="29" selection-start-line="50" selection-start-column="20" selection-end-line="50" selection-end-column="29" />
-        </state>
+    <entry file="android-dummy:///Users/lgoedhart/StudioProjects/MedtronicUploader//Theme Editor">
+      <provider selected="true" editor-type-id="themeEditor">
+        <state theme-name="AppBaseTheme" module-name="app" proportion="0.67" />
       </provider>
     </entry>
-    <entry file="file://$USER_HOME$/Library/Android/sdk/sources/android-21/android/view/ContextThemeWrapper.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.33259425">
-          <caret line="43" column="29" selection-start-line="43" selection-start-column="29" selection-end-line="43" selection-end-column="29" />
-        </state>
+    <entry file="android-dummy:///Users/lgoedhart/StudioProjects/MedtronicUploader/app/Translations Editor">
+      <provider selected="true" editor-type-id="string-resource-editor">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$USER_HOME$/Library/Android/sdk/sources/android-21/android/app/Activity.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.33259425">
-          <caret line="2079" column="21" selection-start-line="2079" selection-start-column="21" selection-end-line="2079" selection-end-column="21" />
-        </state>
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable-xhdpi/ic_launcher.png">
+      <provider selected="true" editor-type-id="images">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/EndEHSMMessage.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.3286385">
-          <caret line="14" column="31" selection-start-line="14" selection-start-column="31" selection-end-line="14" selection-end-column="31" />
-        </state>
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable-mdpi/ic_launcher.png">
+      <provider selected="true" editor-type-id="images">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/BeginEHSMMessage.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.28169015">
-          <caret line="12" column="35" selection-start-line="12" selection-start-column="35" selection-end-line="12" selection-end-column="35" />
-        </state>
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable-hdpi/ic_launcher.png">
+      <provider selected="true" editor-type-id="images">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.91549295">
-          <caret line="71" column="74" selection-start-line="71" selection-start-column="74" selection-end-line="71" selection-end-column="74" />
-        </state>
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable-ldpi/icon36x36.png">
+      <provider selected="true" editor-type-id="images">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpStatusResponseMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/drawable-hdpi/ic_action_warning.png">
+      <provider selected="true" editor-type-id="images">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values-v14/styles.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.25187033">
-          <caret line="7" column="13" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.17857143">
+          <caret line="7" column="66" selection-start-line="7" selection-start-column="66" selection-end-line="7" selection-end-column="66" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpTimeResponseMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values-v11/styles.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.5137157">
-          <caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.15306123">
+          <caret line="6" column="66" selection-start-line="6" selection-start-column="66" selection-end-line="6" selection-end-column="66" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicReceiveMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values-v21/styles.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.34413967">
-          <caret line="46" column="101" selection-start-line="46" selection-start-column="101" selection-end-line="46" selection-end-column="101" />
+        <state vertical-scroll-proportion="0.07653061">
+          <caret line="3" column="66" selection-start-line="3" selection-start-column="66" selection-end-line="3" selection-end-column="66" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/UnexpectedMessageException.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/Medtronic640gPumpRecord.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.11737089">
-          <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.7183099">
+          <caret line="100" column="29" selection-start-line="100" selection-start-column="29" selection-end-line="100" selection-end-column="29" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/DeviceRecord.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.09389672">
-          <caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
+        <state vertical-scroll-proportion="2.4744897">
+          <caret line="97" column="42" selection-start-line="97" selection-start-column="34" selection-end-line="97" selection-end-column="42" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/Record.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/menu/menu.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.09389672">
-          <caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.19512194">
+          <caret line="8" column="40" selection-start-line="8" selection-start-column="40" selection-end-line="8" selection-end-column="40" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/MedtronicSensorRecord.java">
+    <entry file="file://$PROJECT_DIR$/settings.gradle">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.09389672">
-          <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/MedtronicPumpRecord.java">
+    <entry file="file://$PROJECT_DIR$/local.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.5399061">
-          <caret line="30" column="48" selection-start-line="30" selection-start-column="48" selection-end-line="30" selection-end-column="48" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java">
+    <entry file="file://$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.28638497">
-          <caret line="2848" column="16" selection-start-line="2848" selection-start-column="16" selection-end-line="2848" selection-end-column="16" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpStatusRequestMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/eula/Eula.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.2112676">
-          <caret line="9" column="54" selection-start-line="9" selection-start-column="54" selection-end-line="9" selection-end-column="54" />
+        <state vertical-scroll-proportion="-3.9629629">
+          <caret line="72" column="23" selection-start-line="72" selection-start-column="18" selection-end-line="72" selection-end-column="23" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MedtronicSendMessage.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/UploadHelper.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.3568075">
-          <caret line="20" column="7" selection-start-line="20" selection-start-column="7" selection-end-line="20" selection-end-column="7" />
+        <state vertical-scroll-proportion="-7.851852">
+          <caret line="477" column="64" selection-start-line="477" selection-start-column="54" selection-end-line="477" selection-end-column="64" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java">
+    <entry file="file://$USER_HOME$/Library/Android/sdk/sources/android-21/android/content/res/Resources.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.28169015">
-          <caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.33333334">
+          <caret line="1405" column="0" selection-start-line="1405" selection-start-column="0" selection-end-line="1405" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomReader.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="-0.11737089">
-          <caret line="311" column="16" selection-start-line="311" selection-start-column="16" selection-end-line="311" selection-end-column="16" />
+        <state vertical-scroll-proportion="0.7892157">
+          <caret line="110" column="71" selection-start-line="110" selection-start-column="71" selection-end-line="110" selection-end-column="71" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/widget_lock.xml">
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/adb.xml">
       <provider editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
+        <state vertical-scroll-proportion="-3.75">
+          <caret line="6" column="0" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
         </state>
       </provider>
       <provider selected="true" editor-type-id="android-designer">
         <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/widget_main.xml">
-      <provider editor-type-id="text-editor">
+    <entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.4/5fe28b9518e58819180a43a850fbc0dd24b7c050/commons-lang3-3.4.jar!/org/apache/commons/lang3/ArrayUtils.class">
+      <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0">
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
         </state>
       </provider>
-      <provider selected="true" editor-type-id="android-designer">
-        <state />
-      </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigContract.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="-0.625">
-          <caret line="15" column="99" selection-start-line="15" selection-start-column="99" selection-end-line="15" selection-end-column="99" />
-          <folding />
+        <state vertical-scroll-proportion="0.29411766">
+          <caret line="13" column="44" selection-start-line="13" selection-start-column="33" selection-end-line="13" selection-end-column="44" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/DataLog.java">
+    <entry file="file://$PROJECT_DIR$/build.gradle">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.09389672">
-          <caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/CommandSenderThread.java">
+    <entry file="file://$PROJECT_DIR$/app/build.gradle">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.23474178">
-          <caret line="27" column="13" selection-start-line="27" selection-start-column="13" selection-end-line="27" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.47511312">
+          <caret line="21" column="51" selection-start-line="21" selection-start-column="51" selection-end-line="21" selection-end-column="51" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/TestService.java">
+    <entry file="file://$USER_HOME$/Library/Android/sdk/sources/android-21/android/os/AsyncTask.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="1.1737089">
-          <caret line="66" column="95" selection-start-line="66" selection-start-column="95" selection-end-line="66" selection-end-column="95" />
-          <folding />
+        <state vertical-scroll-proportion="0.022624435">
+          <caret line="295" column="0" selection-start-line="295" selection-start-column="0" selection-end-line="295" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/settings/SettingsActivity.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.28169015">
-          <caret line="13" column="1" selection-start-line="13" selection-start-column="1" selection-end-line="13" selection-end-column="1" />
-          <folding />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="382" column="34" selection-start-line="382" selection-start-column="34" selection-end-line="382" selection-end-column="34" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.30612245">
-          <caret line="12" column="30" selection-start-line="12" selection-start-column="30" selection-end-line="12" selection-end-column="30" />
-          <folding />
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
+      <provider editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-0.0">
+          <caret line="0" column="42" selection-start-line="0" selection-start-column="40" selection-end-line="0" selection-end-column="42" />
         </state>
       </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/eula/Eula.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.38967136">
-          <caret line="125" column="34" selection-start-line="125" selection-start-column="34" selection-end-line="125" selection-end-column="34" />
-          <folding>
-            <element signature="e#2820#2839#0" expanded="true" />
-            <element signature="e#2943#3357#0" expanded="true" />
-            <element signature="e#3356#3357#0" expanded="true" />
-          </folding>
-        </state>
+      <provider selected="true" editor-type-id="android-designer">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/settings/SettingsFragment.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/USB/UsbHidDriver.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="-0.12254902">
-          <caret line="22" column="46" selection-start-line="22" selection-start-column="41" selection-end-line="22" selection-end-column="52" />
-          <folding />
+        <state vertical-scroll-proportion="0.5233786">
+          <caret line="62" column="0" selection-start-line="62" selection-start-column="0" selection-end-line="62" selection-end-column="0" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/res/xml/preferences.xml">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.025510205">
-          <caret line="1" column="0" selection-start-line="51" selection-start-column="29" selection-end-line="51" selection-end-column="40" />
-          <folding>
-            <element signature="e#3657#3674#0" expanded="true" />
-          </folding>
+        <state vertical-scroll-proportion="0.77375567">
+          <caret line="47" column="45" selection-start-line="47" selection-start-column="45" selection-end-line="47" selection-end-column="45" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/res/menu/menu.xml">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/LoginActivity.java">
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
+          <caret line="266" column="50" selection-start-line="266" selection-start-column="50" selection-end-line="266" selection-end-column="50" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/Medtronic640gPumpRecord.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ReadInfoResponseMessage.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="1.8544601">
-          <caret line="82" column="37" selection-start-line="82" selection-start-column="37" selection-end-line="82" selection-end-column="37" />
-          <folding />
+        <state vertical-scroll-proportion="0.18099548">
+          <caret line="8" column="37" selection-start-line="8" selection-start-column="37" selection-end-line="8" selection-end-column="37" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/PumpTimeResponseMessage.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="524" column="0" selection-start-line="524" selection-start-column="0" selection-end-line="524" selection-end-column="0" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state vertical-scroll-proportion="0.4524887">
+          <caret line="23" column="1" selection-start-line="10" selection-start-column="37" selection-end-line="23" selection-end-column="1" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/adb.xml">
-      <provider editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="5" column="27" selection-start-line="5" selection-start-column="27" selection-end-line="5" selection-end-column="27" />
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.33333334">
+          <caret line="23" column="8" selection-start-line="23" selection-start-column="8" selection-end-line="23" selection-end-column="8" />
           <folding />
         </state>
       </provider>
-      <provider selected="true" editor-type-id="android-designer">
-        <state />
-      </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/upload/UploadHelper.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigDbHelper.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="-1.1111112">
-          <caret line="2" column="7" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="7" />
-          <folding />
+        <state vertical-scroll-proportion="0.34633029">
+          <caret line="87" column="113" selection-start-line="87" selection-start-column="26" selection-end-line="87" selection-end-column="113" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java">
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0">
-          <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
+          <caret line="185" column="9" selection-start-line="185" selection-start-column="9" selection-end-line="185" selection-end-column="9" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="105" column="0" selection-start-line="105" selection-start-column="0" selection-end-line="105" selection-end-column="0" />
-          <folding />
+        <state vertical-scroll-proportion="0.22624435">
+          <caret line="10" column="0" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
+          <folding>
+            <element signature="e#1552#1553#0" expanded="true" />
+            <element signature="e#1584#1585#0" expanded="true" />
+            <element signature="e#1624#1625#0" expanded="true" />
+            <element signature="e#1654#1655#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.33802816">
-          <caret line="189" column="91" selection-start-line="189" selection-start-column="91" selection-end-line="189" selection-end-column="91" />
+        <state vertical-scroll-proportion="0.6199095">
+          <caret line="147" column="0" selection-start-line="147" selection-start-column="0" selection-end-line="147" selection-end-column="0" />
           <folding />
         </state>
       </provider>
diff --git a/app/app.iml b/app/app.iml
index afe68c33758cbc3a866091b0a3509986937eaba5..2ffd9f0ef19eb21d225e2041fc33a91039c2434c 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -64,14 +64,6 @@
       <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
@@ -80,13 +72,22 @@
       <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/build/.DS_Store" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+      <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/incremental" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
@@ -108,8 +109,12 @@
     </content>
     <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <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="physicaloidlibrary" level="project" />
+    <orderEntry type="library" exported="" name="commons-lang3-3.4" level="project" />
+    <orderEntry type="library" exported="" name="support-v4-21.0.3" level="project" />
+    <orderEntry type="library" exported="" name="support-annotations-21.0.3" level="project" />
     <orderEntry type="library" exported="" name="slf4j-api-1.7.2" level="project" />
     <orderEntry type="library" exported="" name="logback-android-1.1.1-3" level="project" />
   </component>
diff --git a/app/build.gradle b/app/build.gradle
index 15a27298cbebcbb4ca6594d27646de574e078130..9e81a6bc1fda906014610fcf153c0a885a47d60b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,6 +19,8 @@ android {
 }
 
 dependencies {
+    compile 'com.android.support:appcompat-v7:21.+'
+    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')
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6d77c7dd8a51dab508d7fa6e6267aeda9eb1ef92..c451ba5d338a56428c0f8c1ea060a7edf5f9d898 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,62 +1,103 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.nightscout.android"
-          android:versionCode="1"
-     	  android:versionName="1.0">
+    package="com.nightscout.android"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk
+        android:maxSdkVersion="21"
+        android:minSdkVersion="15"
+        android:targetSdkVersion="21" />
+
     <uses-feature android:name="android.hardware.usb.host" />
-    <uses-sdk android:minSdkVersion="15" android:maxSdkVersion="21" android:targetSdkVersion="21"/>
-    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
-    <uses-permission android:name="android.permission.VIBRATE"></uses-permission>
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
-    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
-    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <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" />
-    <application  android:allowBackup="true"  android:icon="@drawable/ic_launcher" android:label="@string/app_name">
+    <!-- To auto-complete the email text field in the login form with the user's emails -->
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.READ_PROFILE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+
+    <android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <android:uses-permission android:name="android.permission.READ_CALL_LOG" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppBaseTheme" >
+
         <!-- I have set screenOrientation to "portrait" to avoid the restart of AsyncTasks when you rotate the phone -->
-         <activity
-                android:name=".dexcom.DexcomG4Activity"
-                android:icon="@drawable/ic_launcher"
-                android:label="NightScout"
-                android:launchMode="singleTask"
-                android:screenOrientation="portrait" 
-                >
-            <intent-filter  android:icon="@drawable/ic_launcher">
+        <activity
+            android:name=".dexcom.DexcomG4Activity"
+            android:icon="@drawable/ic_launcher"
+            android:label="NightScout"
+            android:launchMode="singleTask"
+            android:screenOrientation="portrait" >
+            <intent-filter android:icon="@drawable/ic_launcher" >
                 <action android:name="android.intent.action.MAIN" />
+
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
-            <intent-filter  android:icon="@drawable/ic_launcher" >
+            <intent-filter android:icon="@drawable/ic_launcher" >
                 <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
             </intent-filter>
 
             <meta-data
-                    android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
-                    android:resource="@xml/device_filter" />
+                android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
+                android:resource="@xml/device_filter" />
         </activity>
-        <activity android:name=".settings.SettingsActivity"
-                  android:icon="@drawable/ic_launcher"
-                  android:label="Settings"/>
-        
-        <service android:icon="@drawable/ic_launcher" android:name=".dexcom.DexcomG4Service" >
+        <activity
+            android:name=".settings.SettingsActivity"
+            android:icon="@drawable/ic_launcher"
+            android:label="Settings" />
+
+        <service
+            android:name=".dexcom.DexcomG4Service"
+            android:icon="@drawable/ic_launcher" >
         </service>
-        <!--<service  android:icon="@drawable/ic_launcher"
+        <!--
+        <service  android:icon="@drawable/ic_launcher"
                 android:label="NightScout" android:name=".medtronic.MedtronicCGMService">
-        </service>-->
-        <service android:icon="@drawable/ic_launcher" android:name=".medtronic.service.MedtronicCNLService" >
         </service>
-        <service android:icon="@drawable/ic_launcher" android:process=":nightscoutcnlservice" android:name=".medtronic.service.TestService" >
+        -->
+        <service
+            android:name=".medtronic.service.MedtronicCNLService"
+            android:icon="@drawable/ic_launcher" >
         </service>
-        <service  android:icon="@drawable/ic_launcher"
-                android:label="NightScout" android:name=".widget.CGMWidgetUpdater">
+        <service
+            android:name=".medtronic.service.TestService"
+            android:icon="@drawable/ic_launcher"
+            android:process=":nightscoutcnlservice" >
+        </service>
+        <service
+            android:name=".widget.CGMWidgetUpdater"
+            android:icon="@drawable/ic_launcher"
+            android:label="NightScout" >
         </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>
+
+        <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=".dexcom.LoginActivity"
+            android:label="@string/title_activity_login" >
+        </activity>
     </application>
+
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java
index f1794249fe5bb3cfcf96939a2d0caf73565f2540..f183f1140462b6da6c525b8373c03153b404c19a 100644
--- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java
+++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java
@@ -1,25 +1,12 @@
 package com.nightscout.android.dexcom;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.ObjectInputStream;
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-
-import org.slf4j.LoggerFactory;
-import org.slf4j.Logger;
-
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManager.RunningServiceInfo;
-import android.app.AlertDialog;
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
 import android.graphics.Color;
@@ -32,7 +19,6 @@ import android.os.RemoteException;
 import android.os.StrictMode;
 import android.preference.PreferenceManager;
 import android.text.Html;
-import android.text.InputType;
 import android.text.format.DateUtils;
 import android.text.method.ScrollingMovementMethod;
 import android.util.Log;
@@ -52,14 +38,21 @@ import com.nightscout.android.R;
 import com.nightscout.android.eula.Eula;
 import com.nightscout.android.eula.Eula.OnEulaAgreedTo;
 import com.nightscout.android.medtronic.MedtronicCGMService;
-import com.nightscout.android.medtronic.service.MedtronicCNLService;
 import com.nightscout.android.medtronic.MedtronicConstants;
+import com.nightscout.android.medtronic.service.MedtronicCNLService;
 import com.nightscout.android.service.ServiceManager;
 import com.nightscout.android.settings.SettingsActivity;
 import com.nightscout.android.upload.Medtronic640gPumpRecord;
-import com.nightscout.android.upload.MedtronicSensorRecord;
 import com.nightscout.android.upload.Record;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.ObjectInputStream;
+import java.text.DecimalFormat;
+
 /* Main activity for the DexcomG4Activity program */
 public class DexcomG4Activity extends Activity implements OnSharedPreferenceChangeListener, OnEulaAgreedTo {
     private Logger log = (Logger) LoggerFactory.getLogger(DexcomG4Activity.class.getName());
@@ -97,14 +90,12 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
     Boolean mHandlerActive = false;
     Object mHandlerActiveLock = new Object();
     Boolean usbAllowedPermission = false;
-    //final Messenger mMessenger = new Messenger(new IncomingHandler());
     ActivityManager manager = null;
     final Context ctx = this;
     SharedPreferences settings = null;
     SharedPreferences prefs = null;
     private static final boolean ISDEBUG = true;
 
-    // TODO - merge this with IncomingHandler
     public class DexcomG4ActivityHandler extends Handler {
         public static final int MSG_ERROR = 1;
         public static final int MSG_STATUS = 2;
@@ -115,7 +106,6 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
             Log.d( TAG, "Got message from Service." );
             switch ( cgmSelected ) {
                 case CNL_24:
-                    //usbAllowedPermission = true;
                     switch (msg.what) {
                         case MSG_ERROR:
                             display.setText(msg.obj.toString(), BufferType.EDITABLE);
@@ -147,12 +137,14 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
                                 log.info("mmolxl false --> " + bglString);
                             }
 
+                            //mTitleTextView.setTextColor(Color.YELLOW);
                             mTitleTextView.setText(Html.fromHtml(
-                                    String.format( "<big><b>%s</b></big> <small>%s</small>", bglString, unitsString)));
+                                    String.format( "<big><b>%s</b></big> <small>%s %s</small>",
+                                            bglString, unitsString, renderTrendHtml(record.getTrend()))));
 
                             mDumpTextView.setTextColor(Color.WHITE);
                             mDumpTextView.setText(Html.fromHtml(
-                                String.format( "<b>BGL at:</b> %s<br/><b>Pump Time:</b> %s<br/><b>Active Insulin: <b>%.3f<br/><b>Rate of Change: </b>%s",
+                                String.format( "<b>BGL 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.sensorBGLDate.getTime(),DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME),
                                     DateUtils.formatDateTime(getBaseContext(),record.pumpDate.getTime(),DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME),
                                     record.activeInsulin,
@@ -168,338 +160,6 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
         }
     }
 
-    /*
-    class IncomingHandler extends Handler {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MedtronicConstants.MSG_MEDTRONIC_CGM_MESSAGE_RECEIVED:
-                    Log.i("MessageReceived", msg.getData().getString("data") + "\n");
-                    if (ISDEBUG) {
-                        display.setText(display.getText() + "Medtronic CGM Message: " + msg.getData().getString("data") + "\n", BufferType.EDITABLE);
-                        msgsDisplayed++;
-                    }
-                    mHandler.removeCallbacks(updateDataView);
-                    mHandler.post(updateDataView);
-                    break;
-                case MedtronicConstants.MSG_MEDTRONIC_CGM_CLEAR_DISPLAY:
-                    if (ISDEBUG) {
-                        display.setText("", BufferType.EDITABLE);
-                        msgsDisplayed = 0;
-                    }
-                    break;
-                case MedtronicConstants.MSG_MEDTRONIC_CGM_NO_PERMISSION:
-                    usbAllowedPermission = false;
-                    mHandler.removeCallbacks(updateDataView);
-                    mHandler.post(updateDataView);
-                    break;
-                case MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_DETECTED:
-                    showUseCalibConfirmation(msg.getData().getFloat("data"), msg.getData().getBoolean("calibrating"), msg.getData().getBoolean("isCalFactorFromPump"));
-                    break;
-                case MedtronicConstants.MSG_MEDTRONIC_CGM_USB_GRANTED:
-                    usbAllowedPermission = true;
-                    mHandler.removeCallbacks(updateDataView);
-                    mHandler.post(updateDataView);
-                    break;
-                case MedtronicConstants.MSG_MEDTRONIC_CGM_ERROR_RECEIVED:
-                    Log.e("MessageReceived", msg.getData().getString("data") + "\n");
-                    if (ISDEBUG) {
-                        if (msgsDisplayed > 8) {
-                            display.setText("", BufferType.EDITABLE);
-                            msgsDisplayed = 0;
-                        }
-                        String sText = display.getText().toString();
-                        String sError = msg.getData().getString("data");
-                        if (!(sText.indexOf(sError) >= 0)) {
-                            display.setText(display.getText() + "Medtronic CGM Message: " + sError + "\n", BufferType.EDITABLE);
-                            msgsDisplayed++;
-                        }
-                    }
-                    break;
-                case MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE:
-                    Log.e("MessageReceived", MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE + "\n");
-                    mHandler.removeCallbacks(updateDataView);
-                    mHandler.post(updateDataView);
-                    break;
-                case MedtronicConstants.MSG_REFRESH_DB_CONNECTION:
-                    if (mService != null) {
-                        try {
-                            Message message = Message.obtain(null, MedtronicConstants.MSG_REFRESH_DB_CONNECTION);
-                            msg.replyTo = mMessenger;
-                            mService.send(message);
-                        } catch (RemoteException e) {
-                            StringBuffer sb1 = new StringBuffer("");
-                            sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                            for (StackTraceElement st : e.getStackTrace()) {
-                                sb1.append(st.toString()).append("\n");
-                            }
-                            Log.e("ApprovGlucValReceived", "Error approving gluc. value \n " + sb1.toString());
-                            if (ISDEBUG) {
-                                display.setText(display.getText() + "Error approving gluc. value\n", BufferType.EDITABLE);
-                            }
-                        }
-                    }
-                    break;
-                default:
-                    super.handleMessage(msg);
-            }
-        }
-    }
-    */
-
-    /*
-    private void showUseCalibConfirmation(final float num, final boolean calibrate, final boolean isCalFactorFromPump) {
-        AlertDialog.Builder alert = new AlertDialog.Builder(ctx);
-        alert.setTitle("Calibration Detected!!!");
-        alert.setMessage("Do you want to use the received glucometer value for calibration?");
-
-        alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
-            public void onClick(DialogInterface dialog, int whichButton) {
-                if (mService != null) {
-                    try {
-                        Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_APPROVED);
-                        Bundle b = new Bundle();
-                        b.putBoolean("approved", true);
-                        b.putFloat("data", num);
-                        b.putBoolean("calibrating", calibrate);
-                        b.putBoolean("isCalFactorFromPump", isCalFactorFromPump);
-                        msg.setData(b);
-                        msg.replyTo = mMessenger;
-                        mService.send(msg);
-                    } catch (RemoteException e) {
-                        StringBuffer sb1 = new StringBuffer("");
-                        sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                        for (StackTraceElement st : e.getStackTrace()) {
-                            sb1.append(st.toString()).append("\n");
-                        }
-                        Log.e("ApprovGlucValReceived", "Error approving gluc. value \n " + sb1.toString());
-                        if (ISDEBUG) {
-                            display.setText(display.getText() + "Error approving gluc. value\n", BufferType.EDITABLE);
-                        }
-                    }
-                }
-            }
-        });
-
-        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
-            public void onClick(DialogInterface dialog, int whichButton) {
-                if (mService != null) {
-                    try {
-                        Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_APPROVED);
-                        Bundle b = new Bundle();
-
-                        b.putBoolean("approved", false);
-
-                        msg.setData(b);
-                        msg.replyTo = mMessenger;
-                        mService.send(msg);
-                    } catch (RemoteException e) {
-                        StringBuffer sb1 = new StringBuffer("");
-                        sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                        for (StackTraceElement st : e.getStackTrace()) {
-                            sb1.append(st.toString()).append("\n");
-                        }
-                        Log.e("ApprovGlucValReceived", "Error approving gluc. value \n " + sb1.toString());
-                        if (ISDEBUG) {
-                            display.setText(display.getText() + "Error approving gluc. value\n", BufferType.EDITABLE);
-                        }
-                    }
-                }
-            }
-        });
-
-        alert.show();
-    }
-    */
-
-    /*
-    private ServiceConnection mConnection = new ServiceConnection() {
-        public void onServiceConnected(ComponentName className, IBinder service) {
-            bService = service;
-            mService = new Messenger(service);
-            try {
-                Message msg = Message.obtain(null, MedtronicConstants.MSG_REGISTER_CLIENT);
-                msg.replyTo = mMessenger;
-                mService.send(msg);
-            } catch (RemoteException e) {
-
-                StringBuffer sb1 = new StringBuffer("");
-                sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                for (StackTraceElement st : e.getStackTrace()) {
-                    sb1.append(st.toString()).append("\n");
-                }
-                Log.e("CGM_ONSERVICECONNECT", "Error Registering Client Service Connection\n" + sb1.toString());
-                if (ISDEBUG) {
-                    display.setText(display.getText() + "Error Registering Client Service Connection\n", BufferType.EDITABLE);
-                }
-                // In this case the service has crashed before we could even do anything with it
-            }
-        }
-
-        public void onServiceDisconnected(ComponentName className) {
-            // This is called when the connection with the service has been unexpectedly disconnected - process crashed.
-            mService = null;
-            bService = null;
-            Log.i("CGM_ONSERVICEDISCONNECT", "Service Disconnected\n");
-            if (ISDEBUG) {
-                display.setText(display.getText() + "Service Disconnected\n", BufferType.EDITABLE);
-            }
-        }
-    };
-    */
-
-
-    //All I'm really doing here is creating a simple activity to launch and maintain the service
-    /*
-    private Runnable updateDataView = new Runnable() {
-        public void run() {
-            synchronized (mHandlerActiveLock) {
-                if (!mHandlerActive)
-                    return;
-                if (!isMyServiceRunning()) {
-                    if (retryCount < maxRetries) {
-                        stopCGMServices();
-                        startCGMServices();
-                        mTitleTextView.setTextColor(Color.YELLOW);
-                        mTitleTextView.setText("Connecting...");
-                        Log.i(TAG, "Starting service " + retryCount + "/" + maxRetries);
-                        ++retryCount;
-                    } else {
-                        mHandler.removeCallbacks(updateDataView);
-                        Log.i(TAG, "Unable to restart service, trying to recreate the activity");
-                        //recreate();
-                    }
-                } else {
-                    retryCount = 0;
-                    if (usbAllowedPermission) {
-                        mTitleTextView.setTextColor(Color.GREEN);
-                        mTitleTextView.setText("CGM Service Started");
-                        b1.setText("Stop Uploading CGM Data");
-                        Record auxRecord = DexcomG4Activity.this.loadClassFile(new File(getBaseContext().getFilesDir(), "save.bin"));
-                        long calDate = -1;
-                        try {
-                            if (settings.contains("lastCalibrationDate")) {
-                                calDate = settings.getLong("lastCalibrationDate", -1);
-                            }
-                            SharedPreferences prefs = PreferenceManager
-                                    .getDefaultSharedPreferences(getBaseContext());
-
-
-                            DecimalFormat df = null;
-                            if (prefs.getBoolean("mmolDecimals", false))
-                                df = new DecimalFormat("#.##");
-                            else
-                                df = new DecimalFormat("#.#");
-                            if (cgmSelected == MEDTRONIC_CGM && auxRecord instanceof MedtronicSensorRecord && auxRecord != null) {
-
-                                MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord;
-
-                                if (prefs.getBoolean("mmolxl", false)) {
-                                    Float fBgValue = null;
-                                    try {
-                                        fBgValue = (float) Integer.parseInt(record.bGValue);
-                                        log.info("mmolxl true --> " + record.bGValue);
-                                        record.bGValue = df.format(fBgValue / 18f);
-                                        log.info("mmolxl/18 true --> " + record.bGValue);
-                                    } catch (Exception e) {
-
-                                    }
-                                } else
-                                    log.info("mmolxl false --> " + record.bGValue);
-                                boolean isCalibrating = record.isCalibrating;
-                                String calib = "---";
-                                if (isCalibrating) {
-                                    calib = MedtronicConstants.CALIBRATING_STR;
-                                } else {
-                                    calib = MedtronicConstants.getCalibrationStrValue(record.calibrationStatus);
-                                }
-                                calib += "\nlast cal. ";
-                                String tail = " min. ago";
-                                int lastCal = 0;
-                                if (calDate > 0) {
-                                    lastCal = (int) ((System.currentTimeMillis() - calDate) / 60000);
-                                    if (lastCal >= 60) {
-                                        lastCal = lastCal / 60;
-                                        tail = " hour(s) ago";
-                                    }
-                                }
-                                calib += "" + lastCal + tail;
-                                if (prefs.getBoolean("isWarmingUp", false)) {
-                                    calib = "";
-                                    record.bGValue = "W_Up";
-                                    record.trendArrow = "---";
-                                }
-                                mDumpTextView.setTextColor(Color.WHITE);
-                                if (record.displayDateTime == 0) {
-                                    mDumpTextView.setText("\n" + record.displayTime + "\n" + record.bGValue + "  " + record.trendArrow + "\n" + calib + "\n");
-                                } else
-                                    mDumpTextView.setText("\n" + (System.currentTimeMillis() - record.displayDateTime) / 60000 + " min. ago\n" + record.bGValue + "  " + record.trendArrow + "\n" + calib + "\n");
-
-                            } else if (cgmSelected == CNL_24 && auxRecord instanceof Medtronic640gPumpRecord && auxRecord != null) {
-                                Medtronic640gPumpRecord record = (Medtronic640gPumpRecord) auxRecord;
-
-                                String bglString = "---";
-                                String unitsString = "mg/dL";
-                                if (prefs.getBoolean("mmolxl", false)) {
-                                    try {
-                                        float fBgValue = Float.valueOf(record.sensorBGL);
-                                        bglString = df.format(fBgValue / 18.016f);
-                                        unitsString = "mmol/L";
-                                        log.info("mmolxl true --> " + bglString);
-                                    } catch (Exception e) {
-
-                                    }
-                                } else {
-                                    bglString = String.valueOf(record.sensorBGL);
-                                    log.info("mmolxl false --> " + bglString);
-                                }
-                                mDumpTextView.setTextColor(Color.WHITE);
-                                mDumpTextView.setText(Html.fromHtml(
-                                    String.format( "<div><big><b>%s</b></big> <small>%s</small></div><br/>%s", bglString, unitsString, record.displayTime )
-                                ));
-                            } else if (auxRecord instanceof EGVRecord) {
-                                EGVRecord record = (EGVRecord) auxRecord;
-                                if (prefs.getBoolean("mmolxl", false)) {
-                                    Float fBgValue = null;
-                                    try {
-                                        fBgValue = (float) Integer.parseInt(record.bGValue);
-                                        log.info("mmolxl true --> " + record.bGValue);
-                                        record.bGValue = df.format(fBgValue / 18f);
-                                        log.info("mmolxl/18 true --> " + record.bGValue);
-                                    } catch (Exception e) {
-
-                                    }
-                                } else
-                                    log.info("mmolxl false --> " + record.bGValue);
-                                mDumpTextView.setTextColor(Color.WHITE);
-                                mDumpTextView.setText("\n" + record.displayTime + "\n" + record.bGValue + "  " + record.trendArrow + "\n");
-                            } else {
-                                mDumpTextView.setTextColor(Color.WHITE);
-                                if (auxRecord == null || auxRecord.displayTime == null)
-                                    mDumpTextView.setText("\n---\n---\n---\n");
-                                else
-                                    mDumpTextView.setText("\n" + auxRecord.displayTime + "\n---\n---\n");
-                            }
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-
-                    } else {
-                        b1.setText("Start Uploading CGM Data");
-                        mTitleTextView.setTextColor(Color.RED);
-                        mTitleTextView.setText("CGM Service Stopped");
-                    }
-
-                }
-
-                mHandler.removeCallbacks(updateDataView);
-                mHandler.postDelayed(updateDataView, 60000);
-            }
-        }
-    };
-    */
-
-
     private class BatteryReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context arg0, Intent arg1) {
@@ -557,10 +217,6 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
             mHandlerActive = true;
         }
 
-
-        //mTitleTextView.setTextColor(Color.YELLOW);
-        //mTitleTextView.setText("CGM Service Pending");
-
         b1.setText("Stop Uploading CGM Data");
         lnr.addView(b1);
         lnr2.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
@@ -572,15 +228,7 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
         b4.setText("Get Now");
         b4.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1.0f));
         lnr3.addView(b4);
-        if (menu != null) {
-            if (calibrationSelected == MedtronicConstants.CALIBRATION_MANUAL) {
-                menu.getItem(3).setVisible(false);
-                menu.getItem(4).setVisible(true);
-            } else {
-                menu.getItem(3).setVisible(false);
-                menu.getItem(4).setVisible(false);
-            }
-        }
+
         if (ISDEBUG) {
             lnr3.addView(b2);
         }
@@ -683,108 +331,6 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
     protected void onResume() {
         log.info("ON RESUME!");
         super.onResume();
-        // Refresh the status
-        /*
-        try {
-            Record auxRecord = DexcomG4Activity.this.loadClassFile(new File(
-                    getBaseContext().getFilesDir(), "save.bin"));
-            long calDate = -1;
-            if (settings.contains("lastCalibrationDate")) {
-                calDate = settings.getLong("lastCalibrationDate", -1);
-            }
-            SharedPreferences prefs = PreferenceManager
-                    .getDefaultSharedPreferences(getBaseContext());
-
-            DecimalFormat df = null;
-            if (prefs.getBoolean("mmolDecimals", false))
-                df = new DecimalFormat("#.##");
-            else
-                df = new DecimalFormat("#.#");
-            if (cgmSelected == MEDTRONIC_CGM
-                    && auxRecord instanceof MedtronicSensorRecord
-                    && auxRecord != null) {
-
-                MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord;
-
-                if (prefs.getBoolean("mmolxl", false)) {
-                    Float fBgValue = null;
-                    try {
-                        fBgValue = (float) Integer.parseInt(record.bGValue);
-                        log.info("mmolxl true --> " + record.bGValue);
-                        record.bGValue = df.format(fBgValue / 18f);
-                        log.info("mmolxl/18 true --> " + record.bGValue);
-                    } catch (Exception e) {
-
-                    }
-                } else
-                    log.info("mmolxl false --> " + record.bGValue);
-                boolean isCalibrating = record.isCalibrating;
-                String calib = "---";
-                if (isCalibrating) {
-                    calib = MedtronicConstants.CALIBRATING_STR;
-                } else {
-                    calib = MedtronicConstants
-                            .getCalibrationStrValue(record.calibrationStatus);
-                }
-                calib += "\nlast cal. ";
-                String tail = " min. ago";
-                int lastCal = 0;
-                if (calDate > 0) {
-                    lastCal = (int) ((System.currentTimeMillis() - calDate) / 60000);
-                    if (lastCal >= 60) {
-                        lastCal = lastCal / 60;
-                        tail = " hour(s) ago";
-                    }
-                }
-                calib += "" + lastCal + tail;
-                if (prefs.getBoolean("isWarmingUp", false)) {
-                    calib = "";
-                    record.bGValue = "W_Up";
-                    record.trendArrow = "---";
-                }
-                mDumpTextView.setTextColor(Color.WHITE);
-                if (record.displayDateTime == 0) {
-                    mDumpTextView.setText("\n" + record.displayTime + "\n"
-                            + record.bGValue + "  " + record.trendArrow + "\n"
-                            + calib + "\n");
-                } else
-                    mDumpTextView
-                            .setText("\n"
-                                    + (System.currentTimeMillis() - record.displayDateTime)
-                                    / 60000 + " min. ago\n" + record.bGValue
-                                    + "  " + record.trendArrow + "\n" + calib
-                                    + "\n");
-
-            } else if (auxRecord instanceof EGVRecord) {
-                EGVRecord record = (EGVRecord) auxRecord;
-                if (prefs.getBoolean("mmolxl", false)) {
-                    Float fBgValue = null;
-                    try {
-                        fBgValue = (float) Integer.parseInt(record.bGValue);
-                        log.info("mmolxl true --> " + record.bGValue);
-                        record.bGValue = df.format(fBgValue / 18f);
-                        log.info("mmolxl/18 true --> " + record.bGValue);
-                    } catch (Exception e) {
-
-                    }
-                } else
-                    log.info("mmolxl false --> " + record.bGValue);
-                mDumpTextView.setTextColor(Color.WHITE);
-                mDumpTextView.setText("\n" + record.displayTime + "\n"
-                        + record.bGValue + "  " + record.trendArrow + "\n");
-            } else {
-                mDumpTextView.setTextColor(Color.WHITE);
-                if (auxRecord == null || auxRecord.displayTime == null)
-                    mDumpTextView.setText("\n---\n---\n---\n");
-                else
-                    mDumpTextView.setText("\n" + auxRecord.displayTime
-                            + "\n---\n---\n");
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        */
-
     }
 
     //Check to see if service is running
@@ -822,32 +368,7 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
         MenuInflater inflater = getMenuInflater();
         this.menu = menu;
         inflater.inflate(R.menu.menu, menu);
-        if (cgmSelected == MEDTRONIC_CGM) {
-            SharedPreferences prefs = PreferenceManager
-                    .getDefaultSharedPreferences(getBaseContext());
-            if (prefs.contains("calibrationType")) {
-                String type = prefs.getString("calibrationType", "3");
-                if ("3".equalsIgnoreCase(type))
-                    menu.getItem(2).setVisible(false);
-                else if ("2".equalsIgnoreCase(type)) {
-                    menu.getItem(2).setVisible(true);
-                } else
-                    menu.getItem(2).setVisible(false);
-            }
-            menu.getItem(1).setVisible(true);
-            if (calibrationSelected == MedtronicConstants.CALIBRATION_MANUAL) {
-                menu.getItem(3).setVisible(false);
-                menu.getItem(4).setVisible(true);
-            } else {
-                menu.getItem(3).setVisible(false);
-                menu.getItem(4).setVisible(false);
-            }
-        } else {
-            menu.getItem(2).setVisible(false);
-            menu.getItem(1).setVisible(false);
-            menu.getItem(3).setVisible(false);
-            menu.getItem(4).setVisible(false);
-        }
+
         return true;
     }
 
@@ -856,180 +377,13 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
 
         switch (item.getItemId()) {
             case R.id.menu_settings:
-                Intent intent = new Intent(this, SettingsActivity.class);
-                startActivity(intent);
+                Intent settingsIntent = new Intent(this, SettingsActivity.class);
+                startActivity(settingsIntent);
                 break;
-            case R.id.refreshCalFactor:
-                if (mService == null && bService != null) {
-                    mService = new Messenger(bService);
-                }
-                if (mService != null) {
-                    try {
-                        Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_GET_SENSORCAL_FACTOR);
-                        //msg.replyTo = mMessenger;
-                        mService.send(msg);
-                    } catch (RemoteException e) {
-                        StringBuffer sb1 = new StringBuffer("");
-                        sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                        for (StackTraceElement st : e.getStackTrace()) {
-                            sb1.append(st.toString()).append("\n");
-                        }
-                        //log.error("medtronicManualCalibration", "Error sending Manual Calibration\n "+sb1.toString());
-                        if (ISDEBUG) {
-                            display.setText(display.getText() + "Error sending get sensor Calibration factor\n", BufferType.EDITABLE);
-                        }
-                        // In this case the service has crashed before we could even do anything with it
-                    }
-                }
-
-                break;
-            case R.id.readPumpInfo:
-                if (mService == null && bService != null) {
-                    mService = new Messenger(bService);
-                }
-                if (mService != null) {
-                    try {
-                        Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_GET_PUMP_INFO);
-                        //msg.replyTo = mMessenger;
-                        mService.send(msg);
-                    } catch (RemoteException e) {
-                        StringBuffer sb1 = new StringBuffer("");
-                        sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                        for (StackTraceElement st : e.getStackTrace()) {
-                            sb1.append(st.toString()).append("\n");
-                        }
-                        //log.error("medtronicManualCalibration", "Error sending Manual Calibration\n "+sb1.toString());
-                        if (ISDEBUG) {
-                            display.setText(display.getText() + "Error sending get pump info\n", BufferType.EDITABLE);
-                        }
-                        // In this case the service has crashed before we could even do anything with it
-                    }
-                }
+            case R.id.registerCNL:
+                Intent loginIntent = new Intent(this, LoginActivity.class);
+                startActivity(loginIntent);
                 break;
-            case R.id.calibMan: {
-
-                log.debug("Manual Calibration");
-                AlertDialog.Builder alert = new AlertDialog.Builder(ctx);
-                alert.setTitle("Manual Calibration");
-                alert.setMessage("Insert your glucose value in mg/dl (only natural numbers)");
-
-                if (prefs.getBoolean("mmolxl", false)) {
-                    alert.setMessage("Insert your glucose value in mmol/l (only 2 decimals)");
-                    log.debug("mmol/l");
-                }
-
-
-                // Set an EditText view to get user input
-                input = new EditText(ctx);
-                input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
-                alert.setView(input);
-
-                alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int whichButton) {
-                        String value = input.getText().toString();
-                        log.debug("Manual Calibration send " + value);
-                        if (mService == null && bService != null) {
-                            mService = new Messenger(bService);
-                        }
-                        if (mService != null) {
-                            try {
-                                Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE);
-                                Bundle b = new Bundle();
-                                b.putString("sgv", value);
-                                prefs.edit().putString("manual_sgv", value).commit();
-                                msg.setData(b);
-                                //msg.replyTo = mMessenger;
-                                mService.send(msg);
-                            } catch (RemoteException e) {
-                                StringBuffer sb1 = new StringBuffer("");
-                                sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                                for (StackTraceElement st : e.getStackTrace()) {
-                                    sb1.append(st.toString()).append("\n");
-                                }
-                                Log.e("medtronicManualCal", "Error sending Manual Calibration\n " + sb1.toString());
-                                if (ISDEBUG) {
-                                    display.setText(display.getText() + "Error sending Manual Calibration\n", BufferType.EDITABLE);
-                                }
-                                // In this case the service has crashed before we could even do anything with it
-                            }
-                        }
-                    }
-                });
-
-                alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int whichButton) {
-                        // Canceled.
-                    }
-                });
-
-                alert.show();
-            }
-            break;
-            case R.id.instantCalib: {
-                log.debug("Instant Calibration ");
-                AlertDialog.Builder alert2 = new AlertDialog.Builder(ctx);
-
-                alert2.setTitle("Instant Calibration");
-                alert2.setMessage("Insert pump value in mg/dl (only natural numbers)");
-                prefs = PreferenceManager
-                        .getDefaultSharedPreferences(getBaseContext());
-                if (prefs.getBoolean("mmolxl", false)) {
-                    alert2.setMessage("Insert pump value in mmol/l (only 2 decimals)");
-                    log.debug("Instant Calibration mmol/l");
-                }
-                // Set an EditText view to get user input
-                input = new EditText(ctx);
-                input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
-
-                float num = settings.getFloat("lastGlucometerValue", (float) -1f);
-                if (num <= 0)
-                    num = 0;
-
-                if (prefs.getBoolean("mmolxl", false)) {
-                    DecimalFormat df = new DecimalFormat("#.#");
-                    input.setText(df.format((num / 18.0)));
-                } else
-                    input.setText("" + (int) num);
-                alert2.setView(input);
-
-                alert2.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int whichButton) {
-                        String value = input.getText().toString();
-                        log.debug("Instant Calibration send " + value);
-                        if (mService != null) {
-                            try {
-                                Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE);
-                                Bundle b = new Bundle();
-                                b.putString("sgv", value);
-                                prefs.edit().putString("instant_sgv", value).commit();
-                                msg.setData(b);
-                                //msg.replyTo = mMessenger;
-                                mService.send(msg);
-                            } catch (RemoteException e) {
-                                StringBuffer sb1 = new StringBuffer("");
-                                sb1.append("EXCEPTION!!!!!! " + e.getMessage() + " " + e.getCause());
-                                for (StackTraceElement st : e.getStackTrace()) {
-                                    sb1.append(st.toString()).append("\n");
-                                }
-                                Log.e("medtronicManualCal", "Error sending Instant Calibration\n " + sb1.toString());
-                                if (ISDEBUG) {
-                                    display.setText(display.getText() + "Error sending Instant Calibration\n", BufferType.EDITABLE);
-                                }
-
-                            }
-                        }
-                    }
-                });
-
-                alert2.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int whichButton) {
-                        // Canceled.
-                    }
-                });
-
-                alert2.show();
-            }
-            break;
             default:
                 break;
         }
@@ -1148,37 +502,6 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
                                           String key) {
         try {
-            if (cgmSelected == MEDTRONIC_CGM) {
-                SharedPreferences prefs = PreferenceManager
-                        .getDefaultSharedPreferences(getBaseContext());
-                if (prefs.contains("calibrationType")) {
-                    String type = prefs.getString("calibrationType", "3");
-                    if ("3".equalsIgnoreCase(type)) {
-                        menu.getItem(2).setVisible(false);
-                        if (menu != null) {
-                            menu.getItem(3).setVisible(false);
-                            menu.getItem(4).setVisible(true);
-                        }
-                    } else if ("2".equalsIgnoreCase(type)) {
-                        menu.getItem(2).setVisible(true);
-                        if (menu != null) {
-                            menu.getItem(3).setVisible(false);
-                            menu.getItem(4).setVisible(false);
-                        }
-                    } else {
-                        menu.getItem(2).setVisible(false);
-                        if (menu != null) {
-                            menu.getItem(3).setVisible(false);
-                            menu.getItem(4).setVisible(false);
-                        }
-                    }
-                }
-                menu.getItem(1).setVisible(true);
-            } else {
-                menu.getItem(2).setVisible(false);
-                menu.getItem(1).setVisible(false);
-            }
-
             //If i do not
             if (key.equals("IUNDERSTAND")) {
                 if (!sharedPreferences.getBoolean("IUNDERSTAND", false)) {
@@ -1219,4 +542,27 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan
         keepServiceAlive = false;
 
     }
+
+    private String renderTrendHtml(Medtronic640gPumpRecord.TREND trend)
+    {
+        switch( trend )
+        {
+            case DOUBLE_UP:
+                return "&#x21c8;";
+            case SINGLE_UP:
+                return "&#x2191;";
+            case FOURTY_FIVE_UP:
+                return "&#x2197;";
+            case FLAT:
+                return "&#x2192;";
+            case FOURTY_FIVE_DOWN:
+                return "&#x2198;";
+            case SINGLE_DOWN:
+                return "&#x2193;";
+            case DOUBLE_DOWN:
+                return "&#x21ca;";
+            default:
+                return "&mdash;";
+        }
+    }
 }
diff --git a/app/src/main/java/com/nightscout/android/dexcom/LoginActivity.java b/app/src/main/java/com/nightscout/android/dexcom/LoginActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..534f0e407d359b01e4ee2195b654823842f5fa2c
--- /dev/null
+++ b/app/src/main/java/com/nightscout/android/dexcom/LoginActivity.java
@@ -0,0 +1,308 @@
+package com.nightscout.android.dexcom;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Loader;
+import android.database.Cursor;
+import android.os.AsyncTask;
+import android.os.Build;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.inputmethod.EditorInfo;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.nightscout.android.R;
+import com.nightscout.android.medtronic.data.CNLConfigContract;
+import com.nightscout.android.medtronic.data.CNLConfigDbHelper;
+import com.nightscout.android.medtronic.message.MessageUtils;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A login screen that offers login via username/password.
+ */
+public class LoginActivity extends Activity implements LoaderCallbacks<Cursor> {
+
+    /**
+     * Keep track of the login task to ensure we can cancel it if requested.
+     */
+    private GetHmacAndKey mHmacAndKeyTask = null;
+
+    // UI references.
+    private EditText mUsernameView;
+    private EditText mPasswordView;
+    private View mProgressView;
+    private View mLoginFormView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_login);
+        // Set up the login form.
+        mUsernameView = (EditText) findViewById(R.id.username);
+
+        mPasswordView = (EditText) findViewById(R.id.password);
+        mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
+                if (id == R.id.login || id == EditorInfo.IME_NULL) {
+                    attemptLogin();
+                    return true;
+                }
+                return false;
+            }
+        });
+
+        Button mUsernameSignInButton = (Button) findViewById(R.id.username_sign_in_button);
+        mUsernameSignInButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                attemptLogin();
+            }
+        });
+
+        mLoginFormView = findViewById(R.id.login_form);
+        mProgressView = findViewById(R.id.login_progress);
+    }
+
+    /**
+     * Attempts to sign in or register the account specified by the login form.
+     * If there are form errors (invalid username, missing fields, etc.), the
+     * errors are presented and no actual login attempt is made.
+     */
+    private void attemptLogin() {
+        if (mHmacAndKeyTask != null) {
+            return;
+        }
+
+        // Reset errors.
+        mUsernameView.setError(null);
+        mPasswordView.setError(null);
+
+        // Store values at the time of the login attempt.
+        String username = mUsernameView.getText().toString();
+        String password = mPasswordView.getText().toString();
+
+        boolean cancel = false;
+        View focusView = null;
+
+        // Check for a valid password, if the user entered one.
+        if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
+            mPasswordView.setError(getString(R.string.error_invalid_password));
+            focusView = mPasswordView;
+            cancel = true;
+        }
+
+        // Check for a valid username address.
+        if (TextUtils.isEmpty(username)) {
+            mUsernameView.setError(getString(R.string.error_field_required));
+            focusView = mUsernameView;
+            cancel = true;
+        } else if (!isUsernameValid(username)) {
+            mUsernameView.setError(getString(R.string.error_invalid_username));
+            focusView = mUsernameView;
+            cancel = true;
+        }
+
+        if (cancel) {
+            // There was an error; don't attempt login and focus the first
+            // form field with an error.
+            focusView.requestFocus();
+        } else {
+            // Show a progress spinner, and kick off a background task to
+            // perform the user login attempt.
+            showProgress(true);
+            mHmacAndKeyTask = new GetHmacAndKey(username, password);
+            mHmacAndKeyTask.execute((Void) null);
+        }
+    }
+
+    private boolean isUsernameValid(String username) {
+        return true;
+    }
+
+    private boolean isPasswordValid(String password) {
+        return true;
+    }
+
+    /**
+     * Shows the progress UI and hides the login form.
+     */
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
+    private void showProgress(final boolean show) {
+        // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
+        // for very easy animations. If available, use these APIs to fade-in
+        // the progress spinner.
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
+            int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
+
+            mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
+            mLoginFormView.animate().setDuration(shortAnimTime).alpha(
+                    show ? 0 : 1).setListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
+                }
+            });
+
+            mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
+            mProgressView.animate().setDuration(shortAnimTime).alpha(
+                    show ? 1 : 0).setListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
+                }
+            });
+        } else {
+            // The ViewPropertyAnimator APIs are not available, so simply show
+            // and hide the relevant UI components.
+            mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
+            mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
+        }
+    }
+
+    @Override
+    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+        return null;
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+    }
+
+    @Override
+    public void onLoaderReset(Loader<Cursor> loader) {
+    }
+
+    /**
+     * Represents an asynchronous login/registration task used to authenticate
+     * the user.
+     */
+    public class GetHmacAndKey extends AsyncTask<Void, Void, Boolean> {
+
+        private final String mUsername;
+        private final String mPassword;
+
+        GetHmacAndKey(String username, String password ) {
+            mUsername = username;
+            mPassword = password;
+        }
+
+        @Override
+        protected Boolean doInBackground(final Void... params) {
+            try {
+                DefaultHttpClient client = new DefaultHttpClient();
+                HttpPost loginPost = new HttpPost("https://carelink.minimed.eu/patient/j_security_check");
+                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
+                nameValuePairs.add(new BasicNameValuePair("j_username", mUsername));
+                nameValuePairs.add(new BasicNameValuePair("j_password", mPassword));
+                nameValuePairs.add(new BasicNameValuePair("j_character_encoding", "UTF-8"));
+                loginPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
+                HttpResponse response = client.execute(loginPost);
+
+                if (response.getStatusLine().getStatusCode() == 200) {
+                    // Get the HMAC/keys for every serial in the Config database
+                    CNLConfigDbHelper configDbHelper = new CNLConfigDbHelper(getBaseContext());
+                    Cursor cursor = configDbHelper.getAllRows();
+
+                    while( !cursor.isAfterLast() ) {
+                        String longSerial = cursor.getString(cursor.getColumnIndex(CNLConfigContract.ConfigEntry.COLUMN_NAME_STICK_SERIAL));
+
+                        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+                        ObjectOutputStream hmacRequest = new ObjectOutputStream(buffer);
+                        hmacRequest.writeInt(0x1c);
+                        hmacRequest.writeObject(longSerial.replaceAll("\\d+-", ""));
+
+                        HttpPost hmacPost = new HttpPost("https://carelink.minimed.eu/patient/secure/SnapshotServer/");
+                        hmacPost.setEntity(new ByteArrayEntity(buffer.toByteArray()));
+                        hmacPost.setHeader("Content-type", "application/octet-stream");
+                        response = client.execute(hmacPost);
+
+                        ByteArrayInputStream inputBuffer = new ByteArrayInputStream(EntityUtils.toByteArray(response.getEntity()));
+                        ObjectInputStream hmacResponse = new ObjectInputStream(inputBuffer);
+                        byte[] hmacBytes = (byte[]) hmacResponse.readObject();
+                        ArrayUtils.reverse(hmacBytes);
+                        String hmac = MessageUtils.byteArrayToHexString(hmacBytes);
+
+                        buffer.reset();
+                        inputBuffer.reset();
+
+                        ObjectOutputStream keyRequest = new ObjectOutputStream(buffer);
+                        keyRequest.writeInt(0x1f);
+                        keyRequest.writeObject(longSerial);
+
+                        HttpPost keyPost = new HttpPost("https://carelink.minimed.eu/patient/secure/SnapshotServer/");
+                        keyPost.setEntity(new ByteArrayEntity(buffer.toByteArray()));
+                        keyPost.setHeader("Content-type", "application/octet-stream");
+                        response = client.execute(keyPost);
+
+                        inputBuffer = new ByteArrayInputStream(EntityUtils.toByteArray(response.getEntity()));
+                        ObjectInputStream keyResponse = new ObjectInputStream(inputBuffer);
+                        keyResponse.readInt(); // Throw away the first int. Not sure what it does
+                        String key = MessageUtils.byteArrayToHexString((byte[]) keyResponse.readObject());
+
+                        // TODO - return false if this returns 0? What would we do anyway?
+                        configDbHelper.setHmacAndKey(longSerial, hmac, key);
+
+                        cursor.moveToNext();
+                    }
+
+                    return true;
+                }
+
+            } catch (ClientProtocolException e) {
+                return false;
+            } catch (IOException e) {
+                return false;
+            } catch (ClassNotFoundException e) {
+                return false;
+            }
+
+            return false;
+        }
+
+        @Override
+        protected void onPostExecute(final Boolean success) {
+            mHmacAndKeyTask = null;
+            showProgress(false);
+
+            if (success) {
+                finish();
+            } else {
+                mPasswordView.setError(getString(R.string.error_incorrect_password));
+                mPasswordView.requestFocus();
+            }
+        }
+
+        @Override
+        protected void onCancelled() {
+            mHmacAndKeyTask = null;
+            showProgress(false);
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java
index b169ba3b40b815296568c80d642321d7af410ce0..51abaf2261bd7ddd1d8ba591a936f3e353629048 100644
--- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java
+++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLReader.java
@@ -19,6 +19,7 @@ import com.nightscout.android.medtronic.message.PumpStatusRequestMessage;
 import com.nightscout.android.medtronic.message.PumpStatusResponseMessage;
 import com.nightscout.android.medtronic.message.PumpTimeRequestMessage;
 import com.nightscout.android.medtronic.message.PumpTimeResponseMessage;
+import com.nightscout.android.medtronic.message.ReadInfoResponseMessage;
 import com.nightscout.android.medtronic.message.UnexpectedMessageException;
 import com.nightscout.android.medtronic.service.MedtronicCNLService;
 import com.nightscout.android.upload.Medtronic640gPumpRecord;
@@ -34,6 +35,8 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.TimeZone;
 import java.util.concurrent.TimeoutException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * Created by lgoedhart on 24/03/2016.
@@ -48,12 +51,23 @@ public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
 
     private static final byte[] RADIO_CHANNELS = {0x14, 0x11, 0x0e, 0x17, 0x1a};
     private UsbHidDriver mDevice;
+
     private MedtronicCNLSession mPumpSession = new MedtronicCNLSession();
 
+    private String mStickSerial = null;
+
     public MedtronicCNLReader(UsbHidDriver device) {
         mDevice = device;
     }
 
+    public String getStickSerial() {
+        return mStickSerial;
+    }
+
+    public MedtronicCNLSession getPumpSession() {
+        return mPumpSession;
+    }
+
     public byte[] readMessage() throws IOException, TimeoutException {
         ByteArrayOutputStream responseMessage = new ByteArrayOutputStream();
 
@@ -146,9 +160,11 @@ public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
             if (response1[0] == ASCII.EOT.value) {
                 // response 1 is the ASTM message
                 checkControlMessage(response2, ASCII.ENQ.value);
+                extractStickSerial( new String( response1 ) );
             } else {
                 // response 2 is the ASTM message
                 checkControlMessage(response1, ASCII.ENQ.value);
+                extractStickSerial( new String( response2 ) );
             }
         } catch (TimeoutException e) {
             // Terminate comms with the pump, then try again
@@ -162,12 +178,19 @@ public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
         }
     }
 
+    private void extractStickSerial( String astmMessage ) {
+        Pattern pattern = Pattern.compile( ".*?\\^(\\d{4}-\\d{7})\\^.*" );
+        Matcher matcher = pattern.matcher( astmMessage );
+        if( matcher.find() ) {
+            mStickSerial = matcher.group(1);
+        }
+    }
+
     public void enterControlMode() throws IOException, TimeoutException, UnexpectedMessageException {
         new ContourNextLinkCommandMessage(ASCII.NAK.value).send(this);
         checkControlMessage(readMessage(), ASCII.EOT.value);
         new ContourNextLinkCommandMessage(ASCII.ENQ.value).send(this);
         checkControlMessage(readMessage(), ASCII.ACK.value);
-
     }
 
     public void enterPassthroughMode() throws IOException, TimeoutException, UnexpectedMessageException {
@@ -185,10 +208,20 @@ public class MedtronicCNLReader implements ContourNextLinkMessageHandler {
         readMessage();
     }
 
-    public void requestReadInfo() throws IOException, TimeoutException {
+    public void requestReadInfo() throws IOException, TimeoutException, EncryptionException, ChecksumException {
         new ContourNextLinkBinaryMessage(ContourNextLinkBinaryMessage.CommandType.READ_INFO, mPumpSession, null).send(this);
-        // FIXME - pull the linkMAC and pumpMAC from here. It needs to go into the session.
-        readMessage();
+
+        ContourNextLinkMessage response = ReadInfoResponseMessage.fromBytes(mPumpSession, readMessage());
+
+        // FIXME - this needs to go into ReadInfoResponseMessage
+        ByteBuffer infoBuffer = ByteBuffer.allocate(16);
+        infoBuffer.order(ByteOrder.BIG_ENDIAN);
+        infoBuffer.put(response.encode(), 0x21, 16);
+        long linkMAC = infoBuffer.getLong(0);
+        long pumpMAC = infoBuffer.getLong(8);
+
+        this.getPumpSession().setLinkMAC( linkMAC );
+        this.getPumpSession().setPumpMAC( pumpMAC );
     }
 
     public byte negotiateChannel() throws IOException, ChecksumException, TimeoutException {
diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java
index 13fe680aeb4b7e973bfe61d7192211b59d9cce93..ba470a204e3da0fbcdd108d775578658174f1c81 100644
--- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java
+++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCNLSession.java
@@ -6,13 +6,11 @@ import com.nightscout.android.medtronic.message.MessageUtils;
  * Created by lgoedhart on 26/03/2016.
  */
 public class MedtronicCNLSession {
-    // FIXME - Lennart's hard coded key and HMAC
-    private final static byte[] HMAC = MessageUtils.hexStringToByteArray("e28fe4e5cf3c1eb6d6a2ec5a093093d4f397237dc60b3f2c1ef64f31e32077c4");
-    private final static byte[] KEY = MessageUtils.hexStringToByteArray("57833334130906a587b7a0437bc28a69");
+    private byte[] HMAC;
+    private byte[] key;
 
-    // FIXME - Lennart's hard coded serial numbers
-    private final static long linkMAC = 1055866 + 0x0023F70682000000L;
-    private final static long pumpMAC = 1057941 + 0x0023F745EE000000L;
+    private long linkMAC;
+    private long pumpMAC;
 
     private byte radioChannel;
     private int bayerSequenceNumber = 1;
@@ -22,24 +20,32 @@ public class MedtronicCNLSession {
         return HMAC;
     }
 
-    public static byte[] getKey() {
-        return KEY;
+    public byte[] getKey() {
+        return key;
     }
     public byte[] getIV() {
-        byte[] iv = new byte[KEY.length];
-        System.arraycopy(KEY,0,iv,0,KEY.length);
+        byte[] iv = new byte[key.length];
+        System.arraycopy(key,0,iv,0,key.length);
         iv[0] = radioChannel;
         return iv;
     }
 
-    public static long getLinkMAC() {
+    public long getLinkMAC() {
         return linkMAC;
     }
 
-    public static long getPumpMAC() {
+    public void setLinkMAC( long linkMAC ) {
+        this.linkMAC = linkMAC;
+    }
+
+    public long getPumpMAC() {
         return pumpMAC;
     }
 
+    public void setPumpMAC( long pumpMAC ) {
+        this.pumpMAC = pumpMAC;
+    }
+
     public int getBayerSequenceNumber() {
         return bayerSequenceNumber;
     }
@@ -63,4 +69,12 @@ public class MedtronicCNLSession {
     public void setRadioChannel(byte radioChannel) {
         this.radioChannel = radioChannel;
     }
+
+    public void setHMAC( byte[] hmac ) {
+        this.HMAC = hmac;
+    }
+
+    public void setKey( byte[] key ) {
+        this.key = key;
+    }
 }
diff --git a/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigContract.java b/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigContract.java
new file mode 100644
index 0000000000000000000000000000000000000000..dbfbf3b3ce29445c87de69d368bb2687ab247922
--- /dev/null
+++ b/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigContract.java
@@ -0,0 +1,21 @@
+package com.nightscout.android.medtronic.data;
+
+import android.provider.BaseColumns;
+
+/**
+ * Created by lgoedhart on 9/05/2016.
+ */
+public class CNLConfigContract {
+    // To prevent someone from accidentally instantiating the contract class,
+    // give it an empty constructor.
+    public CNLConfigContract() {}
+
+    /* Inner class that defines the table contents */
+    public static abstract class ConfigEntry implements BaseColumns {
+        public static final String TABLE_NAME = "config";
+        public static final String COLUMN_NAME_STICK_SERIAL = "stick_serial";
+        public static final String COLUMN_NAME_HMAC = "hmac";
+        public static final String COLUMN_NAME_KEY = "key";
+        public static final String COLUMN_NAME_LAST_RADIO_CHANNEL = "last_radio_channel";
+    }
+}
diff --git a/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigDbHelper.java b/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigDbHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5e0841a97a6e4bb0312a31b30f9709bfb6324661
--- /dev/null
+++ b/app/src/main/java/com/nightscout/android/medtronic/data/CNLConfigDbHelper.java
@@ -0,0 +1,135 @@
+package com.nightscout.android.medtronic.data;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+/**
+ * Created by lgoedhart on 9/05/2016.
+ */
+public class CNLConfigDbHelper extends SQLiteOpenHelper {
+    // Database Specific Details
+
+    // If you change the database schema, you must increment the database version.
+    private static final int DATABASE_VERSION = 1;
+    // DB Name, same is used to name the sqlite DB file
+    private static final String DATABASE_NAME = "cnl_config.db";
+
+    private static final String SQL_CREATE_CONFIG =
+            "CREATE TABLE " + CNLConfigContract.ConfigEntry.TABLE_NAME + " (" +
+                    CNLConfigContract.ConfigEntry._ID + " INTEGER PRIMARY KEY," +
+                    CNLConfigContract.ConfigEntry.COLUMN_NAME_STICK_SERIAL + " TEXT UNIQUE, " +
+                    CNLConfigContract.ConfigEntry.COLUMN_NAME_HMAC + " TEXT, "+
+                    CNLConfigContract.ConfigEntry.COLUMN_NAME_KEY + " TEXT, " +
+                    CNLConfigContract.ConfigEntry.COLUMN_NAME_LAST_RADIO_CHANNEL + " INTEGER " +
+                    ")";
+
+    private static final String SQL_DROP_CONFIG =
+            "DROP TABLE IF EXISTS " + CNLConfigContract.ConfigEntry.TABLE_NAME;
+
+    public CNLConfigDbHelper(Context context) {
+        super(context, DATABASE_NAME, null, DATABASE_VERSION);
+    }
+
+    @Override
+    public void onCreate(SQLiteDatabase db) {
+        db.execSQL(SQL_CREATE_CONFIG);
+    }
+
+    @Override
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        // No upgrades yet, so drop and rebuild
+        db.execSQL(SQL_DROP_CONFIG);
+        onCreate(db);
+    }
+
+    @Override
+    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        onUpgrade(db, oldVersion, newVersion);
+    }
+
+    public void insertStickSerial( String stickSerial ) {
+        SQLiteDatabase configDb = this.getWritableDatabase();
+        ContentValues insertValues = new ContentValues();
+        insertValues.put(CNLConfigContract.ConfigEntry.COLUMN_NAME_STICK_SERIAL, stickSerial );
+        insertValues.put(CNLConfigContract.ConfigEntry.COLUMN_NAME_HMAC, "");
+        insertValues.put(CNLConfigContract.ConfigEntry.COLUMN_NAME_KEY, "");
+        insertValues.put(CNLConfigContract.ConfigEntry.COLUMN_NAME_LAST_RADIO_CHANNEL, 0x14 );
+        configDb.insertWithOnConflict(CNLConfigContract.ConfigEntry.TABLE_NAME, null, insertValues, SQLiteDatabase.CONFLICT_IGNORE);
+    }
+
+    public String getHmac( String stickSerial ){
+        SQLiteDatabase configDb = this.getWritableDatabase();
+
+        Cursor cursor = configDb.query( CNLConfigContract.ConfigEntry.TABLE_NAME,
+                new String[] { CNLConfigContract.ConfigEntry.COLUMN_NAME_HMAC },
+                CNLConfigContract.ConfigEntry.COLUMN_NAME_STICK_SERIAL + " = ?", new String[]{ stickSerial }, null, null, null);
+
+        if (cursor != null && cursor.moveToFirst()) {
+            String hmac = cursor.getString(cursor.getColumnIndex(CNLConfigContract.ConfigEntry.COLUMN_NAME_HMAC));
+            cursor.close();
+
+            return hmac;
+        } else {
+            return null;
+        }
+    }
+
+    public String getKey( String stickSerial ){
+        SQLiteDatabase configDb = this.getWritableDatabase();
+
+        Cursor cursor = configDb.query( CNLConfigContract.ConfigEntry.TABLE_NAME,
+                new String[] { CNLConfigContract.ConfigEntry.COLUMN_NAME_KEY },
+                CNLConfigContract.ConfigEntry.COLUMN_NAME_STICK_SERIAL + " = ?", new String[]{ stickSerial }, null, null, null);
+
+        if (cursor != null && cursor.moveToFirst()) {
+            String hmac = cursor.getString(cursor.getColumnIndex(CNLConfigContract.ConfigEntry.COLUMN_NAME_KEY));
+            cursor.close();
+
+            return hmac;
+        } else {
+            return null;
+        }
+    }
+
+    public int setHmacAndKey( String stickSerial, String hmac, String key ) {
+        SQLiteDatabase configDb = this.getWritableDatabase();
+
+        ContentValues values = new ContentValues();
+        values.put(CNLConfigContract.ConfigEntry.COLUMN_NAME_HMAC, hmac);
+        values.put(CNLConfigContract.ConfigEntry.COLUMN_NAME_KEY, key);
+
+        // Which row to update, based on the ID
+        String whereClause = CNLConfigContract.ConfigEntry.COLUMN_NAME_STICK_SERIAL + " = ?";
+        String[] whereArgs = { stickSerial };
+
+        int affectedRows = configDb.update(
+                CNLConfigContract.ConfigEntry.TABLE_NAME,
+                values,
+                whereClause,
+                whereArgs
+        );
+
+        return affectedRows;
+    }
+
+    public Cursor getAllRows(){
+        SQLiteDatabase configDb = this.getReadableDatabase();
+
+        String where = null;
+        String whereArgs[] = null;
+        String groupBy = null;
+        String having = null;
+        String order = null;
+        String limit = null;
+
+        Cursor cursor = configDb.query(CNLConfigContract.ConfigEntry.TABLE_NAME, null, where, whereArgs, groupBy, having, order, limit);
+        if (cursor != null){
+            cursor.moveToFirst();
+        }
+        return cursor;
+    }
+
+}
diff --git a/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java b/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java
index aaf21d7558b48d2cf65547329a231de0b85c8fe2..ec28248610cdc5f9531cfcf474ccfa3200694a92 100644
--- a/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java
+++ b/app/src/main/java/com/nightscout/android/medtronic/message/MessageUtils.java
@@ -45,6 +45,14 @@ public class MessageUtils {
         return data;
     }
 
+    public static String byteArrayToHexString(byte[] in) {
+        final StringBuilder builder = new StringBuilder();
+        for(byte b : in) {
+            builder.append(String.format("%02x", b));
+        }
+        return builder.toString();
+    }
+
     public static Date decodeDateTime( long rtc, long offset ) {
         TimeZone currentTz = java.util.Calendar.getInstance().getTimeZone();
         GregorianCalendar gregorianCalendar = new GregorianCalendar(2000, 0, 1, 0, 0, 0);
diff --git a/app/src/main/java/com/nightscout/android/medtronic/message/ReadInfoResponseMessage.java b/app/src/main/java/com/nightscout/android/medtronic/message/ReadInfoResponseMessage.java
new file mode 100644
index 0000000000000000000000000000000000000000..ccab256c2deb3356b4c68ee28f35cabbb376f401
--- /dev/null
+++ b/app/src/main/java/com/nightscout/android/medtronic/message/ReadInfoResponseMessage.java
@@ -0,0 +1,21 @@
+package com.nightscout.android.medtronic.message;
+
+import com.nightscout.android.medtronic.MedtronicCNLSession;
+
+/**
+ * Created by lgoedhart on 10/05/2016.
+ */
+public class ReadInfoResponseMessage extends MedtronicReceiveMessage {
+    protected ReadInfoResponseMessage(CommandType commandType, CommandAction commandAction, MedtronicCNLSession pumpSession, byte[] payload) {
+        super(commandType, commandAction, pumpSession, payload);
+    }
+
+    public static ContourNextLinkMessage fromBytes(MedtronicCNLSession pumpSession, byte[] bytes) throws ChecksumException, EncryptionException {
+        // TODO - turn this into a factory
+        ContourNextLinkMessage message = MedtronicReceiveMessage.fromBytes(pumpSession, bytes);
+
+        // TODO - Validate the MessageType
+
+        return message;
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java b/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java
index ae82286262804267165f6369ea80a6169391157d..ea776e1ecc0eb59bec2ec78da9d623553dbaec9f 100644
--- a/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java
+++ b/app/src/main/java/com/nightscout/android/medtronic/service/MedtronicCNLService.java
@@ -7,6 +7,7 @@ import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.database.sqlite.SQLiteDatabase;
 import android.graphics.BitmapFactory;
 import android.hardware.usb.UsbManager;
 import android.net.ConnectivityManager;
@@ -21,9 +22,12 @@ import android.util.Log;
 import com.nightscout.android.R;
 import com.nightscout.android.USB.UsbHidDriver;
 import com.nightscout.android.dexcom.DexcomG4Activity;
+import com.nightscout.android.dexcom.LoginActivity;
 import com.nightscout.android.medtronic.MedtronicCNLReader;
+import com.nightscout.android.medtronic.data.CNLConfigDbHelper;
 import com.nightscout.android.medtronic.message.ChecksumException;
 import com.nightscout.android.medtronic.message.EncryptionException;
+import com.nightscout.android.medtronic.message.MessageUtils;
 import com.nightscout.android.medtronic.message.UnexpectedMessageException;
 import com.nightscout.android.service.AbstractService;
 import com.nightscout.android.upload.Medtronic640gPumpRecord;
@@ -128,8 +132,23 @@ public class MedtronicCNLService extends AbstractService {
             SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
 
             try {
-                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_STATUS, "Connecting to the Contour CareLink Next..."));
+                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_STATUS, "Connecting to the Contour Next Link..."));
                 cnlReader.requestDeviceInfo();
+
+                // Is the device already configured?
+                CNLConfigDbHelper configDbHelper = new CNLConfigDbHelper(mContext);
+                configDbHelper.insertStickSerial( cnlReader.getStickSerial() );
+                String hmac = configDbHelper.getHmac( cnlReader.getStickSerial() );
+                String key = configDbHelper.getKey( cnlReader.getStickSerial() );
+
+                if( hmac.equals( "" ) || key.equals("") ) {
+                    send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Before you can use the Contour Next Link, you need to register it with the app. Select 'Register USB Stick' from the menu."));
+                    return;
+                }
+
+                cnlReader.getPumpSession().setHMAC( MessageUtils.hexStringToByteArray( hmac ) );
+                cnlReader.getPumpSession().setKey( MessageUtils.hexStringToByteArray( key ) );
+
                 cnlReader.enterControlMode();
                 cnlReader.enterPassthroughMode();
                 cnlReader.openConnection();
@@ -138,7 +157,7 @@ public class MedtronicCNLService extends AbstractService {
                 if (radioChannel == 0) {
                     send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Could not communicate with the 640g. Are you near the pump?"));
                 } else {
-                    send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_STATUS, String.format("Connected to Contour CareLink Next on channel %d.", (int) radioChannel)));
+                    send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_STATUS, String.format("Connected to Contour Next Link on channel %d.", (int) radioChannel)));
                     cnlReader.beginEHSMSession();
 
                     cnlReader.getPumpTime(pumpRecord);
@@ -152,16 +171,16 @@ public class MedtronicCNLService extends AbstractService {
                 cnlReader.endControlMode();
             } catch (IOException e) {
                 Log.e(TAG, "Error getting BGLs", e);
-                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Error connecting to Contour CareLink Next."));
+                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Error connecting to Contour Next Link."));
             } catch (ChecksumException e) {
                 Log.e(TAG, "Checksum error", e);
-                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Checksum error getting message from the Contour CareLink Next."));
+                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Checksum error getting message from the Contour Next Link."));
             } catch (EncryptionException e) {
                 Log.e(TAG, "Encryption exception", e);
-                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Error decrypting messages from Contour CareLink Next."));
+                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Error decrypting messages from Contour Next Link."));
             } catch (TimeoutException e) {
                 Log.e(TAG, "Timeout communicating with Contour", e);
-                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Timeout communicating with the Contour CareLink Next."));
+                send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Timeout communicating with the Contour Next Link."));
             } catch (UnexpectedMessageException e) {
                 Log.e(TAG, "Unexpected Message", e);
                 send(Message.obtain(null, DexcomG4Activity.DexcomG4ActivityHandler.MSG_ERROR, "Communication Error: " + e.getMessage()));
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000000000000000000000000000000000000..25dbb59e48bc3f94831edc6b3553fe3c956c7492
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,72 @@
+<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:gravity="center_horizontal"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.nightscout.android.dexcom.LoginActivity">
+
+    <!-- Login progress -->
+    <ProgressBar
+        android:id="@+id/login_progress"
+        style="?android:attr/progressBarStyleLarge"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="8dp"
+        android:visibility="gone"/>
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="Please enter your CareLink username and password to retrieve the encryption key for this USB stick. Your username and password will not be stored."
+        android:id="@+id/textView" />
+
+    <ScrollView
+        android:id="@+id/login_form"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:id="@+id/user_login_form"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <AutoCompleteTextView
+                android:id="@+id/username"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:hint="@string/prompt_username"
+                android:inputType="text"
+                android:maxLines="1"
+                android:singleLine="true"/>
+
+            <EditText
+                android:id="@+id/password"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:hint="@string/prompt_password"
+                android:imeActionId="@+id/login"
+                android:imeActionLabel="@string/action_sign_in_short"
+                android:imeOptions="actionUnspecified"
+                android:inputType="textPassword"
+                android:maxLines="1"
+                android:singleLine="true"/>
+
+            <Button
+                android:id="@+id/username_sign_in_button"
+                style="?android:textAppearanceSmall"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="16dp"
+                android:text="@string/action_sign_in"
+                android:textStyle="bold"/>
+
+        </LinearLayout>
+    </ScrollView>
+</LinearLayout>
diff --git a/app/src/main/res/layout/adb.xml b/app/src/main/res/layout/adb.xml
index b5cef5f761be91ea41b848966b7745de295b4e9c..6fbbfb4b0db2d2d61ea9f29d3a51d0adc5ed1a15 100644
--- a/app/src/main/res/layout/adb.xml
+++ b/app/src/main/res/layout/adb.xml
@@ -4,17 +4,6 @@
     android:layout_height="fill_parent"
     android:orientation="vertical"
     android:paddingTop="15dp">
-    
-
-    <TextView
-        android:id="@+id/demoTitle"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:textSize="70sp"
-        android:gravity="center"
-		android:textStyle="bold"
- 
-        android:text="@string/hello" />
 
     <ScrollView
         android:id="@+id/demoScroller"
@@ -22,20 +11,36 @@
         android:layout_height="wrap_content"
         android:padding="10dp">
 
-        <TextView
-            android:id="@+id/demoText"
+        <LinearLayout
+            android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:textSize="30sp"
-			
- 			android:gravity="left" />
+            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" />
+
+            <LinearLayout android:id="@+id/container"
+              android:orientation="vertical"
+              android:layout_width="fill_parent"
+              android:layout_height="fill_parent">
+          </LinearLayout>
+        </LinearLayout>
     </ScrollView>
-      <LinearLayout android:id="@+id/container"
-      android:orientation="vertical"
-      android:layout_width="fill_parent"
-      android:layout_height="fill_parent">
-  </LinearLayout>
-
 
 
 </LinearLayout>
diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml
index 1bf1068f4d7119c9e383fa15134297872a8b575c..894bd50820c5fdeb36ced256a5547cf381a6dabd 100644
--- a/app/src/main/res/menu/menu.xml
+++ b/app/src/main/res/menu/menu.xml
@@ -6,23 +6,8 @@
             android:title="Preferences">
     </item>
     <item
-            android:id="@+id/readPumpInfo"
+            android:id="@+id/registerCNL"
             android:orderInCategory="100"
-            android:title="Read Pump Info.">
-    </item>
-    <item
-            android:id="@+id/refreshCalFactor"
-            android:orderInCategory="100"
-            android:title="Get Cal Factor!">
-    </item>
-     <item
-            android:id="@+id/calibMan"
-            android:orderInCategory="100"
-            android:title="Manual Calibration.">
-    </item>
-    <item
-            android:id="@+id/instantCalib"
-            android:orderInCategory="100"
-            android:title="Instant Calibration.">
+            android:title="Register USB Stick">
     </item>
 </menu>
\ No newline at end of file
diff --git a/app/src/main/res/values-v11/styles.xml b/app/src/main/res/values-v11/styles.xml
index 3c02242ad044be9b8c7c09e7c90c5d427763fe97..d4787af956a669791afa0ff3cb5cf1164771aede 100644
--- a/app/src/main/res/values-v11/styles.xml
+++ b/app/src/main/res/values-v11/styles.xml
@@ -4,7 +4,7 @@
         Base application theme for API 11+. This theme completely replaces
         AppBaseTheme from res/values/styles.xml on API 11+ devices.
     -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+    <style name="AppBaseTheme" parent="android:Theme.DeviceDefault">
         <!-- API 11 theme customizations can go here. -->
     </style>
 
diff --git a/app/src/main/res/values-v14/styles.xml b/app/src/main/res/values-v14/styles.xml
index a91fd0372b20f85e284fc2fa2ce949176dfdf6e5..9baa6e219d568d68c95b88bdbe697cc0322e8f3e 100644
--- a/app/src/main/res/values-v14/styles.xml
+++ b/app/src/main/res/values-v14/styles.xml
@@ -5,7 +5,7 @@
         AppBaseTheme from BOTH res/values/styles.xml and
         res/values-v11/styles.xml on API 14+ devices.
     -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+    <style name="AppBaseTheme" parent="android:Theme.DeviceDefault">
         <!-- API 14 theme customizations can go here. -->
     </style>
 
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5f2c7258abfce1dad6b97ac6d6c11006dcb2fcce
--- /dev/null
+++ b/app/src/main/res/values-v21/styles.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <style name="AppBaseTheme" parent="android:Theme.DeviceDefault">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 13c01b25386527ce439dfdbb0f3189da74475e6b..4bc48057ade7e24b8b5122bdba5c5bbea51cba22 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -99,4 +99,18 @@
      <item>10</item>
      <item>11</item>
     </string-array>
+    <string name="title_activity_login">CareLink login</string>
+
+    <!-- Strings related to login -->
+    <string name="prompt_username">CareLink Username</string>
+    <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">This password is too short</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>
 </resources>
diff --git a/build/intermediates/dex-cache/cache.xml b/build/intermediates/dex-cache/cache.xml
index 891c5809e19a40a6e2c6fbc69674aa8c419882c3..fba8db89fe63019a522cb871f7d4ffd430d79e79 100644
--- a/build/intermediates/dex-cache/cache.xml
+++ b/build/intermediates/dex-cache/cache.xml
@@ -1,47 +1,2 @@
 <?xml version="1.0" encoding="utf-8"?>
-<items version="2" >
-
-    <item
-        jar="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/libs/physicaloidlibrary.jar"
-        jumboMode="true"
-        revision="23.0.1"
-        sha1="391534fe92fec965996d9aaf3a328b5f0c2b0740">
-        <dex dex="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/transforms/dex/debug/folders/1000/2/physicaloidlibrary_9ccb0a9459a35113b137cb56f3f46bde93a6197b/classes.dex" />
-    </item>
-    <item
-        jar="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/libs/logback-android-1.1.1-3.jar"
-        jumboMode="true"
-        revision="23.0.1"
-        sha1="9df53e0d7c6a4d8b31979a012722d48a275e5d28">
-        <dex dex="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/transforms/dex/debug/folders/1000/2/logback-android-1.1.1-3_26faaac8eb6179a49c85c550f2570a85dcf9ec77/classes.dex" />
-    </item>
-    <item
-        jar="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/incremental-runtime-classes/debug/instant-run.jar"
-        jumboMode="true"
-        revision="23.0.1"
-        sha1="8a0b448c242e45651aa3eff4da2565f5d2472c67">
-        <dex dex="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/transforms/dex/debug/folders/1000/10/instant-run_ab0e4833222d2576fa652ea70850f6721d7c4c56/classes.dex" />
-    </item>
-    <item
-        jar="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/libs/mongo-java-driver-3.0.2.jar"
-        jumboMode="true"
-        revision="23.0.1"
-        sha1="7d3880dec6c8a2f07c1f544776c326834b513712">
-        <dex dex="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/transforms/dex/debug/folders/1000/2/mongo-java-driver-3.0.2_cf135c838ae634eaa0bde6ebd7ab91ae93691ade/classes.dex" />
-    </item>
-    <item
-        jar="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/incremental-classes/debug/instant-run-bootstrap.jar"
-        jumboMode="true"
-        revision="23.0.1"
-        sha1="028bcebc4e2ad003732150e4f2c394474c8eff42">
-        <dex dex="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/transforms/dex/debug/folders/1000/10/instant-run-bootstrap_a4562f9a19a66a867fdb86514799366913b783f6/classes.dex" />
-    </item>
-    <item
-        jar="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/libs/slf4j-api-1.7.2.jar"
-        jumboMode="true"
-        revision="23.0.1"
-        sha1="0081d61b7f33ebeab314e07de0cc596f8e858d97">
-        <dex dex="/Users/lgoedhart/StudioProjects/MedtronicUploader/app/build/intermediates/transforms/dex/debug/folders/1000/2/slf4j-api-1.7.2_aba40428135bcd9ffb23cf7b91dad2955f2763e7/classes.dex" />
-    </item>
-
-</items>
+<items version="2" />