diff --git a/malheur/src/main/AndroidManifest.xml b/malheur/src/main/AndroidManifest.xml
index 89c8fa0f29986dd04eb31cb14e350d5953e65044..8db59c9a9cab0d2c7edb9c51fdeb4475cf894ab7 100644
--- a/malheur/src/main/AndroidManifest.xml
+++ b/malheur/src/main/AndroidManifest.xml
@@ -1,6 +1,2 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="de.kuschku.malheur">
-
-  <uses-permission android:name="android.permission.READ_LOGS" />
-</manifest>
+<manifest package="de.kuschku.malheur" />
diff --git a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
index 3e67a36a3f2e5015f62d8aeef73e5e8bf066b9f9..ed48026a2890c16057c28c961c9ac4e17712fe58 100644
--- a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
@@ -1,9 +1,14 @@
 package de.kuschku.malheur
 
 import android.app.Application
+import android.os.Handler
+import android.os.HandlerThread
+import android.util.Log
+import android.widget.Toast
 import com.google.gson.GsonBuilder
 import de.kuschku.malheur.collectors.ReportCollector
 import de.kuschku.malheur.config.ReportConfig
+import java.io.File
 import java.util.*
 
 object CrashHandler {
@@ -12,16 +17,26 @@ object CrashHandler {
   private val startTime = Date()
   private var originalHandler: Thread.UncaughtExceptionHandler? = null
 
+  private lateinit var handler: Handler
+
   fun init(application: Application, config: ReportConfig = ReportConfig(),
            buildConfig: Class<*>?) {
     if (myHandler == null) {
       originalHandler = Thread.getDefaultUncaughtExceptionHandler()
     }
 
+    val handlerThread = HandlerThread("Malheur")
+    handlerThread.start()
+    handler = Handler(handlerThread.looper)
+
     val reportCollector = ReportCollector(application)
     myHandler = Thread.UncaughtExceptionHandler { activeThread, throwable ->
       val crashTime = Date()
       val stackTraces = Thread.getAllStackTraces()
+      Log.e("Malheur", "Creating crash report")
+      handler.post {
+        Toast.makeText(application, "Creating crash report", Toast.LENGTH_LONG).show()
+      }
       Thread {
         try {
           val json = gson.toJson(
@@ -38,7 +53,17 @@ object CrashHandler {
               ), config
             )
           )
-          // FIXME STOPSHIP Implement crash handling
+          val crashDirectory = File(application.cacheDir, "crashes")
+          crashDirectory.mkdirs()
+          val crashFile = File(crashDirectory, "${System.currentTimeMillis()}.json")
+          crashFile.createNewFile()
+          crashFile.writeText(json)
+          Log.e("Malheur", "Crash report saved: $crashFile")
+          handler.post {
+            Toast.makeText(application,
+                           "Crash report saved: ${crashFile.name}",
+                           Toast.LENGTH_LONG).show()
+          }
         } catch (e: Throwable) {
           e.printStackTrace()
           originalHandler?.uncaughtException(activeThread, throwable)