diff --git a/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java b/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java
index 73648dc..200997e 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java
@@ -37,6 +37,7 @@
   @ManyToMany(fetch = FetchType.LAZY)
   @JoinTable(
       name = "role_subroles",
+      schema = "benki",
       joinColumns = @JoinColumn(name = "superrole"),
       inverseJoinColumns = @JoinColumn(name = "subrole"))
   public Set<Role> directSubroles;
@@ -47,6 +48,7 @@
   @ManyToMany(fetch = FetchType.LAZY)
   @JoinTable(
       name = "effective_role_subroles",
+      schema = "benki",
       joinColumns = @JoinColumn(name = "superrole"),
       inverseJoinColumns = @JoinColumn(name = "subrole"))
   public Set<Role> effectiveSubroles;
@@ -67,7 +69,7 @@
   public Collection<User> effectiveUsers;
 
   @ElementCollection(fetch = FetchType.LAZY)
-  @CollectionTable(name = "role_tags", joinColumns = @JoinColumn(name = "role"))
+  @CollectionTable(name = "role_tags", schema = "benki", joinColumns = @JoinColumn(name = "role"))
   @Column(name = "tag")
   public Set<String> tags;
 }
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 a9a5ebd..309fb67 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
@@ -35,6 +35,7 @@
   @ManyToMany(fetch = FetchType.LAZY)
   @JoinTable(
       name = "user_visible_posts",
+      schema = "benki",
       joinColumns = @JoinColumn(name = "message"),
       inverseJoinColumns = @JoinColumn(name = "user"))
   public Set<User> visibleTo;
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/OpenId.java b/src/main/java/eu/mulk/mulkcms2/benki/users/OpenId.java
deleted file mode 100644
index bb41dda..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/OpenId.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package eu.mulk.mulkcms2.benki.users;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity(name = "BenkiOpenId")
-@Table(name = "openids", schema = "benki")
-public class OpenId extends PanacheEntityBase {
-
-  @Id
-  @Column(name = "openid", nullable = false, length = -1)
-  public String openid;
-
-  @ManyToOne(fetch = FetchType.LAZY)
-  @JoinColumn(name = "user", referencedColumnName = "id", nullable = false)
-  public User user;
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/RsaKey.java b/src/main/java/eu/mulk/mulkcms2/benki/users/RsaKey.java
index 9dd7931..d03597b 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/RsaKey.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/users/RsaKey.java
@@ -2,13 +2,14 @@
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.math.BigInteger;
-import java.util.Collection;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.Id;
 import javax.persistence.IdClass;
-import javax.persistence.OneToMany;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 @Entity
@@ -24,6 +25,11 @@
   @Column(name = "exponent", nullable = false, precision = 0)
   public BigInteger exponent;
 
-  @OneToMany(mappedBy = "rsaKey", fetch = FetchType.LAZY)
-  public Collection<UserRsaKey> users;
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinTable(
+      name = "user_rsa_keys",
+      schema = "benki",
+      joinColumns = {@JoinColumn(name = "modulus"), @JoinColumn(name = "exponent")},
+      inverseJoinColumns = @JoinColumn(name = "user"))
+  public User user;
 }
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 e16a111..40e5364 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
@@ -9,11 +9,14 @@
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.util.Collection;
 import java.util.Set;
+import javax.persistence.CollectionTable;
 import javax.persistence.Column;
+import javax.persistence.ElementCollection;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
 import javax.persistence.JoinTable;
 import javax.persistence.ManyToMany;
 import javax.persistence.OneToMany;
@@ -52,8 +55,10 @@
   @OneToMany(mappedBy = "owner", fetch = FetchType.LAZY)
   public Collection<LazychatMessage> lazychatMessages;
 
-  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
-  public Collection<OpenId> openids;
+  @ElementCollection(fetch = FetchType.LAZY)
+  @CollectionTable(name = "openids", schema = "benki", joinColumns = @JoinColumn(name = "user"))
+  @Column(name = "openid")
+  public Collection<String> openids;
 
   @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
   public Collection<PageKey> pageKeys;
@@ -64,27 +69,41 @@
   @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
   public Collection<UserDefaultTarget> defaultTargets;
 
-  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
-  public Collection<UserEmailAddress> emailAddresses;
+  @ElementCollection(fetch = FetchType.LAZY)
+  @CollectionTable(
+      name = "user_email_addresses",
+      schema = "benki",
+      joinColumns = @JoinColumn(name = "user"))
+  @Column(name = "email")
+  public Collection<String> emailAddresses;
 
-  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
-  public Collection<UserJid> jids;
+  @ElementCollection(fetch = FetchType.LAZY)
+  @CollectionTable(name = "user_jids", schema = "benki", joinColumns = @JoinColumn(name = "user"))
+  @Column(name = "jid")
+  public Collection<String> jids;
 
-  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
-  public Collection<UserNickname> nicknames;
+  @ElementCollection(fetch = FetchType.LAZY)
+  @CollectionTable(
+      name = "user_nicknames",
+      schema = "benki",
+      joinColumns = @JoinColumn(name = "user"))
+  @Column(name = "nickname")
+  public Collection<String> nicknames;
 
   @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
   public Collection<UserRole> directRoles;
 
   @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
-  public Collection<UserRsaKey> rsaKeys;
+  public Collection<RsaKey> rsaKeys;
 
   @OneToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "role", referencedColumnName = "id", nullable = false)
   public Role ownedRole;
 
-  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
-  public Collection<WebId> webids;
+  @ElementCollection(fetch = FetchType.LAZY)
+  @CollectionTable(name = "webids", schema = "benki", joinColumns = @JoinColumn(name = "user"))
+  @Column(name = "webid")
+  public Collection<String> webids;
 
   @OneToMany(mappedBy = "author", fetch = FetchType.LAZY)
   public Collection<WikiPageRevision> wikiPageRevisions;
@@ -95,6 +114,7 @@
   @ManyToMany(fetch = FetchType.LAZY)
   @JoinTable(
       name = "effective_user_roles",
+      schema = "benki",
       joinColumns = @JoinColumn(name = "user"),
       inverseJoinColumns = @JoinColumn(name = "role"))
   public Set<Role> effectiveRoles;
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/UserEmailAddress.java b/src/main/java/eu/mulk/mulkcms2/benki/users/UserEmailAddress.java
deleted file mode 100644
index 383c382..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/UserEmailAddress.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package eu.mulk.mulkcms2.benki.users;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "user_email_addresses", schema = "benki")
-public class UserEmailAddress extends PanacheEntityBase {
-
-  @Id
-  @Column(name = "email", nullable = false, length = -1)
-  public String email;
-
-  @ManyToOne(fetch = FetchType.LAZY)
-  @JoinColumn(name = "user", referencedColumnName = "id", nullable = false)
-  public User user;
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/UserJid.java b/src/main/java/eu/mulk/mulkcms2/benki/users/UserJid.java
deleted file mode 100644
index 867583c..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/UserJid.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package eu.mulk.mulkcms2.benki.users;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "user_jids", schema = "benki")
-@IdClass(UserJidPK.class)
-public class UserJid extends PanacheEntityBase {
-
-  @Id
-  @Column(name = "user", nullable = false)
-  public int userId;
-
-  @Id
-  @Column(name = "jid", nullable = false, length = -1)
-  public String jid;
-
-  @ManyToOne(fetch = FetchType.LAZY)
-  @JoinColumn(name = "user", referencedColumnName = "id", nullable = false)
-  public User user;
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/UserJidPK.java b/src/main/java/eu/mulk/mulkcms2/benki/users/UserJidPK.java
deleted file mode 100644
index 19eeaeb..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/UserJidPK.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package eu.mulk.mulkcms2.benki.users;
-
-import java.io.Serializable;
-import javax.persistence.Column;
-import javax.persistence.Id;
-
-public class UserJidPK implements Serializable {
-
-  private int userId;
-  private String jid;
-
-  @Column(name = "user", nullable = false)
-  @Id
-  public int getUserId() {
-    return userId;
-  }
-
-  public void setUserId(int userId) {
-    this.userId = userId;
-  }
-
-  @Column(name = "jid", nullable = false, length = -1)
-  @Id
-  public String getJid() {
-    return jid;
-  }
-
-  public void setJid(String jid) {
-    this.jid = jid;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-
-    UserJidPK userJidPK = (UserJidPK) o;
-
-    if (userId != userJidPK.userId) {
-      return false;
-    }
-    if (jid != null ? !jid.equals(userJidPK.jid) : userJidPK.jid != null) {
-      return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = userId;
-    result = 31 * result + (jid != null ? jid.hashCode() : 0);
-    return result;
-  }
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/UserNickname.java b/src/main/java/eu/mulk/mulkcms2/benki/users/UserNickname.java
deleted file mode 100644
index 05a8004..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/UserNickname.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package eu.mulk.mulkcms2.benki.users;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "user_nicknames", schema = "benki")
-public class UserNickname extends PanacheEntityBase {
-
-  @Id
-  @Column(name = "nickname", nullable = false, length = -1)
-  public String nickname;
-
-  @ManyToOne(fetch = FetchType.LAZY)
-  @JoinColumn(name = "user", referencedColumnName = "id", nullable = false)
-  public User user;
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/WebId.java b/src/main/java/eu/mulk/mulkcms2/benki/users/WebId.java
deleted file mode 100644
index 9a8728c..0000000
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/WebId.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package eu.mulk.mulkcms2.benki.users;
-
-import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "webids", schema = "benki")
-public class WebId extends PanacheEntityBase {
-
-  @Id
-  @Column(name = "webid", nullable = false, length = -1)
-  public String webid;
-
-  @ManyToOne(fetch = FetchType.LAZY)
-  @JoinColumn(name = "user", referencedColumnName = "id", nullable = false)
-  public User user;
-}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
index 10112db..b5ece7e 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
@@ -24,7 +24,6 @@
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import org.jboss.logging.Logger;
-import org.jboss.resteasy.spi.NotImplementedYetException;
 
 @Path("/wiki")
 public class WikiResource {
