diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
index 2272db2..1f57c74 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
@@ -105,7 +105,7 @@
     var q = Bookmark.findViewable(session, identity, null, cursor, maxResults);
 
     return bookmarkList
-        .data("bookmarks", q.posts)
+        .data("posts", q.posts)
         .data("feedUri", "/bookmarks/feed")
         .data("authenticated", !identity.isAnonymous())
         .data("hasPreviousPage", q.prevCursor != null)
@@ -130,7 +130,7 @@
     var q = Bookmark.findViewable(session, identity, owner, cursor, maxResults);
 
     return bookmarkList
-        .data("bookmarks", q.posts)
+        .data("posts", q.posts)
         .data("feedUri", String.format("/bookmarks/~%s/feed", ownerName))
         .data("authenticated", !identity.isAnonymous())
         .data("hasPreviousPage", q.prevCursor != null)
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
index fb46217..4284d96 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
@@ -2,10 +2,7 @@
 
 import static javax.ws.rs.core.MediaType.TEXT_HTML;
 
-import eu.mulk.mulkcms2.benki.accesscontrol.Role;
-import eu.mulk.mulkcms2.benki.bookmarks.Bookmark;
 import eu.mulk.mulkcms2.benki.users.User;
-import io.quarkus.panache.common.Sort;
 import io.quarkus.qute.Template;
 import io.quarkus.qute.TemplateExtension;
 import io.quarkus.qute.TemplateInstance;
@@ -14,12 +11,18 @@
 import java.time.format.DateTimeFormatter;
 import java.time.format.FormatStyle;
 import java.time.temporal.TemporalAccessor;
-import java.util.List;
+import javax.annotation.CheckForNull;
 import javax.inject.Inject;
 import javax.json.spi.JsonProvider;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+import org.hibernate.Session;
 import org.jboss.logging.Logger;
 
 @Path("/lazychat")
@@ -34,36 +37,60 @@
 
   private static JsonProvider jsonProvider = JsonProvider.provider();
 
+  @ConfigProperty(name = "mulkcms.lazychat.default-max-results")
+  int defaultMaxResults;
+
   @ResourcePath("benki/lazychat/lazychatList.html")
   @Inject
   Template lazychatList;
 
   @Inject SecurityIdentity identity;
 
+  @PersistenceContext EntityManager entityManager;
+
   @GET
   @Produces(TEXT_HTML)
-  public TemplateInstance getPage() {
-    List<LazychatMessage> lazychatMessages;
-    if (identity.isAnonymous()) {
-      Role world = Role.find("from Role r join r.tags tag where tag = 'world'").singleResult();
-      lazychatMessages =
-          Bookmark.find(
-                  "select lm from LazychatMessage lm join lm.targets target left join fetch lm.owner where target = ?1",
-                  Sort.by("date").descending(),
-                  world)
-              .list();
-    } else {
-      var userName = identity.getPrincipal().getName();
-      User user =
-          User.find("from BenkiUser u join u.nicknames n where ?1 = n", userName).singleResult();
-      lazychatMessages =
-          Bookmark.find(
-                  "select lm from BenkiUser u inner join u.visibleLazychatMessages lm left join fetch lm.owner where u.id = ?1",
-                  Sort.by("date").descending(),
-                  user.id)
-              .list();
-    }
-    return lazychatList.data("lazychatMessages", lazychatMessages);
+  public TemplateInstance getIndex(
+      @QueryParam("i") @CheckForNull Integer cursor,
+      @QueryParam("n") @CheckForNull Integer maxResults) {
+
+    maxResults = maxResults == null ? defaultMaxResults : maxResults;
+
+    var session = entityManager.unwrap(Session.class);
+    var q = LazychatMessage.findViewable(session, identity, null, cursor, maxResults);
+
+    return lazychatList
+        .data("posts", q.posts)
+        .data("authenticated", !identity.isAnonymous())
+        .data("hasPreviousPage", q.prevCursor != null)
+        .data("hasNextPage", q.nextCursor != null)
+        .data("previousCursor", q.prevCursor)
+        .data("nextCursor", q.nextCursor)
+        .data("pageSize", maxResults);
+  }
+
+  @GET
+  @Path("~{ownerName}")
+  @Produces(TEXT_HTML)
+  public TemplateInstance getUserIndex(
+      @PathParam("ownerName") String ownerName,
+      @QueryParam("i") @CheckForNull Integer cursor,
+      @QueryParam("n") @CheckForNull Integer maxResults) {
+
+    maxResults = maxResults == null ? defaultMaxResults : maxResults;
+
+    var owner = User.findByNickname(ownerName);
+    var session = entityManager.unwrap(Session.class);
+    var q = LazychatMessage.findViewable(session, identity, owner, cursor, maxResults);
+
+    return lazychatList
+        .data("posts", q.posts)
+        .data("authenticated", !identity.isAnonymous())
+        .data("hasPreviousPage", q.prevCursor != null)
+        .data("hasNextPage", q.nextCursor != null)
+        .data("previousCursor", q.prevCursor)
+        .data("nextCursor", q.nextCursor)
+        .data("pageSize", maxResults);
   }
 
   @TemplateExtension
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index b90cc9e..4d03175 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -9,6 +9,7 @@
 
 mulkcms.tag-base = hub.benkard.de
 mulkcms.bookmarks.default-max-results = 25
+mulkcms.lazychat.default-max-results = 25
 
 quarkus.datasource.driver = org.postgresql.Driver
 quarkus.datasource.max-size = 8
diff --git a/src/main/resources/templates/benki/bookmarks/bookmarkList.html b/src/main/resources/templates/benki/bookmarks/bookmarkList.html
index 290cb26..8c87a55 100644
--- a/src/main/resources/templates/benki/bookmarks/bookmarkList.html
+++ b/src/main/resources/templates/benki/bookmarks/bookmarkList.html
@@ -1,4 +1,4 @@
-{@java.util.List<eu.mulk.mulkcms2.benki.bookmarks.Bookmark> bookmarks}
+{@java.util.List<eu.mulk.mulkcms2.benki.bookmarks.Bookmark> posts}
 {@java.lang.Boolean authenticated}
 {@java.lang.Boolean hasPreviousPage}
 {@java.lang.Boolean hasNextPage}
@@ -38,8 +38,8 @@
 </div>
 
 <section id="main-content">
-  {#for bookmark in bookmarks}
-    {#with bookmark}
+  {#for post in posts}
+    {#with post}
       <article class="bookmark">
         <header>
           <a href="{uri}"><h1 class="bookmark-title">{title}</h1></a>
diff --git a/src/main/resources/templates/benki/lazychat/lazychatList.html b/src/main/resources/templates/benki/lazychat/lazychatList.html
index ecac7a7..b644662 100644
--- a/src/main/resources/templates/benki/lazychat/lazychatList.html
+++ b/src/main/resources/templates/benki/lazychat/lazychatList.html
@@ -1,4 +1,10 @@
-{@java.util.List<eu.mulk.mulkcms2.benki.lazychat.LazychatMessage> lazychatMessages}
+{@java.util.List<eu.mulk.mulkcms2.benki.lazychat.LazychatMessage> posts}
+{@java.lang.Boolean authenticated}
+{@java.lang.Boolean hasPreviousPage}
+{@java.lang.Boolean hasNextPage}
+{@java.lang.Integer previousCursor}
+{@java.lang.Integer nextCursor}
+{@java.lang.Integer pageSize}
 
 {#include base.html}
 
@@ -10,22 +16,36 @@
 
 {#body}
 
-{#for lazychatMessage in lazychatMessages}
-  {#with lazychatMessage}
-    <article class="lazychat-message">
-      <header>
-        <div class="lazychat-message-info">
-          <time datetime="{date.htmlDateTime}">{date.humanDateTime}</time>
-          <span class="lazychat-message-owner">{owner.firstName} {owner.lastName}</span>
-        </div>
-      </header>
+<div class="paging">
+  {#if hasPreviousPage}<a href="?i={previousCursor}&n={pageSize}" class="pure-button">⇠ previous page</a>{/if}
+  <span class="filler"></span>
+  {#if hasNextPage}<a href="?i={nextCursor}&n={pageSize}" class="pure-button">next page ⇢</a>{/if}
+</div>
 
-      <section class="lazychat-message-content">
-        {contentHtml.raw}
-      </section>
-    </article>
-  {/with}
-{/for}
+<section id="main-content">
+  {#for post in posts}
+    {#with post}
+      <article class="lazychat-message">
+        <header>
+          <div class="lazychat-message-info">
+            <time datetime="{date.htmlDateTime}">{date.humanDateTime}</time>
+            <span class="lazychat-message-owner">{owner.firstName} {owner.lastName}</span>
+          </div>
+        </header>
+
+        <section class="lazychat-message-content">
+          {contentHtml.raw}
+        </section>
+      </article>
+    {/with}
+  {/for}
+</section>
+
+<div class="paging">
+  {#if hasPreviousPage}<a href="?i={previousCursor}&n={pageSize}" class="pure-button">⇠ previous page</a>{/if}
+  <span class="filler"></span>
+  {#if hasNextPage}<a href="?i={nextCursor}&n={pageSize}" class="pure-button">next page ⇢</a>{/if}
+</div>
 
 {/body}
 
