diff --git a/pom.xml b/pom.xml
index 3989833..f096d58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,9 +22,9 @@
     <compiler-plugin.version>3.8.1</compiler-plugin.version>
     <enforcer-plugin.version>3.0.0-M3</enforcer-plugin.version>
     <processor-plugin.version>4.2</processor-plugin.version>
-    <quarkus.version>1.11.1.Final</quarkus.version>
+    <quarkus.version>1.13.7.Final</quarkus.version>
     <resources-plugin.version>3.2.0</resources-plugin.version>
-    <spotless-plugin.version>2.4.1</spotless-plugin.version>
+    <spotless-plugin.version>2.11.0</spotless-plugin.version>
 
     <quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
     <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
@@ -34,13 +34,13 @@
     <flexmark.version>0.62.2</flexmark.version>
     <google.java.format.version>1.9</google.java.format.version>
     <hibernate.version>5.4.27.Final</hibernate.version>
-    <hibernate-types.version>2.10.2</hibernate-types.version>
+    <hibernate-types.version>2.12.0</hibernate-types.version>
     <jakarta-jacc-api.version>1.6.1</jakarta-jacc-api.version>
-    <jna.version>5.6.0</jna.version>
+    <jna.version>5.8.0</jna.version>
     <jsoup.version>1.13.1</jsoup.version>
-    <kotlin-annotations.version>1.4.30-RC</kotlin-annotations.version>
-    <liquibase.version>3.9.0</liquibase.version>
-    <postgresql.version>42.2.16</postgresql.version>
+    <kotlin-annotations.version>1.5.20</kotlin-annotations.version>
+    <liquibase.version>4.3.5</liquibase.version>
+    <postgresql.version>42.2.22</postgresql.version>
     <rome.version>1.15.0</rome.version>
   </properties>
 
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterResource.java b/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterResource.java
index 3786c9c..948ef4b 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterResource.java
@@ -55,7 +55,7 @@
     var mailText = Templates.registrationMail(subscription.registrationKey);
     var sendJob = mailText.subject("MulkCMS newsletter registration").to(email).send();
     var page = Templates.completeRegistration().render();
-    return sendJob.thenApply((x) -> page);
+    return sendJob.onItem().transform(x -> page).subscribeAsCompletionStage();
   }
 
   @GET
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterSender.java b/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterSender.java
index 8c8c9b6..1dacccc 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterSender.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterSender.java
@@ -106,7 +106,7 @@
             .to(senderAddress)
             .bcc(subscriberEmails)
             .send();
-    sendJob.toCompletableFuture().get(10000, TimeUnit.SECONDS);
+    sendJob.subscribe().asCompletionStage().get(10000, TimeUnit.SECONDS);
   }
 
   @TemplateExtension
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterUnsubscriber.java b/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterUnsubscriber.java
index 0a67ff6..d157a87 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterUnsubscriber.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/newsletter/NewsletterUnsubscriber.java
@@ -47,7 +47,7 @@
                       .subject("Unsubscribed from MulkCMS newsletter")
                       .to(address)
                       .send();
-              sendJob.toCompletableFuture().get(60, TimeUnit.SECONDS);
+              sendJob.subscribeAsCompletionStage().get(60, TimeUnit.SECONDS);
 
               s.delete();
 
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 22c1dfc..53233ba 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -84,7 +84,7 @@
 quarkus.container-image.name = mulkcms2
 quarkus.container-image.registry = docker.benkard.de
 
-quarkus.jib.base-jvm-image = azul/zulu-openjdk-alpine:15-jre
+quarkus.jib.base-jvm-image = azul/zulu-openjdk-alpine:16-jre
 #quarkus.jib.jvm-arguments = -XX:+UseShenandoahGC,-XX:ShenandoahGCHeuristics=compact
 quarkus.jib.jvm-arguments = -XX:G1PeriodicGCInterval=300000,-XX:G1PeriodicGCSystemLoadThreshold=0
 
diff --git a/src/main/resources/templates/benki/posts/postList.html b/src/main/resources/templates/benki/posts/postList.html
index 5e9d24a..7039d65 100644
--- a/src/main/resources/templates/benki/posts/postList.html
+++ b/src/main/resources/templates/benki/posts/postList.html
@@ -1,4 +1,4 @@
-{@java.util.List<eu.mulk.mulkcms2.benki.posts.Day> postDays}
+{@java.util.List<eu.mulk.mulkcms2.benki.posts.Post.PostPage<eu.mulk.mulkcms2.benki.posts.Post>.Day>  postDays}
 {@java.lang.String pageTitle}
 {@java.lang.Boolean showBookmarkForm}
 {@java.lang.Boolean hasPreviousPage}
