diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarx/UserVisibleBookmark.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarx/UserVisibleBookmark.java
deleted file mode 100644
index 589e62a..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarx/UserVisibleBookmark.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package eu.mulk.mulkcms2.benki.bookmarx;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import java.io.Serializable;
-import java.util.Objects;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import org.hibernate.annotations.Immutable;
-
-@Entity
-@Immutable
-@Table(name = "user_visible_bookmarks", schema = "public", catalog = "benki")
-public class UserVisibleBookmark extends PanacheEntityBase implements Serializable {
-
-  @Id
-  @Column(name = "user", nullable = true)
-  public Integer userId;
-
-  @Id
-  @Column(name = "message", nullable = true)
-  public Integer messageId;
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof UserVisibleBookmark)) {
-      return false;
-    }
-    UserVisibleBookmark that = (UserVisibleBookmark) o;
-    return Objects.equals(userId, that.userId) && Objects.equals(messageId, that.messageId);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(userId, messageId);
-  }
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
index 050cdcb..bfa02d2 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
@@ -3,12 +3,16 @@
 import eu.mulk.mulkcms2.benki.users.User;
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.time.OffsetDateTime;
+import java.util.Set;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
 import javax.persistence.Inheritance;
 import javax.persistence.InheritanceType;
 import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
@@ -27,4 +31,11 @@
   @ManyToOne
   @JoinColumn(name = "owner", referencedColumnName = "id")
   public User owner;
+
+  @ManyToMany(fetch = FetchType.LAZY)
+  @JoinTable(
+      name = "user_visible_posts",
+      joinColumns = @JoinColumn(name = "message"),
+      inverseJoinColumns = @JoinColumn(name = "user"))
+  public Set<User> visibleTo;
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/generic/UserVisiblePost.java b/src/main/java/eu/mulk/mulkcms2/benki/generic/UserVisiblePost.java
deleted file mode 100644
index 2b09120..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/generic/UserVisiblePost.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package eu.mulk.mulkcms2.benki.generic;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import java.io.Serializable;
-import java.util.Objects;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import org.hibernate.annotations.Immutable;
-
-@Entity
-@Immutable
-@Table(name = "user_visible_posts", schema = "public", catalog = "benki")
-public class UserVisiblePost extends PanacheEntityBase implements Serializable {
-
-  @Id
-  @Column(name = "user", nullable = true)
-  public Integer userId;
-
-  @Id
-  @Column(name = "message", nullable = true)
-  public Integer messageId;
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof UserVisiblePost)) {
-      return false;
-    }
-    UserVisiblePost that = (UserVisiblePost) o;
-    return Objects.equals(userId, that.userId) && Objects.equals(messageId, that.messageId);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(userId, messageId);
-  }
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/lafargue/UserVisibleLazychatMessage.java b/src/main/java/eu/mulk/mulkcms2/benki/lafargue/UserVisibleLazychatMessage.java
deleted file mode 100644
index 0570aae..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/lafargue/UserVisibleLazychatMessage.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package eu.mulk.mulkcms2.benki.lafargue;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import java.io.Serializable;
-import java.util.Objects;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import org.hibernate.annotations.Immutable;
-
-@Entity
-@Immutable
-@Table(name = "user_visible_lazychat_messages", schema = "public", catalog = "benki")
-public class UserVisibleLazychatMessage extends PanacheEntityBase implements Serializable {
-
-  @Id
-  @Column(name = "user", nullable = true)
-  public Integer userId;
-
-  @Id
-  @Column(name = "message", nullable = true)
-  public Integer messageId;
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof UserVisibleLazychatMessage)) {
-      return false;
-    }
-    UserVisibleLazychatMessage that = (UserVisibleLazychatMessage) o;
-    return Objects.equals(userId, that.userId) && Objects.equals(messageId, that.messageId);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(userId, messageId);
-  }
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/User.java b/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
index fb1ed3b..11c01fb 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
@@ -12,6 +12,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.ManyToMany;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
@@ -84,4 +85,7 @@
 
   @OneToMany(mappedBy = "author")
   public Collection<WikiPageRevision> wikiPageRevisions;
+
+  @ManyToMany(mappedBy = "visibleTo")
+  public Collection<Post> visiblePosts;
 }
