diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt
index 2b54f1f05b32d45948a370236cc9f3cb22273009..757575c1f0991f593e496c0830c499aeeac7ec02 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt
@@ -82,25 +82,40 @@ class MessageListFragment : ServiceBoundFragment() {
 
     database = QuasselDatabase.Creator.init(context!!.applicationContext)
     val data = buffer.switchMap {
-      LivePagedListBuilder(database.message().findByBufferIdPaged(it), 20)
+      LivePagedListBuilder(
+        database.message().findByBufferIdPaged(it),
+        PagedList.Config.Builder()
+          .setPageSize(20)
+          .setPrefetchDistance(20)
+          .setInitialLoadSizeHint(20)
+          .setEnablePlaceholders(true)
+          .build()
+      )
         .setBoundaryCallback(boundaryCallback)
-        .setInitialLoadKey(null)
         .build()
     }
 
-    sessionManager.zip(buffer).zip(data).observe(
-      this, Observer {
-      handler.post {
-        val session = it?.first?.first
-        val buffer = it?.first?.second
-        val bufferSyncer = session?.bufferSyncer
-
-        if (buffer != null && bufferSyncer != null) {
-          bufferSyncer.requestMarkBufferAsRead(buffer)
+    handler.post {
+      val database = QuasselDatabase.Creator.init(this.context!!)
+      sessionManager.zip(buffer).zip(data).observe(
+        this, Observer {
+        handler.post {
+          val session = it?.first?.first
+          val buffer = it?.first?.second
+          val bufferSyncer = session?.bufferSyncer
+
+          if (buffer != null && bufferSyncer != null) {
+            val lastMessage = database.message().findLastByBufferId(buffer)
+
+            if (lastMessage != null) {
+              bufferSyncer.requestMarkBufferAsRead(buffer)
+              bufferSyncer.requestSetLastSeenMsg(buffer, lastMessage.messageId)
+            }
+          }
         }
       }
+      )
     }
-    )
 
     data.observe(
       this, Observer { list ->