diff --git a/js/user_online_status.js b/js/user_online_status.js
index 17f051b..e080a86 100644
--- a/js/user_online_status.js
+++ b/js/user_online_status.js
@@ -4,49 +4,50 @@
  */
 
 (function (Drupal, drupalSettings) {
-  'use strict';
   Drupal.behaviors.UserOnlineStatus = {
     attach: function (context) {
 
-      // Collect all uid's on page.
+      // Collect all UIDs on page.
       var statusWrapperArray = Array.prototype.slice.call(context.querySelectorAll('.user-online-status'));
-      var uids = [];
+      var uids = {};
       statusWrapperArray.forEach(function (el) {
-        uids.push(el.getAttribute('data-user-online-status-uid'));
+        var uid = el.getAttribute('data-user-online-status-uid');
+        uids[uid] = uid;
       });
+      // Convert to an array.
+      uids = Object.values(uids);
 
+      /**
+       * Print a user's online status.
+       *
+       * @param {string} uid
+       * @param {string} status
+       */
       var printOnlineStatus = function (uid, status) {
-        var statusWrapperElement = {};
-        // Get status wrapper element of current user.
-        statusWrapperArray.some(function (el, i) {
-          if (el.getAttribute('data-user-online-status-uid') === uid) {
-            statusWrapperElement = el;
-            // Remove wrapper from list as it is no longer needed.
-            statusWrapperArray.splice(i, 1);
-            return true;
-          }
-        });
 
-        var responseElement = statusWrapperElement.querySelector('.response');
-        setStatusClasses(statusWrapperElement, status);
+        var statusWrapperElementArray = Array.prototype.slice.call(context.querySelectorAll('.user-online-status[data-user-online-status-uid="' + uid + '"]'));
+        statusWrapperElementArray.forEach(function (el) {
+          var responseElement = el.querySelector('.response');
+          setStatusClasses(el, status);
 
-        // Print status.
-        switch (status) {
-          case 'online':
-            responseElement.innerHTML = Drupal.t('online');
-            break;
+          // Print status.
+          switch (status) {
+            case 'online':
+              responseElement.innerHTML = Drupal.t('online');
+              break;
 
-          case 'absent':
-            responseElement.innerHTML = Drupal.t('absent');
-            break;
+            case 'absent':
+              responseElement.innerHTML = Drupal.t('absent');
+              break;
 
-          case 'offline':
-            responseElement.innerHTML = Drupal.t('offline');
-            break;
+            case 'offline':
+              responseElement.innerHTML = Drupal.t('offline');
+              break;
 
-          default:
-            console.log('user_online_status: Status not found.');
-        }
+            default:
+              console.log('user_online_status: Status not found.');
+          }
+        });
       };
 
       // Fetch status.
@@ -78,6 +79,12 @@
     }
   };
 
+  /**
+   * Set custom status classes.
+   *
+   * @param {object} el
+   * @param {string} currentStatus
+   */
   function setStatusClasses(el, currentStatus) {
     var statusClasses = drupalSettings.user_online_status.classes;
     var statusElement = el.querySelector('.status');
@@ -92,4 +99,5 @@
       statusElement.classList.add(...(statusClasses[currentStatus].split(' ')));
     }
   }
+  
 })(Drupal, drupalSettings);
