diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java
index 6a5bcda8741c260bf6d72d283b34dae227c0c1d9..3902beb03e6e87cdb322871d28fddb1ab80f3a85 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java
@@ -11,7 +11,7 @@ import info.nightscout.android.medtronic.exception.EncryptionException;
 /**
  * Created by lgoedhart on 26/03/2016.
  */
-public class BeginEHSMMessage extends MedtronicSendMessageRequestMessage<ContourNextLinkResponseMessage> {
+public class BeginEHSMMessage extends EHSMMessage {
     public BeginEHSMMessage(MedtronicCnlSession pumpSession) throws EncryptionException, ChecksumException {
         super(SendMessageType.BEGIN_EHSM_SESSION, pumpSession, buildPayload());
     }
@@ -20,12 +20,4 @@ public class BeginEHSMMessage extends MedtronicSendMessageRequestMessage<Contour
         // Not sure what the payload of a null byte means, but it's the same every time.
         return new byte[] { 0x00 };
     }
-
-    public ContourNextLinkResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException {
-        sendMessage(mDevice);
-
-        // The Begin EHSM Session only has an 0x81 response
-        readMessage(mDevice);
-        return null;
-    }
 }
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java
index 590f4004323e265e7ac0652b351ebd9e0a052bf7..782c174530bf759ddfb5400a7fdb34a5449189bb 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java
@@ -19,22 +19,21 @@ public abstract class ContourNextLinkRequestMessage<T> extends ContourNextLinkMe
     }
 
     public T send(UsbHidDriver mDevice) throws IOException, TimeoutException, EncryptionException, ChecksumException, UnexpectedMessageException {
-        sendMessage(mDevice);
-
-        T response = this.getResponse(readMessage(mDevice)); //new ContourNextLinkCommandResponse();
-
-        // FIXME - We need to care what the response message is - wrong MAC and all that
-        return response;
+        return send(mDevice, 0);
     }
 
     public T send(UsbHidDriver mDevice, int millis) throws UnexpectedMessageException, EncryptionException, TimeoutException, ChecksumException, IOException {
-        T response = send(mDevice);
-
-        try {
-            Thread.sleep(millis);
-        } catch (InterruptedException e) {
+        sendMessage(mDevice);
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
         }
 
+        T response = this.getResponse(readMessage(mDevice)); //new ContourNextLinkCommandResponse();
+
+        // FIXME - We need to care what the response message is - wrong MAC and all that
         return response;
     }
 
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java
index 88ee5235f0c3c73ff87bab825e6159999d10b66a..5c2f7d6fc3afa408897a3f69cefa4e11e13e97d4 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java
@@ -18,10 +18,22 @@ public class DeviceInfoRequestCommandMessage extends ContourNextLinkRequestMessa
     }
 
     @Override
-    public DeviceInfoResponseCommandMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, EncryptionException, ChecksumException, UnexpectedMessageException {
+    public DeviceInfoResponseCommandMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException, EncryptionException, ChecksumException, UnexpectedMessageException {
         sendMessage(mDevice);
 
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
+        }
         byte[] response1 = readMessage(mDevice);
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
+        }
         byte[] response2 = readMessage(mDevice);
 
         boolean doRetry = false;
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/EHSMMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/EHSMMessage.java
new file mode 100644
index 0000000000000000000000000000000000000000..1242361bdeb0a44c08ec7507912904926e4a45a6
--- /dev/null
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/EHSMMessage.java
@@ -0,0 +1,33 @@
+package info.nightscout.android.medtronic.message;
+
+import java.io.IOException;
+import java.util.concurrent.TimeoutException;
+
+import info.nightscout.android.USB.UsbHidDriver;
+import info.nightscout.android.medtronic.MedtronicCnlSession;
+import info.nightscout.android.medtronic.exception.ChecksumException;
+import info.nightscout.android.medtronic.exception.EncryptionException;
+
+/**
+ * Created by volker on 22.12.2016.
+ */
+
+public class EHSMMessage extends  MedtronicSendMessageRequestMessage<ContourNextLinkResponseMessage>{
+    protected EHSMMessage(SendMessageType sendMessageType, MedtronicCnlSession pumpSession, byte[] payload) throws EncryptionException, ChecksumException {
+        super(sendMessageType, pumpSession, payload);
+    }
+
+    @Override
+    public ContourNextLinkResponseMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException {
+        sendMessage(mDevice);
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
+        }
+        // The End EHSM Session only has an 0x81 response
+        readMessage(mDevice);
+        return null;
+    }
+}
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java
index f1a1bbdab45cb8250b1a3f3ded625ba31b49d281..5335d4cf3b5b48fef9231bc060f011026f5f1f8c 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java
@@ -12,7 +12,7 @@ import info.nightscout.android.medtronic.exception.UnexpectedMessageException;
 /**
  * Created by lgoedhart on 26/03/2016.
  */
-public class EndEHSMMessage extends MedtronicSendMessageRequestMessage<ContourNextLinkResponseMessage> {
+public class EndEHSMMessage extends EHSMMessage {
     public EndEHSMMessage(MedtronicCnlSession pumpSession) throws EncryptionException, ChecksumException {
         super(SendMessageType.END_EHSM_SESSION, pumpSession, buildPayload());
     }
@@ -22,13 +22,4 @@ public class EndEHSMMessage extends MedtronicSendMessageRequestMessage<ContourNe
         return new byte[] { 0x01 };
     }
 
-    @Override
-    public ContourNextLinkResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException {
-        sendMessage(mDevice);
-
-        // The End EHSM Session only has an 0x81 response
-        readMessage(mDevice);
-        return null;
-    }
-
 }
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java
index 7e9f26e7b1094005f1b47aa558d97df3bab0e4f8..30067b48223b8e1efd4a2dfd2d06f4f091822cc8 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java
@@ -17,12 +17,22 @@ public class PumpStatusRequestMessage extends MedtronicSendMessageRequestMessage
         super(SendMessageType.READ_PUMP_STATUS_REQUEST, pumpSession, null);
     }
 
-    public PumpStatusResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException {
+    public PumpStatusResponseMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException {
         sendMessage(mDevice);
-
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
+        }
         // Read the 0x81
         readMessage(mDevice);
-
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
+        }
         PumpStatusResponseMessage response = this.getResponse(readMessage(mDevice));
 
         return response;
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java
index 72ba8bee4d0eed507b46ba15055ceee965d0a0f3..24cbb144d87a530c034e5666127346298e3fcf70 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java
@@ -18,12 +18,22 @@ public class PumpTimeRequestMessage extends MedtronicSendMessageRequestMessage<P
     }
 
     @Override
-    public PumpTimeResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException {
+    public PumpTimeResponseMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException {
         sendMessage(mDevice);
-
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
+        }
         // Read the 0x81
         readMessage(mDevice);
-
+        if (millis > 0) {
+            try {
+                Thread.sleep(millis);
+            } catch (InterruptedException e) {
+            }
+        }
         // Read the 0x80
         PumpTimeResponseMessage response = this.getResponse(readMessage(mDevice));