diff --git a/640gAndroidUploader.iml b/640gAndroidUploader.iml
index 21ad486e1dacdc31dfcf484957078ef9fbc29307..dd11c422309587fbfb2c40dcfbc1c5c64bb0d573 100644
--- a/640gAndroidUploader.iml
+++ b/640gAndroidUploader.iml
@@ -13,7 +13,7 @@
     <content url="file://$MODULE_DIR$">
       <excludeFolder url="file://$MODULE_DIR$/.gradle" />
     </content>
-    <orderEntry type="inheritedJdk" />
+    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
 </module>
\ No newline at end of file
diff --git a/README.md b/README.md
index 1b749f09ecacdb0af5e8e4f2ced8707c9a370492..599ec520263dbf85f894c94c8bc2c130f1d7a9e9 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,27 @@ This is an Android app to upload data from a MiniMed 640G insulin pump to a Nigh
 <a target="blank" href="https://raw.githubusercontent.com/wiki/pazaan/640gAndroidUploader/images/kit-in-case-2.jpg"><img src="https://raw.githubusercontent.com/wiki/pazaan/640gAndroidUploader/images/kit-in-case-2.jpg" width="200"></a>
 <br/><br/>
 
+#### Development - getting started
+
+ - Install [Android Studio](https://developer.android.com/studio/index.html)
+ - Install [Fabric Plugin](https://fabric.io), enable Crashlytics, this should create `app/fabric.properties` with your fabric apiSecret and also add a fabric key to `app/src/AndroidManifest.xml`
+
+   ```
+   <meta-data
+       android:name="io.fabric.ApiKey"
+       android:value="YOUR-FABRIC-KEY" />
+   ```
+
+   (**take care not to commit this change**)
+ - Create a [BugFender](https://app.bugfender.com) account, create `app/bugfender.properties` and populate with
+
+   ```
+   apiKey=YOUR-BUGFENDER-KEY
+   ```
+ - Set up a virtual device in the AVD manager or connect an Android phone with USB debugging enabled.
+
+ - Use one of the run configurations, eg `installDebug`
+ 
 #### App Credits
 * Based on https://github.com/arbox0/MedtronicUploader *(though the internals are completely changed for the 640G)*
 * Uses the [android-service-example](https://code.launchpad.net/~binwiederhier/+junk/android-service-example) by Philipp C. Heckel
diff --git a/app/app.iml b/app/app.iml
index 9b10b9b196304d102867b16a2541fba95c7135e0..e92165a1185da9bbee88d6c8a022313484b6adc4 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -67,14 +67,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/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" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <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" />
       <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" />
@@ -83,6 +75,14 @@
       <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" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <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/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
@@ -154,8 +154,8 @@
     <orderEntry type="library" exported="" name="android-0.4.4" level="project" />
     <orderEntry type="library" exported="" name="MPAndroidChart-v3.0.0-beta1" level="project" />
     <orderEntry type="library" exported="" name="fastadapter-1.5.2" level="project" />
-    <orderEntry type="library" exported="" name="retrofit-2.1.0" level="project" />
     <orderEntry type="library" exported="" name="gson-2.7" level="project" />
+    <orderEntry type="library" exported="" name="retrofit-2.1.0" level="project" />
     <orderEntry type="library" exported="" name="converter-gson-2.1.0" level="project" />
     <orderEntry type="library" exported="" name="beta-1.2.0" level="project" />
     <orderEntry type="library" exported="" name="materialdrawer-5.2.9" level="project" />
diff --git a/app/build.gradle b/app/build.gradle
index 550a9b247295c0cf33df734721a3409285332fd4..fba04a1fb56ac9bda515bfd66bd61d481ffbb444 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -75,7 +75,7 @@ task signRelease << {
             '-digestalg',
             'SHA1',
             '-keystore',
-            '/Users/lgoedhart/keystores/nightscout_android.jks',
+            '/Users/lennart/keystores/nightscout_android.jks',
             'app/build/outputs/apk/app-release-unsigned.apk',
             'nightscoutandroidkey'
     ]
@@ -95,7 +95,7 @@ task signRelease << {
 
 task zipalignRelease << {
     def command = [
-            '/Users/lgoedhart/Library/Android/sdk/build-tools/23.0.3/zipalign',
+            '/Users/lennart/Library/Android/sdk/build-tools/23.0.3/zipalign',
             '-v',
             '4',
             'app/build/outputs/apk/app-release-unsigned.apk',
@@ -117,7 +117,7 @@ task zipalignRelease << {
 
 release {
     tagTemplate = 'v${version}'
-    buildTasks = ['assembleRelease']
+    buildTasks = ['build']
     beforeReleaseBuild.dependsOn 'clean'
     afterReleaseBuild.dependsOn 'signRelease', 'zipalignRelease'
 }
diff --git a/app/src/main/java/info/nightscout/android/UploaderApplication.java b/app/src/main/java/info/nightscout/android/UploaderApplication.java
index a7725deb1d66101509a681dc919faea2282e2f27..aa1944885e68507b24370f9bf2f2b75fe774bda1 100644
--- a/app/src/main/java/info/nightscout/android/UploaderApplication.java
+++ b/app/src/main/java/info/nightscout/android/UploaderApplication.java
@@ -42,7 +42,9 @@ public class UploaderApplication extends Application {
         }
 
         RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this)
+                .deleteRealmIfMigrationNeeded()
                 .build();
+
         Realm.setDefaultConfiguration(realmConfiguration);
     }
 }
diff --git a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
index e52a79bf27eace50a786be92d2ba7a28f4e3ab38..b8b62dd5106c883e7e09b14c33b8d887f94a4707 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
@@ -324,6 +324,10 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
                 initialPoll, MedtronicCnlIntentService.POLL_PERIOD_MS, pending);
     }
 
+    private void uploadCgmData() {
+        startService(mNightscoutUploadService);
+    }
+
     private void stopCgmService() {
         Log.i(TAG, "stopCgmService called");
 
@@ -486,7 +490,7 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
 
             PumpInfo pump = getActivePump();
 
-            if (pump != null & pump.isValid()) {
+            if (pump != null && pump.isValid()) {
                 pumpStatusData = pump.getPumpHistory().last();
             }
 
@@ -597,6 +601,10 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
                 });
             }
 
+            // TODO - handle isOffline in NightscoutUploadIntentService?
+            uploadCgmData();
+
+
             refreshDisplay();
         }
     }
diff --git a/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java b/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java
index ee134cb0fab61eadf800894443fc6afe092cf6ab..b5c067e21475aade67dea92a2f61a74b323453b2 100644
--- a/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java
+++ b/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java
@@ -21,6 +21,7 @@ import org.apache.http.params.HttpParams;
 import org.json.JSONArray;
 import org.json.JSONObject;
 
+import java.math.BigDecimal;
 import java.net.URL;
 import java.security.MessageDigest;
 import java.text.SimpleDateFormat;
@@ -232,10 +233,11 @@ public class NightscoutUploadIntentService extends IntentService {
         JSONObject json = new JSONObject();
         json.put("uploaderBattery", MainActivity.batLevel);
         json.put("device", record.getDeviceName());
+        json.put("created_at", ISO8601_DATE_FORMAT.format(record.getPumpDate()));
 
         JSONObject pumpInfo = new JSONObject();
         pumpInfo.put("clock", ISO8601_DATE_FORMAT.format(record.getPumpDate()));
-        pumpInfo.put("reservoir", record.getReservoirAmount());
+        pumpInfo.put("reservoir", new BigDecimal(record.getReservoirAmount()).setScale(3, BigDecimal.ROUND_HALF_UP));
 
         JSONObject iob = new JSONObject();
         iob.put("timestamp", record.getPumpDate());
diff --git a/build.gradle b/build.gradle
index c08cd482b77a2b4b7463d7023f54a0d5f4adb69f..04964d2ceed4f5f07ac9cb13fce761e51603eaeb 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,11 +1,11 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
+    // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
     repositories {
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.1.0'
+        classpath 'com.android.tools.build:gradle:2.2.2'
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
         classpath "io.realm:realm-gradle-plugin:1.0.0"
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 52e3cb73d4fabf8cfd57d817bcf31c28a211bdf1..3d5435e07e9964062e47fc0426eaa27552a17041 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sun May 01 23:04:04 AEST 2016
+#Sat Nov 12 11:44:13 AEDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip