diff --git a/database/backends/PostgresSmartBackend.php b/database/backends/PostgresSmartBackend.php
index 852ad5651cc0157b7dbd0469b9c2415b749e0c95..0c32d2c18ae5cb788675834ea7511ed5692898a3 100644
--- a/database/backends/PostgresSmartBackend.php
+++ b/database/backends/PostgresSmartBackend.php
@@ -33,8 +33,7 @@ class PostgresSmartBackend implements Backend
               tmp.messageid,
               sender.sender,
               tmp.time,
-              replace(replace(tmp.message, '<', '&lt;'), '>', '&gt;') AS message,
-              ts_headline(replace(replace(tmp.message, '<', '&lt;'), '>', '&gt;'), query) AS preview
+              ts_headline(replace(replace(tmp.message, '<', '&lt;'), '>', '&gt;'), query, 'HighlightAll=TRUE') AS message
             FROM
               (SELECT
                  backlog.messageid,
@@ -44,7 +43,16 @@ class PostgresSmartBackend implements Backend
                  backlog.senderid,
                  backlog.time,
                  backlog.message,
-                 query,
+                 (
+                   (ts_rank(tsv, query, :config_normalization) ^ :weight_content) *
+                   ((CASE
+                     WHEN type IN (1, 4) THEN 1.0
+                     WHEN type IN (2, 1024, 2048, 4096, 16384) THEN 0.75
+                     WHEN type IN (32, 64, 128, 256, 512, 32768, 65536) THEN 0.5
+                     WHEN type IN (8, 16, 8192, 131072) THEN 0.25
+                     ELSE 0.1 END) ^ :weight_type) *
+                   ((EXTRACT(EPOCH FROM time) / EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)) ^ :weight_time)
+                 ) AS rank_value,
                  rank() OVER (
                    PARTITION BY backlog.bufferid
                    ORDER BY (
@@ -57,7 +65,8 @@ class PostgresSmartBackend implements Backend
                        ELSE 0.1 END) ^ :weight_type) *
                      ((EXTRACT(EPOCH FROM time) / EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)) ^ :weight_time)
                    ) DESC
-                 ) AS rank
+                 ) AS rank,
+                 query
                FROM backlog
                JOIN buffer ON backlog.bufferid = buffer.bufferid,
                  phraseto_tsquery_multilang(:query) query
@@ -71,7 +80,8 @@ class PostgresSmartBackend implements Backend
               JOIN network ON tmp.networkid = network.networkid
             WHERE tmp.rank <= :limit
               AND (:ignore_network::BOOLEAN OR network.networkname ~* :network)
-              AND (:ignore_sender::BOOLEAN OR sender.sender ~* :sender);
+              AND (:ignore_sender::BOOLEAN OR sender.sender ~* :sender)
+            ORDER BY tmp.rank_value DESC;
         ");
     }
 
@@ -105,8 +115,7 @@ class PostgresSmartBackend implements Backend
               tmp.messageid,
               sender.sender,
               tmp.time,
-              replace(replace(tmp.message, '<', '&lt;'), '>', '&gt;') AS message,
-              ts_headline(replace(replace(tmp.message, '<', '&lt;'), '>', '&gt;'), query) AS preview
+              ts_headline(replace(replace(tmp.message, '<', '&lt;'), '>', '&gt;'), query, 'HighlightAll=TRUE') AS message
             FROM
               (SELECT
                  backlog.messageid,
@@ -114,6 +123,16 @@ class PostgresSmartBackend implements Backend
                  backlog.senderid,
                  backlog.time,
                  backlog.message,
+                 (
+                   (ts_rank(tsv, query, :config_normalization) ^ :weight_content) *
+                   ((CASE
+                     WHEN type IN (1, 4) THEN 1.0
+                     WHEN type IN (2, 1024, 2048, 4096, 16384) THEN 0.75
+                     WHEN type IN (32, 64, 128, 256, 512, 32768, 65536) THEN 0.5
+                     WHEN type IN (8, 16, 8192, 131072) THEN 0.25
+                     ELSE 0.1 END) ^ :weight_type) *
+                   ((EXTRACT(EPOCH FROM time) / EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)) ^ :weight_time)
+                 ) AS rank_value,
                  query
                FROM backlog
                JOIN buffer ON backlog.bufferid = buffer.bufferid,
@@ -123,19 +142,10 @@ class PostgresSmartBackend implements Backend
                  AND (:ignore_since::BOOLEAN OR backlog.time > :since::TIMESTAMP)
                  AND (:ignore_before::BOOLEAN OR backlog.time < :before::TIMESTAMP)
                  AND backlog.tsv @@ query AND backlog.type & 23559 > 0
-               ORDER BY (
-                 (ts_rank(tsv, query, :config_normalization) ^ :weight_content) *
-                 ((CASE
-                   WHEN type IN (1, 4) THEN 1.0
-                   WHEN type IN (2, 1024, 2048, 4096, 16384) THEN 0.75
-                   WHEN type IN (32, 64, 128, 256, 512, 32768, 65536) THEN 0.5
-                   WHEN type IN (8, 16, 8192, 131072) THEN 0.25
-                   ELSE 0.1 END) ^ :weight_type) *
-                 ((EXTRACT(EPOCH FROM time) / EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)) ^ :weight_time)
-               ) DESC
               ) tmp
-              JOIN sender ON tmp.senderid = sender.senderid
-              WHERE (:ignore_sender::BOOLEAN OR sender.sender ~* :sender)
+            JOIN sender ON tmp.senderid = sender.senderid
+            WHERE (:ignore_sender::BOOLEAN OR sender.sender ~* :sender)
+            ORDER BY tmp.rank_value DESC
             LIMIT :limit
             OFFSET :offset;
         ");
diff --git a/res/css/_content.sass b/res/css/_content.sass
index ef301e5f4ddb644ad09aa0f33edefbe831119747..c130017f8f6cdeed9b9bf925adad5fa8d4cdc2a3 100644
--- a/res/css/_content.sass
+++ b/res/css/_content.sass
@@ -216,10 +216,13 @@
             border-bottom: none
 
           time
-            width: 132px
+            width: 128px
             display: inline-block
             text-align: right
             flex-shrink: 0
+            font-family: monospace
+            font-size: 90%
+            color: #444
 
             @media(max-width: 800px)
               position: absolute
@@ -255,21 +258,16 @@
                   content: ': '
                   margin-right: 8px
 
-            .preview
-              flex: 50%
-              min-width: 0
-              overflow: hidden
-
               @media(max-width: 800px)
                 display: none
 
-              .irc_highlight
-                background-color: rgba(251, 246, 167, 0.5)
-
             .content
-              flex: 50%
-              min-width: 0
+              flex-grow: 1
               overflow: hidden
 
+              .irc_highlight
+                background-color: rgba(251, 246, 167, 0.5)
+                color: #212121 !important
+
               @media(max-width: 800px)
                 display: inline
\ No newline at end of file
diff --git a/res/css/search.css b/res/css/search.css
index cd780afda6a6364d6445c999e6ad5c1276eb6eef..8cac96c5d17dac181e1d0b967586fe81d03f4e3c 100644
--- a/res/css/search.css
+++ b/res/css/search.css
@@ -4,7 +4,6 @@
     font-weight: 400;
     src: local("Material Icons"), local("MaterialIcons-Regular"), url(../icons/MaterialIcons-Regular.woff2) format("woff2"), url(../icons/MaterialIcons-Regular.woff) format("woff");
 }
-
 .icon {
     font-family: "Material Icons", sans-serif;
     font-weight: normal;
@@ -35,7 +34,6 @@
     font-weight: 400;
     src: local("Roboto"), local("Roboto-Regular"), url("../fonts/roboto-v15-latin-ext_cyrillic_greek-ext_cyrillic-ext_latin_greek_vietnamese-regular.woff2") format("woff2"), url("../fonts/roboto-v15-latin-ext_cyrillic_greek-ext_cyrillic-ext_latin_greek_vietnamese-regular.woff") format("woff");
 }
-
 @font-face {
     font-family: "Roboto";
     font-style: normal;
@@ -748,10 +746,13 @@ body {
 }
 
 .results .buffer .container .context .message time {
-    width: 132px;
+    width: 128px;
     display: inline-block;
     text-align: right;
     flex-shrink: 0;
+    font-family: monospace;
+    font-size: 90%;
+    color: #444;
 }
 
 @media (max-width: 800px) {
@@ -801,28 +802,22 @@ body {
     }
 }
 
-.results .buffer .container .context .message .container .preview {
-    flex: 50%;
-    min-width: 0;
-    overflow: hidden;
-}
-
 @media (max-width: 800px) {
-    .results .buffer .container .context .message .container .preview {
+    .results .buffer .container .context .message .container .sender {
         display: none;
     }
 }
 
-.results .buffer .container .context .message .container .preview .irc_highlight {
-    background-color: rgba(251, 246, 167, 0.5);
-}
-
 .results .buffer .container .context .message .container .content {
-    flex: 50%;
-    min-width: 0;
+    flex-grow: 1;
     overflow: hidden;
 }
 
+.results .buffer .container .context .message .container .content .irc_highlight {
+    background-color: rgba(251, 246, 167, 0.5);
+    color: #212121 !important;
+}
+
 @media (max-width: 800px) {
     .results .buffer .container .context .message .container .content {
         display: inline;
diff --git a/res/css/search.css.map b/res/css/search.css.map
index fa4d8241954d18f081f06e64abe75308601757d1..9e7f155441f818130c5d83cc478226abf172fe5e 100644
--- a/res/css/search.css.map
+++ b/res/css/search.css.map
@@ -1,6 +1,6 @@
 {
   "version": 3,
-  "mappings": ";EACE,WAAW,EAAE,gBAAgB;EAC7B,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,2KAA2K;AAElL,KAAK;EACH,WAAW,EAAE,4BAA4B;EACzC,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,MAAM;EACtB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,MAAM;EACnB,SAAS,EAAE,GAAG;;EAGd,sBAAsB,EAAE,WAAW;;EAEnC,cAAc,EAAE,kBAAkB;;EAGlC,uBAAuB,EAAE,SAAS;;EAGlC,qBAAqB,EAAE,MAAM;;;EC7B7B,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,4RAA4R;;EAGjS,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,sRAAsR;ACN7R,CAAC;EACC,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,UAAU;EACtB,2BAA2B,EAAE,WAAgB;;AAE/C,IAAI;EACF,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,MAAM;;AAEnB,OAAO;EACL,OAAO,EAAE,IAAI;;AACf,kBAAkB;EAChB,MAAM,EAAE,CAAC;;AAEX,QAAQ;EACN,UAAU,EAAE,iBAAiB;EAC7B,OAAO,EAAE,eAAe;;ACpB1B,IAAI;EACF,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,CAAC;EAEV,SAAI;IACF,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,4EAA0E;IACtF,UAAU,EAAE,sBAAqB;IACjC,WAAW,EAAE,gBAAgB;IAE7B,oBAAU;MACR,SAAS,EAAE,MAAM;MACjB,MAAM,EAAE,MAAM;MACd,OAAO,EAAE,MAAM;MACf,OAAO,EAAE,IAAI;;EAJf,oBAAU;IAON,OAAO,EAAE,SAAS;MAEpB,+BAAU;QACR,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,OAAO;QACnB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,OAAO;QACd,cAAc,EAAE,GAAG;QACnB,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,6BAA4B;QACxC,UAAU,EAAE,sBAAqB;QAEjC,qCAAO;UACL,gBAAgB,EAAE,wBAAuB;QAE3C,qCAAK;UACH,OAAO,EAAE,YAAY;UACrB,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,QAAQ,EAAE,QAAQ;UAClB,UAAU,EAAE,MAAM;UAClB,WAAW,EAAE,IAAI;UACjB,IAAI,EAAE,CAAC;UACP,GAAG,EAAE,CAAC;QAER,uCAAO;UACL,OAAO,EAAE,YAAY;UACrB,SAAS,EAAE,CAAC;UACZ,WAAW,EAAE,CAAC;UACd,UAAU,EAAE,IAAI;UAChB,MAAM,EAAE,IAAI;UACZ,WAAW,EAAE,IAAI;UACjB,KAAK,EAAE,OAAO;UACd,SAAS,EAAE,IAAI;UACf,YAAY,EAAE,GAAG;UACjB,kBAAkB,EAAE,SAAS;UAC7B,kBAAkB,EAAE,WAAW;UAE/B,yDAAmB;YACjB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CAAC;YACV,uBAAuB,EAAE,SAAS;UAEpC,kEAA4B;YAC1B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CAAC;YACV,sBAAsB,EAAE,WAAW;UAErC,yIAA6D;YAC3D,OAAO,EAAE,IAAI;MAEnB,6BAAQ;QACN,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,QAAQ;IAE7B,WAAC;MACC,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,QAAQ;MAClB,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,OAAO;MACf,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,SAAQ;MACpB,eAAe,EAAE,IAAI;MACrB,UAAU,EAAE,MAAM;MChGpB,mBAAkB,EAAE,IAAS;MAA7B,gBAAkB,EAAE,IAAS;MAA7B,eAAkB,EAAE,IAAS;MAA7B,cAAkB,EAAE,IAAS;MAA7B,WAAkB,EAAE,IAAS;MDmG3B,kBAAQ;QACN,gBAAgB,EAAE,yBAAwB;QAC1C,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,GAAG;QACV,GAAG,EAAE,GAAG;QACR,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,aAAa;MAE3B,wBAAc;QACZ,OAAO,EAAE,CAAC;EAEhB,aAAQ;IACN,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,QAAQ;;EAPpB,aAAQ;IAUJ,OAAO,EAAE,CAAC;IAEZ,gBAAE;MACA,eAAe,EAAE,IAAI;MACrB,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,IAAI;MAChB,UAAU,EAAE,4EAA0E;MAEtF,mBAAE;QACA,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,WAAW,EAAE,MAAM;QAEnB,+EAAyB;UACvB,UAAU,EAAE,mBAAmB;QAEjC,yBAAK;UACH,aAAa,EAAE,IAAI;UACnB,MAAM,EAAE,IAAI;UACZ,YAAY,EAAE,IAAI;UAClB,cAAc,EAAE,MAAM;UACtB,KAAK,EAAE,IAAI;UACX,OAAO,EAAE,YAAY;UACrB,eAAe,EAAE,KAAK;UACtB,OAAO,EAAE,GAAG;MAEhB,kBAAC;QACC,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,OAAO;EAGlB,eAAI;IACF,UAAU,EAAE,OAAO;IAIjB,qCAAU;MACR,UAAU,EAAE,OAAO;MAEnB,6CAAO;QACL,KAAK,EAAE,OAAO;QAEd,+DAAmB;UACjB,KAAK,EAAE,OAAO;QAEhB,wEAA4B;UAC1B,KAAK,EAAE,OAAO;IAEpB,gCAAK;MACH,KAAK,EAAE,OAAO;EAEpB,mBAAQ;IACN,SAAS,EAAE,aAAa;EAE1B,qBAAU;IACR,OAAO,EAAE,CAAC;;AElMhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AC9ChB,SAAS;EACP,WAAW,EAAE,IAAI;;AACnB,WAAW;EACT,UAAU,EAAE,MAAM;;AACpB,cAAc;EACZ,eAAe,EAAE,SAAS;;AAE5B,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAChB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAChB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAChB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAChB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAChB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAChB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAC3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAC3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAC3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAC3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAC3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAC3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;ACnE3B,QAAQ;EACN,SAAS,EAAE,MAAM;EACjB,OAAO,EAAE,mBAAmB;EAC5B,MAAM,EAAE,MAAM;EAEd,UAAU,EAAE,aAAa;;EAL3B,QAAQ;IAQJ,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;EAEnB,gBAAO;IACL,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAElB,uBAAM;MACJ,aAAa,EAAE,qBAAqB;MACpC,UAAU,EAAE,qBAAqB;MACjC,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,kBAAkB;MAC3B,QAAQ,EAAE,MAAM;MAChB,GAAG,EAAE,IAAI;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,SAAS;MACrB,OAAO,EAAE,IAAI;MAEb,8BAAQ;QACN,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE,CAAC;QACN,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,OAAO;QACzB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,EAAE;;EATb,8BAAQ;IAYJ,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;MAEZ,6BAAO;QACL,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,WAAW;QAC7B,UAAU,EAAE,6DAA6D;QACzE,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,EAAE;MAEb,0BAAE;QACA,IAAI,EAAE,CAAC;QACP,WAAW,EAAE,IAAI;MAEnB,8BAAM;QACJ,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,OAAO;QACd,cAAc,EAAE,SAAS;QACzB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,YAAY;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,MAAM;QACtB,YAAY,EAAE,YAAY;QAC1B,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE,UAAU;QAEvB,oCAAO;UACL,gBAAgB,EAAE,mBAAgB;QAEpC,oCAAO;UACL,OAAO,EAAE,EAAE;UACX,OAAO,EAAE,KAAK;UACd,QAAQ,EAAE,QAAQ;UAClB,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,GAAG,EAAE,CAAC;UACN,IAAI,EAAE,CAAC;UACP,UAAU,EAAE,sEAAsE;UAClF,eAAe,EAAE,WAAW;UAC5B,OAAO,EAAE,CAAC;UACV,cAAc,EAAE,IAAI;UACpB,UAAU,EAAE,2BAA0B;QAGtC,2CAAO;UACL,eAAe,EAAE,GAAG;UACpB,OAAO,EAAE,GAAE;UACX,UAAU,EAAE,EAAE;QAElB,oCAAK;UACH,OAAO,EAAE,OAAO;QAClB,qCAAM;UACJ,OAAO,EAAE,IAAI;IAEnB,uCAAwB;MACtB,OAAO,EAAE,IAAI;IAGf,uBAAQ;MACN,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,IAAI,EAAE,CAAC;MACP,KAAK,EAAE,CAAC;MACR,GAAG,EAAE,CAAC;MACN,MAAM,EAAE,CAAC;MACT,gBAAgB,EAAE,WAAW;MAC7B,UAAU,EAAE,kFAAkF;MAC9F,WAAW,EAAE,0DAA0D;MACvE,QAAQ,EAAE,QAAQ;MAClB,OAAO,EAAE,EAAE;IAGX,6BAAQ;MACN,aAAa,EAAE,KAAK;MACpB,gBAAgB,EAAE,IAAI;;EAFxB,6BAAQ;IAKJ,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IAGrB,mCAAO;MACL,gBAAgB,EAAE,IAAI;;EADxB,mCAAO;IAIH,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IAGrB,0CAAK;MACH,OAAO,EAAE,IAAI;IACf,2CAAM;MACJ,OAAO,EAAE,OAAO;IAGpB,kDAAgB;MACd,MAAM,EAAE,IAAI;IAElB,2BAAU;MACR,SAAS,EAAE,IAAI;MAEf,4CAAgB;QACd,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,OAAkB;QACzB,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE,OAAO;QH9KnB,mBAAkB,EAAE,IAAS;QAA7B,gBAAkB,EAAE,IAAS;QAA7B,eAAkB,EAAE,IAAS;QAA7B,cAAkB,EAAE,IAAS;QAA7B,WAAkB,EAAE,IAAS;QGgLzB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,4EAA0E;QACtF,UAAU,EAAE,YAAY;MAQtB,qHAAmB;QACjB,OAAO,EAAE,IAAI;MAEf,iEAAgB;QACd,OAAO,EAAE,IAAI;MAEjB,6CAAQ;QACN,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,SAAS;QAClB,aAAa,EAAE,iBAAiB;QAChC,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,QAAQ;QAElB,oDAAQ;UACN,MAAM,EAAE,CAAC;UACT,UAAU,EAAE,4EAA0E;UACtF,OAAO,EAAE,EAAE;UACX,OAAO,EAAE,KAAK;UACd,IAAI,EAAE,CAAC;UACP,cAAc,EAAE,IAAI;UACpB,QAAQ,EAAE,QAAQ;UAClB,KAAK,EAAE,CAAC;UACR,GAAG,EAAE,CAAC;QAER,wDAAY;UACV,aAAa,EAAE,IAAI;QAErB,kDAAI;UACF,KAAK,EAAE,KAAK;UACZ,OAAO,EAAE,YAAY;UACrB,UAAU,EAAE,KAAK;UACjB,WAAW,EAAE,CAAC;;EAJhB,kDAAI;IAOA,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,IAAI;QAEf,wDAAU;UACR,OAAO,EAAE,IAAI;UACb,SAAS,EAAE,CAAC;UACZ,WAAW,EAAE,CAAC;UACd,QAAQ,EAAE,MAAM;;EAJlB,wDAAU;IAON,OAAO,EAAE,KAAK;IACd,cAAc,EAAE,IAAI;UAEtB,gEAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,CAAC;;EALhB,gEAAO;IAQH,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,CAAC;;EAEZ,sEAAO;IAEH,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,GAAG;UAEvB,iEAAQ;YACN,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,MAAM;;EAHlB,iEAAQ;IAMJ,OAAO,EAAE,IAAI;YAEf,gFAAc;cACZ,gBAAgB,EAAE,wBAAwB;UAE9C,iEAAQ;YACN,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,MAAM;;EAHlB,iEAAQ;IAMJ,OAAO,EAAE,MAAM",
+  "mappings": "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",
   "sources": [
     "_icons.sass",
     "_font.sass",
diff --git a/res/js/app.js b/res/js/app.js
index 177828ed1e8dde8044c1a227fe8036f3c983ff2c..496edfe387c1603737d05170f07d2de7848fd265 100644
--- a/res/js/app.js
+++ b/res/js/app.js
@@ -44,7 +44,7 @@ class App {
 
             this.buffers = result.map((buffer) => {
                 return new Buffer(buffer.bufferid, buffer.buffername, buffer.networkname, buffer.hasmore, buffer.messages.map((msg) => {
-                    return new Context(new MessagePreview(msg.messageid, msg.time, msg.sender, msg.message, msg.preview));
+                    return new Context(new Message(msg.messageid, msg.time, msg.sender, msg.message));
                 }));
             });
             this.buffers.forEach((buffer) => this.insert(buffer));
diff --git a/res/js/component/context.js b/res/js/component/context.js
index ba81735bf56af879c04c927bdebe511a41f56cca..e4df7b6a01429bb621a4e51609535ee706cd9a2d 100644
--- a/res/js/component/context.js
+++ b/res/js/component/context.js
@@ -1,6 +1,6 @@
 class Context {
-    constructor(preview, beforeList = [], afterList = []) {
-        this.preview = preview;
+    constructor(message, beforeList = [], afterList = []) {
+        this.message = message;
         this.beforeList = beforeList;
         this.afterList = afterList;
         this.render();
@@ -18,7 +18,7 @@ class Context {
                 $$c.appendChildren((this.loadBeforeBtn = new LoadMore(translation.context.load_earlier, this.loadBefore)).elem);
                 return $$c;
             }.call(this));
-            $$a.appendChildren(this.preview.elem);
+            $$a.appendChildren(this.message.elem);
             $$a.appendChildren(this.containerAfter = function () {
                 var $$g = document.createElement('div');
                 $$g.setAttribute('class', 'container after');
diff --git a/res/js/component/context.jsx b/res/js/component/context.jsx
index 3a6b3b9173dae55255497c347086d8d26e6e7cb9..57767e777323f532969385c825cd5e071ea244d6 100644
--- a/res/js/component/context.jsx
+++ b/res/js/component/context.jsx
@@ -1,6 +1,6 @@
 class Context {
-    constructor(preview, beforeList = [], afterList = []) {
-        this.preview = preview;
+    constructor(message, beforeList = [], afterList = []) {
+        this.message = message;
         this.beforeList = beforeList;
         this.afterList = afterList;
 
@@ -18,7 +18,7 @@ class Context {
                         {(this.loadBeforeBtn = new LoadMore(translation.context.load_earlier, this.loadBefore)).elem}
                     </div>
                 )}
-                {this.preview.elem}
+                {this.message.elem}
                 {this.containerAfter = (
                     <div className="container after">
                         {(this.loadAfterBtn = new LoadMore(translation.context.load_later, this.loadAfter)).elem}
diff --git a/res/js/component/history.js b/res/js/component/history.js
index fd147d944bffb4317f219b87753a0e0fb3c2e85b..5e555f2bd6ad7f3df70e997faa2c2252dd336f36 100644
--- a/res/js/component/history.js
+++ b/res/js/component/history.js
@@ -21,7 +21,6 @@ class HistoryView {
             return $$a;
         }.call(this);
     }
-
     insert(items) {
         if (!(items instanceof Array))
             return this.insert([items]);
diff --git a/res/js/component/message.js b/res/js/component/message.js
index 1af906cd79b6ad3afcd5186636e280ef000c80ac..48c9bf5394621682f89b07f169f18f0a803f5374 100644
--- a/res/js/component/message.js
+++ b/res/js/component/message.js
@@ -12,7 +12,7 @@ class Message {
             $$a.setAttribute('class', 'message');
             var $$b = document.createElement('time');
             $$a.appendChild($$b);
-            $$b.appendChildren(new Date(this.time.replace(' ', 'T') + 'Z').toLocaleString());
+            $$b.appendChildren(new Date(this.time.replace(' ', 'T') + 'Z').toUTCString());
             var $$d = document.createElement('div');
             $$d.setAttribute('class', 'container');
             $$a.appendChild($$d);
diff --git a/res/js/component/message.jsx b/res/js/component/message.jsx
index af6cb9466a3b3c93449bf446337c67263154dae2..746572d88618f4f6f33df5a34734f66997cd47d7 100644
--- a/res/js/component/message.jsx
+++ b/res/js/component/message.jsx
@@ -11,7 +11,7 @@ class Message {
     render() {
         return this.elem = (
             <div className="message">
-                <time>{new Date(this.time.replace(" ", "T") + "Z").toLocaleString()}</time>
+                <time>{new Date(this.time.replace(" ", "T") + "Z").toUTCString()}</time>
                 <div className="container">
                     <div className="sender" data-sendercolor={SenderColorHandler.nickToColor(this.getNick())}>
                         {this.getNick()}
diff --git a/res/js/component/messagePreview.js b/res/js/component/messagePreview.js
deleted file mode 100644
index 831760cec3c443f5a363f077a4cc59cccef205c0..0000000000000000000000000000000000000000
--- a/res/js/component/messagePreview.js
+++ /dev/null
@@ -1,45 +0,0 @@
-class MessagePreview {
-    constructor(id, time, sender, content, preview) {
-        this.id = id;
-        this.time = time;
-        this.sender = sender;
-        this.content = content;
-        this.preview = preview;
-        this.render();
-    }
-    render() {
-        return this.elem = function () {
-            var $$a = document.createElement('div');
-            $$a.setAttribute('class', 'message preview');
-            var $$b = document.createElement('time');
-            $$a.appendChild($$b);
-            $$b.appendChildren(new Date(this.time.replace(' ', 'T') + 'Z').toLocaleString());
-            var $$d = document.createElement('div');
-            $$d.setAttribute('class', 'container');
-            $$a.appendChild($$d);
-            var $$e = document.createElement('div');
-            $$e.setAttribute('class', 'sender');
-            $$e.setAttribute('data-sendercolor', SenderColorHandler.nickToColor(this.getNick()));
-            $$d.appendChild($$e);
-            $$e.appendChildren(this.getNick());
-            var $$g = document.createElement('div');
-            $$g.setAttribute('class', 'content');
-            $$d.appendChild($$g);
-            $$g.appendChildren(MircColorHandler.render(this.content));
-            var $$i = document.createElement('div');
-            $$i.setAttribute('class', 'preview');
-            $$d.appendChild($$i);
-            $$i.appendChildren(MircColorHandler.highlight(this.preview));
-            return $$a;
-        }.call(this);
-    }
-    getNick() {
-        return this.sender.split('!')[0];
-    }
-    getIdent() {
-        return this.sender.split('@')[0].split('!')[1];
-    }
-    getHost() {
-        return this.sender.split('@')[1];
-    }
-}
\ No newline at end of file
diff --git a/res/js/component/messagePreview.jsx b/res/js/component/messagePreview.jsx
deleted file mode 100644
index b59d16bc5ed6d22e55c7465c50c8c4a51db81836..0000000000000000000000000000000000000000
--- a/res/js/component/messagePreview.jsx
+++ /dev/null
@@ -1,42 +0,0 @@
-class MessagePreview {
-    constructor(id, time, sender, content, preview) {
-        this.id = id;
-        this.time = time;
-        this.sender = sender;
-        this.content = content;
-        this.preview = preview;
-
-        this.render();
-    }
-
-    render() {
-        return this.elem = (
-            <div className="message preview">
-                <time>{new Date(this.time.replace(" ", "T") + "Z").toLocaleString()}</time>
-                <div className="container">
-                    <div className="sender" data-sendercolor={SenderColorHandler.nickToColor(this.getNick())}>
-                        {this.getNick()}
-                    </div>
-                    <div className="content">
-                        {MircColorHandler.render(this.content)}
-                    </div>
-                    <div className="preview">
-                        {MircColorHandler.highlight(this.preview)}
-                    </div>
-                </div>
-            </div>
-        );
-    }
-
-    getNick() {
-        return this.sender.split("!")[0];
-    }
-
-    getIdent() {
-        return this.sender.split("@")[0].split("!")[1];
-    }
-
-    getHost() {
-        return this.sender.split("@")[1];
-    }
-}
\ No newline at end of file
diff --git a/res/js/util/mirccolorhandler.js b/res/js/util/mirccolorhandler.js
index 2dc8b90120b922656ac86f652f650e3e1ba20c6d..e5970965478e9187f5c28390bb8c48f5f6bcf5ff 100644
--- a/res/js/util/mirccolorhandler.js
+++ b/res/js/util/mirccolorhandler.js
@@ -48,6 +48,8 @@ class MircColorHandler {
                 elem.dataset['irc_foreground'] = state.foreground;
             if (state.background !== null)
                 elem.dataset['irc_background'] = state.background;
+            if (state.highlight)
+                elem.classList.add('irc_highlight');
             return elem;
         };
         let apply = function (lastTag, str, i, normalCount, nodes) {
@@ -65,7 +67,8 @@ class MircColorHandler {
                 italic: false,
                 underline: false,
                 foreground: null,
-                background: null
+                background: null,
+                highlight: false,
             };
             let lastTag = fromState(state);
             let nodes = [];
@@ -126,7 +129,7 @@ class MircColorHandler {
                     case CODE_SWAP: {
                         apply(lastTag, str, i, normalCount, nodes);
                         normalCount = 0;
-                        if (state.foreground != null) {
+                        if (state.foreground !== null) {
                             state.foreground = state.background;
                             state.background = state.foreground;
                             lastTag = fromState(state);
@@ -144,6 +147,28 @@ class MircColorHandler {
                         lastTag = fromState(state);
                     }
                         break;
+                    case '<': {
+                        const start_tag = '<b>';
+                        const end_tag = '</b>';
+                        if (str.substr(i, start_tag.length) === start_tag) {
+                            apply(lastTag, str, i, normalCount, nodes);
+                            normalCount = 0;
+                            state.highlight = true;
+                            lastTag = fromState(state);
+
+                            i += start_tag.length - 1;
+                        } else if (str.substr(i, end_tag.length) === end_tag) {
+                            apply(lastTag, str, i, normalCount, nodes);
+                            normalCount = 0;
+                            state.highlight = false;
+                            lastTag = fromState(state);
+
+                            i += end_tag.length - 1;
+                        } else {
+                            normalCount++;
+                        }
+                    }
+                        break;
                     default: {
                         normalCount++;
                     }
@@ -155,32 +180,4 @@ class MircColorHandler {
         };
         return formatString(text);
     }
-
-    static highlight(text) {
-        let nodes = [];
-        let highlight = false;
-        let patternStart = '<b>';
-        let patternEnd = '</b>';
-        let pattern = patternStart;
-        let groupStart = 0;
-        let addFragment = function () {
-            const groupEnd = index === -1 ? text.length : index;
-            if (groupStart == groupEnd)
-                return;
-
-            const span = document.createElement('span');
-            if (highlight) span.classList.add("irc_highlight");
-            span.appendChildren(text.substr(groupStart, groupEnd - groupStart));
-            nodes.push(span);
-        };
-        let index = -1;
-        while ((index = text.indexOf(pattern, groupStart)) < text.length && index > 0) {
-            addFragment();
-            groupStart = index + pattern.length;
-            pattern = highlight ? patternStart : patternEnd;
-            highlight = !highlight;
-        }
-        addFragment();
-        return nodes;
-    }
 }
\ No newline at end of file
diff --git a/res/js/util/statehandler.js b/res/js/util/statehandler.js
index b57dadf6b003a733fb601910550c524a139abb28..bc1c3cec04c4eae983622dab620d1447fc9414de 100644
--- a/res/js/util/statehandler.js
+++ b/res/js/util/statehandler.js
@@ -24,7 +24,7 @@ class StateHandler extends Component {
         const oldState = this.state;
         this.state = decodeURIComponent(window.location.hash.substr(1));
 
-        if (this.state !== oldState)
+        if (this.state !== oldState && this.state !== "")
             this.sendEvent("update", [this.state]);
     }
 
diff --git a/templates/search.phtml b/templates/search.phtml
index 6ee22ffd6e6395e80aa936bf0c80cbcd205dddc3..c33f722377d7d7ff347e1d58e3624760abfd00fa 100644
--- a/templates/search.phtml
+++ b/templates/search.phtml
@@ -29,7 +29,6 @@
 <script src="res/js/component/historyelement.js"></script>
 <script src="res/js/component/history.js"></script>
 <script src="res/js/component/nav.js"></script>
-<script src="res/js/component/messagePreview.js"></script>
 <script src="res/js/component/message.js"></script>
 <script src="res/js/component/loadmore.js"></script>
 <script src="res/js/component/context.js"></script>