diff --git a/lib/modem.js b/lib/modem.js
index 3a8d273..f98ad4a 100644
--- a/lib/modem.js
+++ b/lib/modem.js
@@ -56,9 +56,7 @@ async function readSMS(slot) {
     const parser = new ParserDelimiter({ delimiter: DELIMITER_WAIT_FOR_OK });
     parser.on('data', async (data) => {
         if (data) {
-            const smsObject = sms.extract(data.toString().trim());
-            // console.log('SMS', smsObject); // eslint-disable-line no-console
-            reportSender.incomingSMS(smsObject);
+            reportSender.incomingSMS(sms.extract(data.toString().trim()));
         }
         mutex.releaseLockWaitForOK();
     });
diff --git a/lib/report-sender.js b/lib/report-sender.js
index 6be58c8..c56c057 100644
--- a/lib/report-sender.js
+++ b/lib/report-sender.js
@@ -12,9 +12,9 @@ function incomingSMS(message) {
         url: config.report_url.incoming_sms,
         qs: {
             modem: config.name,
-            ts: message.ts,
-            status: message.status,
-            number: message.from,
+            ts: message.metadata.ts,
+            status: message.metadata.status,
+            number: message.metadata.from,
             msg: message.message,
         },
     };
diff --git a/lib/sms.js b/lib/sms.js
index 819cd10..1d0fa93 100644
--- a/lib/sms.js
+++ b/lib/sms.js
@@ -7,22 +7,27 @@ function extract(raw) {
     const lines = raw.trim().split(/[\n\r]+/m);
     if (!lines) return null;
 
-    const metadata = lines[0].split(',').map(el => el.replace(/"/g, '')) || [];
-
-    const tsFromRaw = `${metadata[3]} ${metadata[4].replace(/\+\d+/, '')}`;
-    const ts = moment(tsFromRaw, 'YY/MM/DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss');
-
     const result = {
         metadata: {
-            status: metadata[0].replace(/^.+: /, ''),
-            from: metadata[1].replace(/^\+/, ''),
-            ts,
-            raw: lines[0],
+            status: null,
+            from: null,
+            ts: null,
+            raw: null,
         },
-        message: lines.slice(1).join('\n').trim(),
+        message: null,
         raw,
     };
 
+    const metadata = lines[0].split(',').map(el => el.replace(/"/g, '')) || [];
+
+    [result.metadata.raw] = lines;
+    result.metadata.status = typeof metadata[0] === 'string' ? metadata[0].replace(/^.+: /, '') : '';
+    result.metadata.from = typeof metadata[1] === 'string' ? metadata[1].replace(/^\+/, '') : '';
+
+    const tsFromRaw = `${metadata[3]} ${(metadata[4] || '').replace(/\+\d+/, '')}`;
+    result.metadata.ts = moment(tsFromRaw, 'YY/MM/DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss');
+
+    result.message = lines.slice(1).join('\n').trim();
     return result;
 }