diff --git a/adaptor-xmpp.js b/adaptor-xmpp.js
index 4b3b3ee..e5d1059 100644
--- a/adaptor-xmpp.js
+++ b/adaptor-xmpp.js
@@ -30,22 +30,7 @@ function onPM(sender, msg) {
         callbacks.onPM(sender, msg);
     }
 
-    if (!matrix) {
-        return;
-    }
-
-    if (!matrix.buddies) {
-        matrix.buddies = {};
-    }
-
-    if (!matrix.buddies[sender]) {
-        matrix.buddies[sender] = {};
-    }
-
-    matrix.buddies[sender].lastIncoming = {
-        msg: msg,
-        lastUpdate: moment().format('YYYY-MM-DD HH:mm:ss')
-    }
+    matrixUtil.updateLastIncoming(sender, msg);
 }
 
 function onError(err) {
@@ -65,35 +50,12 @@ function onBuddy(jid, state, statusText, resource) {
     matrixUtil.updateBuddyState(jid, state, statusText, resource);
 }
 
-function _isPartnerOffline(partner) {
-    if (!matrix) { return false; }
-
-    if (!isAFriend(partner)) {
-        logger.verbose(partner + ' is not a friend yet, adding it as a friend')
-        addFriend(partner);
-    }
-
-    if (!matrix.buddies[partner]) { return false; }
-    if (!matrix.buddies[partner].resources) { return false; };
-
-    var resources = matrix.buddies[partner].resources;
-    for (var key in resources) {
-        if (resources.hasOwnProperty(key)) {
-            var resource = resources[key];
-            if (resources[key].state == 'online') {
-                return false;
-            }
-        }
-    }
-    logger.verbose('Offline partner detected: ' + partner);
-    return true;
-}
-
 function isPartnerOffline(partner) {
     if (!matrixUtil.isAFriend(partner)) {
+        logger.verbose(partner + ' is not a friend yet, adding it as a friend')
         addFriend(partner);
     }
-    
+
     return matrixUtil.isPartnerOffline(partner);
 }
 
@@ -143,22 +105,7 @@ function sendMessage(destination, msg) {
 
     xmpp.send(destination, msg);
 
-    if (!matrix) {
-        return;
-    }
-
-    if (!matrix.buddies) {
-        matrix.buddies = {};
-    }
-
-    if (!matrix.buddies[destination]) {
-        matrix.buddies[destination] = {};
-    }
-
-    matrix.buddies[destination].lastOutgoing = {
-        msg: msg,
-        lastUpdate: moment().format('YYYY-MM-DD HH:mm:ss')
-    }
+    matrixUtil.updateLastOutgoing(destination, msg);
 }
 
 function addFriend(friend) {
diff --git a/matrix-util.js b/matrix-util.js
index d87c3a8..8074e18 100644
--- a/matrix-util.js
+++ b/matrix-util.js
@@ -86,3 +86,43 @@ MatrixUtil.prototype.isPartnerOffline = function(partner) {
     logger.verbose('Offline partner detected: ' + partner);
     return true;
 }
+
+MatrixUtil.prototype.updateLastIncoming(sender, msg) {
+    var matrix = this.matrix;
+
+    if (!matrix) {
+        return;
+    }
+
+    if (!matrix.buddies) {
+        matrix.buddies = {};
+    }
+
+    if (!matrix.buddies[sender]) {
+        matrix.buddies[sender] = {};
+    }
+
+    matrix.buddies[sender].lastIncoming = {
+        msg: msg,
+        lastUpdate: moment().format('YYYY-MM-DD HH:mm:ss')
+    }
+}
+
+MatrixUtil.prototype.updateLastOutgoing(destination, msg) {
+    if (!matrix) {
+        return;
+    }
+
+    if (!matrix.buddies) {
+        matrix.buddies = {};
+    }
+
+    if (!matrix.buddies[destination]) {
+        matrix.buddies[destination] = {};
+    }
+
+    matrix.buddies[destination].lastOutgoing = {
+        msg: msg,
+        lastUpdate: moment().format('YYYY-MM-DD HH:mm:ss')
+    }
+}