diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt
index e9a23b6c1683311b2fe2eb1af728a337252ff522..ac57cf4cc0951b8c1e8792933c91953d2db7cb90 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt
@@ -21,36 +21,32 @@ package de.kuschku.quasseldroid.util.backport
 
 import android.content.Context
 import org.threeten.bp.zone.TzdbZoneRulesProvider
+import org.threeten.bp.zone.ZoneRulesInitializer
 import org.threeten.bp.zone.ZoneRulesProvider
 import java.io.IOException
-import java.io.InputStream
 import java.util.concurrent.atomic.AtomicBoolean
 
 object AndroidThreeTenBackport {
   private val initialized = AtomicBoolean()
 
-  fun init(context: Context) {
-    if (initialized.getAndSet(true)) {
-      return
+  fun init(context: Context, assetPath: String = "TZDB.dat") {
+    if (!initialized.getAndSet(true)) {
+      ZoneRulesInitializer.setInitializer(AndroidThreeTenBackportInitializer(context, assetPath))
     }
+  }
 
-    val provider: TzdbZoneRulesProvider
-    var inputStream: InputStream? = null
-    try {
-      inputStream = context.assets.open("TZDB.dat")
-      provider = TzdbZoneRulesProvider(inputStream)
-    } catch (e: IOException) {
-      throw IllegalStateException("TZDB.dat missing from assets.", e)
-    } finally {
-      if (inputStream != null) {
-        try {
-          inputStream.close()
-        } catch (ignored: IOException) {
-        }
-
+  class AndroidThreeTenBackportInitializer(
+    private val context: Context,
+    private val assetPath: String
+  ) : ZoneRulesInitializer() {
+    override fun initializeProviders() {
+      try {
+        ZoneRulesProvider.registerProvider(context.assets.open(assetPath).use {
+          TzdbZoneRulesProvider(it)
+        })
+      } catch (exception: IOException) {
+        throw IllegalStateException("$assetPath missing from assets", exception)
       }
     }
-
-    ZoneRulesProvider.registerProvider(provider)
   }
 }
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt
index f6081b75549f6e8731e50efbb40192c65ed35c76..8dd110d0c729bd7ad373449c71e1aac65db5d671 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/backport/BackportedSyncFlushDeflaterOutputStream.kt
@@ -41,9 +41,10 @@ class BackportedSyncFlushDeflaterOutputStream(
     private fun createSyncFlushDeflater(): Deflater? {
       val def = Deflater()
       try {
-        val f = def.javaClass.getDeclaredField("flushParm")
-        f.isAccessible = true
-        f.setInt(def, 2) // Z_SYNC_FLUSH
+        def.javaClass.getDeclaredField("flushParm").apply {
+          isAccessible = true
+          setInt(def, 2) // Z_SYNC_FLUSH
+        }
       } catch (e: Exception) {
         return null
       }