diff --git a/database/Database.php b/database/Database.php
index 39fdb1975c51071cde29af41f2b0e71b46cac77b..d6a28c7961acfa12ee34db915f3aee497dee669a 100644
--- a/database/Database.php
+++ b/database/Database.php
@@ -195,11 +195,11 @@ class Database
         $stmt->execute();
         return [
             'results' => $stmt->fetchAll(\PDO::FETCH_ASSOC),
-            'hasmore' => $this->findInBufferCount($query, $since, $before, $bufferid, $offset, $limit)
+            'hasmore' => $this->findInBufferCount($query, $since, $before, $sender, $bufferid, $offset, $limit)
         ];
     }
 
-    public function findInBufferCount(string $query, int $since = null, int $before = null, string $sender = null, int $bufferid, int $offset = 0, int $limit = 4): array
+    public function findInBufferCount(string $query, int $since = null, int $before = null, string $sender = null, int $bufferid, int $offset = 0, int $limit = 4): bool
     {
         $truncatedLimit = max(min($limit, 50), 0);
         $ignore_since = $since === null;
@@ -223,7 +223,7 @@ class Database
         $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
 
         $stmt->execute();
-        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
+        return $stmt->fetchColumn();
     }
 
     public function context(int $anchor, int $buffer, int $loadBefore, int $loadAfter): array
diff --git a/database/backends/PostgresSmartBackend.php b/database/backends/PostgresSmartBackend.php
index 3030dce08ccfbdf52bccfe7588f5226e8f2813da..cd95adc67ccdd3748f1774afea820c65ef7a5ba3 100644
--- a/database/backends/PostgresSmartBackend.php
+++ b/database/backends/PostgresSmartBackend.php
@@ -93,7 +93,7 @@ class PostgresSmartBackend implements Backend
         return $this->db->prepare("
             SELECT
               backlog.bufferid,
-              COUNT(backlog.messageid) > (:limit::INT + :offset::INT) AS hasmore
+              COUNT(*) > (:limit::INT + :offset::INT) AS hasmore
             FROM
               backlog
               JOIN buffer ON backlog.bufferid = buffer.bufferid
@@ -115,9 +115,6 @@ class PostgresSmartBackend implements Backend
     {
         return $this->db->prepare("
             SELECT
-              matching_messages.bufferid,
-              matching_messages.buffername,
-              network.networkname,
               matching_messages.messageid,
               matching_messages.time,
               sender.sender,
@@ -150,14 +147,12 @@ class PostgresSmartBackend implements Backend
                  AND buffer.bufferid = :bufferid
                  AND (:ignore_since::BOOLEAN OR backlog.time > :since::TIMESTAMP)
                  AND (:ignore_before::BOOLEAN OR backlog.time < :before::TIMESTAMP)
-                 AND (:ignore_buffer::BOOLEAN OR buffer.buffername ~* :buffer)
                  AND backlog.type & 23559 > 0
                  AND backlog.tsv @@ query
               ) matching_messages
               JOIN sender ON matching_messages.senderid = sender.senderid
               JOIN network ON matching_messages.networkid = network.networkid
-            WHERE (:ignore_network::BOOLEAN OR network.networkname ~* :network)
-              AND (:ignore_sender::BOOLEAN OR sender.sender ~* :sender)
+            WHERE (:ignore_sender::BOOLEAN OR sender.sender ~* :sender)
             ORDER BY matching_messages.rank_value DESC
             LIMIT :limit
             OFFSET :offset
@@ -168,8 +163,7 @@ class PostgresSmartBackend implements Backend
     {
         return $this->db->prepare("
             SELECT
-              backlog.bufferid,
-              COUNT(backlog.messageid) > (:limit::INT + :offset::INT) AS hasmore
+              COUNT(*) > (:limit::INT + :offset::INT) AS hasmore
             FROM
               backlog
               JOIN buffer ON backlog.bufferid = buffer.bufferid
diff --git a/res/css/_content.sass b/res/css/_content.sass
index c130017f8f6cdeed9b9bf925adad5fa8d4cdc2a3..dd9f971d4d0c60a9e7fe489d0a0795ed7d6415f3 100644
--- a/res/css/_content.sass
+++ b/res/css/_content.sass
@@ -175,16 +175,32 @@
         font-style: italic
         cursor: pointer
         @include vendor-prefix('user-select', 'none')
-        position: sticky
-        bottom: 0
         box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24)
         transition: height 400ms
+        position: relative
 
       .context
+        position: relative
+
         .container
         .before
         .after
 
+        &.active
+          padding: 0
+          margin: 1rem -1rem
+
+        &:before
+          bottom: 0
+          box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24)
+          content: ''
+          display: block
+          left: 0
+          pointer-events: none
+          position: absolute
+          right: 0
+          top: 0
+
         &:not(.focus)
           > .before, > .after
             display: none
@@ -199,18 +215,6 @@
           border-bottom: 1px solid #e5e5e5
           color: #212121
           background: #fff
-          position: relative
-
-          &:before
-            bottom: 0
-            box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24)
-            content: ''
-            display: block
-            left: 0
-            pointer-events: none
-            position: absolute
-            right: 0
-            top: 0
 
           &:last-child
             border-bottom: none
diff --git a/res/css/search.css b/res/css/search.css
index 8cac96c5d17dac181e1d0b967586fe81d03f4e3c..52aaae168425883929f794b84bf8e68b1e9978c5 100644
--- a/res/css/search.css
+++ b/res/css/search.css
@@ -705,10 +705,30 @@ body {
     -ms-user-select: none;
     -o-user-select: none;
     user-select: none;
-    position: sticky;
-    bottom: 0;
     box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24);
     transition: height 400ms;
+    position: relative;
+}
+
+.results .buffer .container .context {
+    position: relative;
+}
+
+.results .buffer .container .context.active {
+    padding: 0;
+    margin: 1rem -1rem;
+}
+
+.results .buffer .container .context:before {
+    bottom: 0;
+    box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24);
+    content: "";
+    display: block;
+    left: 0;
+    pointer-events: none;
+    position: absolute;
+    right: 0;
+    top: 0;
 }
 
 .results .buffer .container .context:not(.focus) > .before, .results .buffer .container .context:not(.focus) > .after {
@@ -726,19 +746,6 @@ body {
     border-bottom: 1px solid #e5e5e5;
     color: #212121;
     background: #fff;
-    position: relative;
-}
-
-.results .buffer .container .context .message:before {
-    bottom: 0;
-    box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24);
-    content: "";
-    display: block;
-    left: 0;
-    pointer-events: none;
-    position: absolute;
-    right: 0;
-    top: 0;
 }
 
 .results .buffer .container .context .message:last-child {
diff --git a/res/css/search.css.map b/res/css/search.css.map
index 9e7f155441f818130c5d83cc478226abf172fe5e..2b948f209f65c05bfbe6ebbd09140529022d95be 100644
--- a/res/css/search.css.map
+++ b/res/css/search.css.map
@@ -1,6 +1,6 @@
 {
   "version": 3,
-  "mappings": "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",
+  "mappings": "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",
   "sources": [
     "_icons.sass",
     "_font.sass",
diff --git a/res/js/app.js b/res/js/app.js
index 9d4a412058648680bdcb232acf219325c94cc386..567c3d6c56beeb979699b2ed772ad53aa2bdde9a 100644
--- a/res/js/app.js
+++ b/res/js/app.js
@@ -38,7 +38,7 @@ class App {
 
         this.loadingQuery++;
         const queryId = this.loadingQuery;
-        load("web/search/", {query: query}).then((result) => {
+        load("web/search/", {query: statehandler.state}).then((result) => {
             if (this.loadingQuery !== queryId)
                 return;
 
@@ -66,6 +66,20 @@ class App {
 
     insert(buffer) {
         this.resultContainer.appendChild(buffer.elem);
+        buffer.addEventListener("loadMore", () => this.bufferLoadMore(buffer))
+    }
+
+    bufferLoadMore(buffer) {
+        if (buffer.loading)
+            return;
+
+        buffer.setLoading(true);
+        const offset = buffer.count();
+        console.log(offset);
+        load("web/searchbuffer/", {query: statehandler.state, buffer: buffer.id, offset: offset}).then((result) => {
+            buffer.load(result);
+            buffer.setLoading(false);
+        });
     }
 }
 
diff --git a/res/js/component/buffer.js b/res/js/component/buffer.js
index 3a8c660d94a97bb5bf8dcb0508c56ddf4c667bcf..74b3c0e07702e607d4aff5bcb2771e87edccecec 100644
--- a/res/js/component/buffer.js
+++ b/res/js/component/buffer.js
@@ -8,9 +8,10 @@ class Buffer extends Component {
         this.render();
         this.contextList.forEach(context => this.insert(context));
         this.loadMoreBtn.setVisible(hasMore);
+        this.loading = false;
     }
     render() {
-        return this.elem = function () {
+        this.elem = function () {
             var $$a = document.createElement('div');
             $$a.setAttribute('class', 'buffer');
             var $$b = document.createElement('div');
@@ -46,20 +47,46 @@ class Buffer extends Component {
                 $$p.setAttribute('class', 'secondary');
                 return $$p;
             }.call(this));
-            $$l.appendChildren((this.loadMoreBtn = new LoadMore(translation.results.show_more, this.loadMore)).elem);
+            $$l.appendChildren((this.loadMoreBtn = new LoadMore(translation.results.show_more)).elem);
             return $$a;
         }.call(this);
+        this.loadMoreBtn.addEventListener('click', () => this.loadMore());
+        return this.elem;
+    }
+
+    count() {
+        return this.contextList.length;
     }
     loadMore() {
+        this.sendEvent('loadMore', []);
     }
     focus(focus) {
         if (focus === undefined)
             focus = !this.elem.classList.contains('focus');
         this.elem.classList.toggle('focus', focus);
         this.sendEvent('focus', focus);
+        if (focus === false) {
+            const bottomVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20 + this.insertContainerFirst.offsetHeight;
+            const fullyVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20;
+            const targetPosition = window.scrollY - this.insertContainer.offsetHeight;
+            window.scrollTo(0, targetPosition > bottomVisible - 56 ? fullyVisible : targetPosition);
+        }
+    }
+
+    load(resultSet) {
+        resultSet.results.map(msg => new Context(new Message(msg.messageid, msg.time, msg.sender, msg.message))).forEach(context => {
+            this.contextList.push(context);
+            this.insert(context);
+        });
+        this.hasMore = resultSet.hasmore;
+        this.loadMoreBtn.setVisible(this.hasMore);
     }
     insert(context) {
         let container = this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer;
         container.appendChild(context.elem);
     }
+
+    setLoading(value) {
+        this.loading = value;
+    }
 }
\ No newline at end of file
diff --git a/res/js/component/buffer.jsx b/res/js/component/buffer.jsx
index 359764ef3144733ce1e7805a2000fdc05e8c8c37..295654ea626c46c5b3f4349537a067f83f69a7ae 100644
--- a/res/js/component/buffer.jsx
+++ b/res/js/component/buffer.jsx
@@ -10,10 +10,12 @@ class Buffer extends Component {
         this.render();
         this.contextList.forEach((context) => this.insert(context));
         this.loadMoreBtn.setVisible(hasMore);
+
+        this.loading = false;
     }
 
     render() {
-        return this.elem = (
+        this.elem = (
             <div className="buffer">
                 <div className="title">
                     <h2>{this.network} – {this.name}</h2>
@@ -30,14 +32,20 @@ class Buffer extends Component {
                         <div className="secondary">
                         </div>
                     )}
-                    {(this.loadMoreBtn = new LoadMore(translation.results.show_more, this.loadMore)).elem}
+                    {(this.loadMoreBtn = new LoadMore(translation.results.show_more)).elem}
                 </div>
             </div>
         );
+        this.loadMoreBtn.addEventListener("click", () => this.loadMore());
+        return this.elem;
+    }
+
+    count() {
+        return this.contextList.length
     }
 
     loadMore() {
-        /* load data */
+        this.sendEvent("loadMore", [])
     }
 
     focus(focus) {
@@ -46,10 +54,33 @@ class Buffer extends Component {
 
         this.elem.classList.toggle("focus", focus);
         this.sendEvent("focus", focus);
+
+        if (focus === false) {
+            const bottomVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20 + this.insertContainerFirst.offsetHeight;
+            const fullyVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20;
+            const targetPosition = window.scrollY - this.insertContainer.offsetHeight;
+            window.scrollTo(0, (targetPosition > bottomVisible - 56) ? fullyVisible : targetPosition);
+        }
+    }
+
+    load(resultSet) {
+        resultSet.results
+            .map((msg) => new Context(new Message(msg.messageid, msg.time, msg.sender, msg.message)))
+            .forEach((context) => {
+                this.contextList.push(context);
+                this.insert(context)
+            });
+        this.hasMore = resultSet.hasmore;
+        this.loadMoreBtn.setVisible(this.hasMore);
     }
 
     insert(context) {
         let container = (this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer);
         container.appendChild(context.elem);
     }
+
+    setLoading(value) {
+        // Add UI indicator
+        this.loading = value;
+    }
 }
\ No newline at end of file
diff --git a/res/js/component/loadmore.js b/res/js/component/loadmore.js
index 68404a0adc885dfeb1b0c512a960572b41eeff48..49c1e5ad5f6f2470effa0903143c11afc95d7560 100644
--- a/res/js/component/loadmore.js
+++ b/res/js/component/loadmore.js
@@ -2,8 +2,6 @@ class LoadMore extends Component {
     constructor(text, eventListener) {
         super();
         this.render(text);
-        if (eventListener)
-            this.addEventListener('click', eventListener);
     }
     render(text) {
         return this.elem = function () {
diff --git a/res/js/component/loadmore.jsx b/res/js/component/loadmore.jsx
index b80d3c353088288e70f2c376183f4a070b82ec34..445a27f71c9974f609e68adc437d33005db94cb5 100644
--- a/res/js/component/loadmore.jsx
+++ b/res/js/component/loadmore.jsx
@@ -2,8 +2,6 @@ class LoadMore extends Component {
     constructor(text, eventListener) {
         super();
         this.render(text);
-        if (eventListener)
-            this.addEventListener("click", eventListener);
     }
 
     render(text) {
diff --git a/res/js/util/loader.js b/res/js/util/loader.js
index ec2e911f6f593b8c222d36385814803ac7c8940b..273c42d384862e54e4ef36cbb4c3b07b4223fedc 100644
--- a/res/js/util/loader.js
+++ b/res/js/util/loader.js
@@ -7,13 +7,13 @@ function load(url, data = null) {
                     result.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key]));
                 }
             }
-            return result.join("");
+            return result.join("&");
         };
 
         const request = new XMLHttpRequest();
         const method = data === null ? "GET" : "POST";
         request.onreadystatechange = () => {
-            if (request.readyState == 4) {
+            if (request.readyState === 4) {
                 if (request.status >= 200 && request.status < 300) {
                     try {
                         resolve(JSON.parse(request.responseText));
diff --git a/res/js/util/statehandler.js b/res/js/util/statehandler.js
index 38dd687ef90adef0b1b697952650ffc179c97b76..f5176ce5d302b936d13bb8fdd1b82b332d572565 100644
--- a/res/js/util/statehandler.js
+++ b/res/js/util/statehandler.js
@@ -1,8 +1,9 @@
 class StateHandler extends Component {
     constructor() {
         super();
+        this.state = null;
         window.addEventListener("hashchange", () => {
-            this.sendEvent("update", [this.state]);
+            this.update()
         });
     }
 
@@ -11,12 +12,12 @@ class StateHandler extends Component {
     }
 
     replace(value) {
-        history.replaceState(null, null, "#" + encodeURIComponent(value));
+        history.replaceState(null, "", "#" + encodeURIComponent(value));
         this.update();
     }
 
     push(value) {
-        history.pushState(null, null, "#" + encodeURIComponent(value));
+        history.pushState(null, "", "#" + encodeURIComponent(value));
         this.update();
     }
 
diff --git a/web/searchbuffer/index.php b/web/searchbuffer/index.php
index 9df1ab14fe3cb1e808a66f27deeaa7ae5c6db5df..b90be801b4b90114fdc7a7e8cab46902a4c059fe 100644
--- a/web/searchbuffer/index.php
+++ b/web/searchbuffer/index.php
@@ -25,6 +25,7 @@ if (!$backend->authenticate($session->username ?: '', $session->password ?: ''))
         param('query', ""),
         param('since'),
         param('before'),
+        param('sender'),
         param('buffer', 0),
         param('offset', 0),
         param('limit', 20)