diff --git a/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt b/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt
index 7a43a5ba9731d399ac955bf502331412a8a78956..5aea5d0f7c260d5a3d8fc341ab0e4fe578240c8f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt
@@ -47,10 +47,7 @@ class QuasseldroidReleaseDelegate(private val app: Quasseldroid) :
     LeakCanary.install(app)
     // Normal app init code...
 
-    CrashHandler.init(
-      application = app,
-      buildConfig = BuildConfig::class.java
-    )
+    CrashHandler.init<BuildConfig>(application = app)
 
     // Init compatibility utils
     AndroidCompatibilityUtils.inject()
diff --git a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
index b78431d9c6e766f0570462758b567510f71b6e62..5f68831167d29c86eacedc0bbfd52666048b344e 100644
--- a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
@@ -39,6 +39,10 @@ object CrashHandler {
 
   private lateinit var handler: Handler
 
+  inline fun <reified T> init(application: Application, config: ReportConfig = ReportConfig()) {
+    init(application, config, T::class.java)
+  }
+
   fun init(application: Application, config: ReportConfig = ReportConfig(),
            buildConfig: Class<*>?) {
     if (myHandler == null) {
@@ -92,10 +96,17 @@ object CrashHandler {
         }
       }.start()
     }
+
     Thread.setDefaultUncaughtExceptionHandler { currentThread, throwable ->
       myHandler?.uncaughtException(currentThread, throwable)
       originalHandler?.uncaughtException(currentThread, throwable)
     }
+
+    val oldHandler = Thread.currentThread().uncaughtExceptionHandler
+    Thread.currentThread().setUncaughtExceptionHandler { currentThread, throwable ->
+      myHandler?.uncaughtException(currentThread, throwable)
+      oldHandler?.uncaughtException(currentThread, throwable)
+    }
   }
 
   fun handle(throwable: Throwable) {
diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt
index 1afa49239ba8dca63a3bf8b765c15ac3c63cbc8c..42bd4cf6253ad317028e4ec18c995c9da2b4c402 100644
--- a/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt
@@ -20,6 +20,7 @@
 package de.kuschku.malheur.collectors
 
 import android.app.Application
+import android.os.Build
 import de.kuschku.malheur.CrashContext
 import de.kuschku.malheur.config.AppConfig
 import de.kuschku.malheur.data.AppInfo
@@ -31,7 +32,12 @@ class AppCollector(private val application: Application) : Collector<AppInfo, Ap
       application.packageManager.getPackageInfo(application.packageName, 0).versionName
     },
     versionCode = collectIf(config.versionCode) {
-      application.packageManager.getPackageInfo(application.packageName, 0).versionCode
+      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+        application.packageManager.getPackageInfo(application.packageName, 0).longVersionCode
+      } else {
+        @Suppress("DEPRECATION")
+        application.packageManager.getPackageInfo(application.packageName, 0).versionCode.toLong()
+      }
     },
     buildConfig = collectIf(config.buildConfig) {
       reflectionCollectConstants(
diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt
index 607baea2f34203c49252f16390e1ff2ad3f14825..212e74abfb3c46dcc22f6ab73c295874591b7d2d 100644
--- a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt
@@ -21,6 +21,7 @@ package de.kuschku.malheur.collectors
 
 import android.app.Application
 import android.content.Context
+import android.graphics.Point
 import android.os.Build
 import android.util.SparseArray
 import android.view.Display
@@ -37,7 +38,6 @@ class DisplayCollector(application: Application) :
     Context.WINDOW_SERVICE
   ) as WindowManager
 
-  @Suppress("DEPRECATION")
   override fun collect(context: CrashContext, config: Boolean): DisplayInfo? {
     val display = windowManager.defaultDisplay
     val hdrCapabilities = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
@@ -46,10 +46,18 @@ class DisplayCollector(application: Application) :
     } else {
       null
     }
+
+    val size = Point().also {
+      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+        display.getRealSize(it)
+      } else {
+        display.getSize(it)
+      }
+    }
+
     return DisplayInfo(
-      width = display.width,
-      height = display.height,
-      pixelFormat = display.pixelFormat,
+      width = size.x,
+      height = size.y,
       refreshRate = display.refreshRate,
       hdr = hdrCapabilities,
       isWideGamut = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
diff --git a/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt b/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt
index dde3621860e8df7f7dbb704774eefad32d6d246a..c06791382bd98ad9fa5c60a6bec7b6144c045b53 100644
--- a/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt
@@ -21,6 +21,6 @@ package de.kuschku.malheur.data
 
 data class AppInfo(
   val versionName: String?,
-  val versionCode: Int?,
+  val versionCode: Long?,
   val buildConfig: Map<String, Any?>?
 )
diff --git a/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt b/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt
index c816bed5c6f7018be088ccd19f21f490c66f3fb6..7e2a91491d03d80c021b99fed2ce813ed0021146 100644
--- a/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt
@@ -22,7 +22,6 @@ package de.kuschku.malheur.data
 data class DisplayInfo(
   val width: Int,
   val height: Int,
-  val pixelFormat: Int,
   val refreshRate: Float,
   val hdr: List<String>?,
   val isWideGamut: Boolean?,