diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt
index 1d67c5c2bc01be4ded6a03bd310c9a5d85d9bc86..6ae713b4f5dd0dfd2ce29c1b31bca83d9c7df8be 100644
--- a/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt
+++ b/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt
@@ -25,7 +25,26 @@
 package de.chaosdorf.meteroid
 
 import android.app.Application
+import coil.ImageLoader
+import coil.ImageLoaderFactory
+import coil.disk.DiskCache
+import coil.memory.MemoryCache
 import dagger.hilt.android.HiltAndroidApp
 
 @HiltAndroidApp
-class MeteroidApplication : Application()
+class MeteroidApplication : Application(), ImageLoaderFactory {
+  override fun newImageLoader() = ImageLoader.Builder(applicationContext)
+    .memoryCache {
+      MemoryCache.Builder(applicationContext)
+        .maxSizePercent(0.25)
+        .build()
+    }
+    .diskCache {
+      DiskCache.Builder()
+        .directory(applicationContext.cacheDir.resolve("image_cache"))
+        .maxSizePercent(0.02)
+        .build()
+    }
+    .respectCacheHeaders(false)
+    .build()
+}
diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt
index cda175bb6c75bb5d0e04c16f26d472e2bc95b341..2387d29ae32edb5749c6f5fd9357f30dd809bbf3 100644
--- a/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt
+++ b/app/src/main/kotlin/de/chaosdorf/meteroid/sync/SyncManager.kt
@@ -24,6 +24,7 @@
 
 package de.chaosdorf.meteroid.sync
 
+import android.util.Log
 import de.chaosdorf.mete.model.MeteApiFactory
 import de.chaosdorf.meteroid.model.AccountInfo
 import de.chaosdorf.meteroid.model.Drink
@@ -39,34 +40,66 @@ class SyncManager @Inject constructor(
   private val transactionSyncHandler: TransactionSyncHandler
 ) {
   suspend fun sync(server: Server, user: User?) {
-    userSyncHandler.sync(server)
-    drinkSyncHandler.sync(server)
-    if (user != null) {
-      transactionSyncHandler.sync(Pair(server, user.userId))
+    try {
+      userSyncHandler.sync(server)
+      drinkSyncHandler.sync(server)
+      if (user != null) {
+        transactionSyncHandler.sync(Pair(server, user.userId))
+      }
+    } catch (e: Exception) {
+      Log.e(
+        "Sync",
+        "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}",
+        e
+      )
     }
   }
 
   suspend fun purchase(account: AccountInfo, drink: Drink) {
     account.user?.let { user ->
       val api = factory.newInstance(account.server.url)
-      api.purchase(user.userId, drink.drinkId)
-      sync(account.server, user)
+      try {
+        api.purchase(user.userId, drink.drinkId)
+        sync(account.server, user)
+      } catch (e: Exception) {
+        Log.e(
+          "Sync",
+          "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}",
+          e
+        )
+      }
     }
   }
 
   suspend fun deposit(account: AccountInfo, amount: BigDecimal) {
     account.user?.let { user ->
-      val api = factory.newInstance(account.server.url)
-      api.deposit(user.userId, amount)
-      sync(account.server, user)
+      try {
+        val api = factory.newInstance(account.server.url)
+        api.deposit(user.userId, amount)
+        sync(account.server, user)
+      } catch (e: Exception) {
+        Log.e(
+          "Sync",
+          "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}",
+          e
+        )
+      }
     }
   }
 
   suspend fun withdraw(account: AccountInfo, amount: BigDecimal) {
     account.user?.let { user ->
       val api = factory.newInstance(account.server.url)
-      api.withdraw(user.userId, amount)
-      sync(account.server, user)
+      try {
+        api.withdraw(user.userId, amount)
+        sync(account.server, user)
+      } catch (e: Exception) {
+        Log.e(
+          "Sync",
+          "Could not finish transaction for ${user.name} (${user.userId}) on ${account.server.url}",
+          e
+        )
+      }
     }
   }
 }