diff --git a/app/src/main/java/audio/funkwhale/ffa/FFA.kt b/app/src/main/java/audio/funkwhale/ffa/FFA.kt
index 95f7bc5a85ce6f8887900f082caa9f4ceeb61ae5..93eebb09460b1ee200efd8291888e57ebc679015 100644
--- a/app/src/main/java/audio/funkwhale/ffa/FFA.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/FFA.kt
@@ -2,6 +2,9 @@ package audio.funkwhale.ffa
 
 import android.app.Application
 import androidx.appcompat.app.AppCompatDelegate
+import audio.funkwhale.ffa.playback.MediaSession
+import audio.funkwhale.ffa.playback.QueueManager
+import audio.funkwhale.ffa.utils.*
 import com.google.android.exoplayer2.database.ExoDatabaseProvider
 import com.google.android.exoplayer2.offline.DefaultDownloadIndex
 import com.google.android.exoplayer2.offline.DefaultDownloaderFactory
@@ -13,17 +16,14 @@ import com.google.android.exoplayer2.upstream.cache.SimpleCache
 import com.preference.PowerPreference
 import kotlinx.coroutines.channels.BroadcastChannel
 import kotlinx.coroutines.channels.ConflatedBroadcastChannel
-import audio.funkwhale.ffa.playback.MediaSession
-import audio.funkwhale.ffa.playback.QueueManager
-import audio.funkwhale.ffa.utils.*
 import java.text.SimpleDateFormat
 import java.util.*
 
 class FFA : Application() {
   companion object {
-    private var instance: audio.funkwhale.ffa.FFA = audio.funkwhale.ffa.FFA()
+    private var instance: FFA = FFA()
 
-    fun get(): audio.funkwhale.ffa.FFA = audio.funkwhale.ffa.FFA.Companion.instance
+    fun get(): FFA = instance
   }
 
   var defaultExceptionHandler: Thread.UncaughtExceptionHandler? = null
@@ -70,7 +70,7 @@ class FFA : Application() {
 
     Thread.setDefaultUncaughtExceptionHandler(CrashReportHandler())
 
-    audio.funkwhale.ffa.FFA.Companion.instance = this
+    FFA.Companion.instance = this
 
     when (PowerPreference.getDefaultFile().getString("night_mode")) {
       "on" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
@@ -94,19 +94,20 @@ class FFA : Application() {
       val now = Date(Date().time - (5 * 60 * 1000))
       val formatter = SimpleDateFormat("MM-dd kk:mm:ss.000", Locale.US)
 
-      Runtime.getRuntime().exec(listOf("logcat", "-d", "-T", formatter.format(now)).toTypedArray()).also {
-        it.inputStream.bufferedReader().also { reader ->
-          val builder = StringBuilder()
+      Runtime.getRuntime().exec(listOf("logcat", "-d", "-T", formatter.format(now)).toTypedArray())
+        .also {
+          it.inputStream.bufferedReader().also { reader ->
+            val builder = StringBuilder()
 
-          while (true) {
-            builder.appendln(reader.readLine() ?: break)
-          }
+            while (true) {
+              builder.appendLine(reader.readLine() ?: break)
+            }
 
-          builder.appendln(e.toString())
+            builder.appendLine(e.toString())
 
-          Cache.set(this@FFA, "crashdump", builder.toString().toByteArray())
+            Cache.set(this@FFA, "crashdump", builder.toString().toByteArray())
+          }
         }
-      }
 
       defaultExceptionHandler?.uncaughtException(t, e)
     }
diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/DownloadsActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/DownloadsActivity.kt
index 308a6a536aa35ee5e53616585fa9cfc36edf7662..49312afe9caf90604a9b4a6b90987598527668b9 100644
--- a/app/src/main/java/audio/funkwhale/ffa/activities/DownloadsActivity.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/activities/DownloadsActivity.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.lifecycleScope
 import androidx.recyclerview.widget.LinearLayoutManager
+import audio.funkwhale.ffa.FFA
 import audio.funkwhale.ffa.adapters.DownloadsAdapter
 import audio.funkwhale.ffa.databinding.ActivityDownloadsBinding
 import audio.funkwhale.ffa.utils.Event
@@ -62,7 +63,7 @@ class DownloadsActivity : AppCompatActivity() {
 
   private fun refresh() {
     lifecycleScope.launch(Main) {
-      val cursor = audio.funkwhale.ffa.FFA.get().exoDownloadManager.downloadIndex.getDownloads()
+      val cursor = FFA.get().exoDownloadManager.downloadIndex.getDownloads()
 
       adapter.downloads.clear()
 
@@ -98,7 +99,7 @@ class DownloadsActivity : AppCompatActivity() {
   }
 
   private suspend fun refreshProgress() {
-    val cursor = audio.funkwhale.ffa.FFA.get().exoDownloadManager.downloadIndex.getDownloads()
+    val cursor = FFA.get().exoDownloadManager.downloadIndex.getDownloads()
 
     while (cursor.moveToNext()) {
       val download = cursor.download
diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt
index 8d152f1b7cc7bc6767991e1e2dcfb799e516a9b3..bfb2cf9a61a3ca45b8e72f5d49becb9beee78568 100644
--- a/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/activities/MainActivity.kt
@@ -21,6 +21,7 @@ import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentManager
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.lifecycleScope
+import audio.funkwhale.ffa.FFA
 import audio.funkwhale.ffa.R
 import audio.funkwhale.ffa.databinding.ActivityMainBinding
 import audio.funkwhale.ffa.fragments.*
@@ -259,7 +260,7 @@ class MainActivity : AppCompatActivity() {
 
     if (resultCode == ResultCode.LOGOUT.code) {
       Intent(this, LoginActivity::class.java).apply {
-        audio.funkwhale.ffa.FFA.get().deleteAllData()
+        FFA.get().deleteAllData()
 
         flags =
           Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
@@ -298,7 +299,7 @@ class MainActivity : AppCompatActivity() {
       EventBus.get().collect { message ->
         when (message) {
           is Event.LogOut -> {
-            audio.funkwhale.ffa.FFA.get().deleteAllData()
+            FFA.get().deleteAllData()
 
             startActivity(Intent(this@MainActivity, LoginActivity::class.java).apply {
               flags = Intent.FLAG_ACTIVITY_NO_HISTORY
diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/SearchActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/SearchActivity.kt
index 4d10772bf05d9bb05cabb76e5dd70db925aade33..b865427d036d38ca9a8179256bf861e982d230f0 100644
--- a/app/src/main/java/audio/funkwhale/ffa/activities/SearchActivity.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/activities/SearchActivity.kt
@@ -89,9 +89,9 @@ class SearchActivity : AppCompatActivity() {
 
           val query = URLEncoder.encode(it, "UTF-8")
 
-          artistsRepository.query = query.toLowerCase(Locale.ROOT)
-          albumsRepository.query = query.toLowerCase(Locale.ROOT)
-          tracksRepository.query = query.toLowerCase(Locale.ROOT)
+          artistsRepository.query = query.lowercase(Locale.ROOT)
+          albumsRepository.query = query.lowercase(Locale.ROOT)
+          tracksRepository.query = query.lowercase(Locale.ROOT)
 
           binding.searchSpinner.visibility = View.VISIBLE
           binding.searchEmpty.visibility = View.GONE
diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt
index 458ed2ea7f9f2ed7bd22ef8bf4440c8491e14a52..21f40811e8848dbc5c9c29737198f71cf6432d46 100644
--- a/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt
@@ -14,6 +14,7 @@ import androidx.preference.ListPreference
 import androidx.preference.Preference
 import androidx.preference.PreferenceFragmentCompat
 import androidx.preference.SeekBarPreference
+import audio.funkwhale.ffa.FFA
 import audio.funkwhale.ffa.R
 import audio.funkwhale.ffa.databinding.ActivitySettingsBinding
 import audio.funkwhale.ffa.utils.Cache
@@ -97,7 +98,7 @@ class SettingsFragment :
             .setPositiveButton(android.R.string.yes) { _, _ ->
               CommandBus.send(Command.ClearQueue)
 
-              audio.funkwhale.ffa.FFA.get().deleteAllData()
+              FFA.get().deleteAllData()
 
               activity?.setResult(MainActivity.ResultCode.LOGOUT.code)
               activity?.finish()
diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/SplashActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/SplashActivity.kt
index 41cff2d1c7a74f922dc7c574c2bc1fc33ad8142a..aa6242787f6f60329d56664d633c21001b874dd1 100644
--- a/app/src/main/java/audio/funkwhale/ffa/activities/SplashActivity.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/activities/SplashActivity.kt
@@ -4,6 +4,7 @@ import android.content.Context
 import android.content.Intent
 import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
+import audio.funkwhale.ffa.FFA
 import audio.funkwhale.ffa.utils.AppContext
 import audio.funkwhale.ffa.utils.Settings
 
@@ -21,7 +22,7 @@ class SplashActivity : AppCompatActivity() {
         }
 
         false -> Intent(this@SplashActivity, LoginActivity::class.java).apply {
-          audio.funkwhale.ffa.FFA.get().deleteAllData()
+          FFA.get().deleteAllData()
 
           flags = Intent.FLAG_ACTIVITY_NO_ANIMATION
 
diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/MediaControlsManager.kt b/app/src/main/java/audio/funkwhale/ffa/playback/MediaControlsManager.kt
index 377865a0c84140802fbb90c35ddcf2faeba81093..78dee618d8d6f10d3212a6c06b096a1aff9da899 100644
--- a/app/src/main/java/audio/funkwhale/ffa/playback/MediaControlsManager.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/playback/MediaControlsManager.kt
@@ -99,7 +99,7 @@ class MediaControlsManager(val context: Service, private val scope: CoroutineSco
           }
         }
 
-        audio.funkwhale.ffa.FFA.get().mediaSession.connector.invalidateMediaSessionMetadata()
+        FFA.get().mediaSession.connector.invalidateMediaSessionMetadata()
       }
     }
   }
diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt b/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt
index 9dbe031509dba16db6ff94ffbe50e2101600baeb..1c901c40de070f952b1fc50a57fbf6f11fc203ff 100644
--- a/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/playback/PinService.kt
@@ -4,6 +4,17 @@ import android.app.Notification
 import android.content.Context
 import android.content.Intent
 import android.net.Uri
+import audio.funkwhale.ffa.FFA
+import audio.funkwhale.ffa.R
+import audio.funkwhale.ffa.utils.AppContext
+import audio.funkwhale.ffa.utils.DownloadInfo
+import audio.funkwhale.ffa.utils.Event
+import audio.funkwhale.ffa.utils.EventBus
+import audio.funkwhale.ffa.utils.Request
+import audio.funkwhale.ffa.utils.RequestBus
+import audio.funkwhale.ffa.utils.Response
+import audio.funkwhale.ffa.utils.Track
+import audio.funkwhale.ffa.utils.mustNormalizeUrl
 import com.google.android.exoplayer2.offline.Download
 import com.google.android.exoplayer2.offline.DownloadManager
 import com.google.android.exoplayer2.offline.DownloadRequest
@@ -16,17 +27,6 @@ import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
-import audio.funkwhale.ffa.FFA
-import audio.funkwhale.ffa.R
-import audio.funkwhale.ffa.utils.AppContext
-import audio.funkwhale.ffa.utils.DownloadInfo
-import audio.funkwhale.ffa.utils.Event
-import audio.funkwhale.ffa.utils.EventBus
-import audio.funkwhale.ffa.utils.Request
-import audio.funkwhale.ffa.utils.RequestBus
-import audio.funkwhale.ffa.utils.Response
-import audio.funkwhale.ffa.utils.Track
-import audio.funkwhale.ffa.utils.mustNormalizeUrl
 import java.util.Collections
 
 class PinService : DownloadService(AppContext.NOTIFICATION_DOWNLOADS) {
@@ -66,7 +66,7 @@ class PinService : DownloadService(AppContext.NOTIFICATION_DOWNLOADS) {
     scope.launch(Main) {
       RequestBus.get().collect { request ->
         when (request) {
-          is Request.GetDownloads -> request.channel?.offer(Response.Downloads(getDownloads()))
+          is Request.GetDownloads -> request.channel?.trySend(Response.Downloads(getDownloads()))?.isSuccess
         }
       }
     }
@@ -74,7 +74,7 @@ class PinService : DownloadService(AppContext.NOTIFICATION_DOWNLOADS) {
     return super.onStartCommand(intent, flags, startId)
   }
 
-  override fun getDownloadManager() = audio.funkwhale.ffa.FFA.get().exoDownloadManager.apply {
+  override fun getDownloadManager() = FFA.get().exoDownloadManager.apply {
     addListener(DownloadListener())
   }
 
diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt
index 84861e7e90ed40624fee8cf646af25a25be0ff5f..8d5c77c2b33c577d47170a4855b9778a90ec6494 100644
--- a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt
@@ -15,6 +15,9 @@ import android.support.v4.media.MediaMetadataCompat
 import android.view.KeyEvent
 import androidx.core.app.NotificationManagerCompat
 import androidx.media.session.MediaButtonReceiver
+import audio.funkwhale.ffa.FFA
+import audio.funkwhale.ffa.R
+import audio.funkwhale.ffa.utils.*
 import com.google.android.exoplayer2.C
 import com.google.android.exoplayer2.ExoPlaybackException
 import com.google.android.exoplayer2.Player
@@ -26,9 +29,6 @@ import kotlinx.coroutines.*
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.flow.collect
-import audio.funkwhale.ffa.FFA
-import audio.funkwhale.ffa.R
-import audio.funkwhale.ffa.utils.*
 
 class PlayerService : Service() {
   companion object {
@@ -63,12 +63,12 @@ class PlayerService : Service() {
           when (key.keyCode) {
             KeyEvent.KEYCODE_MEDIA_PLAY, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE -> {
               if (hasAudioFocus(true)) MediaButtonReceiver.handleIntent(
-                audio.funkwhale.ffa.FFA.get().mediaSession.session,
+                FFA.get().mediaSession.session,
                 intent
               )
               Unit
             }
-            else -> MediaButtonReceiver.handleIntent(audio.funkwhale.ffa.FFA.get().mediaSession.session, intent)
+            else -> MediaButtonReceiver.handleIntent(FFA.get().mediaSession.session, intent)
           }
         }
       }
@@ -108,7 +108,7 @@ class PlayerService : Service() {
       }
     }
 
-    mediaControlsManager = MediaControlsManager(this, scope, audio.funkwhale.ffa.FFA.get().mediaSession.session)
+    mediaControlsManager = MediaControlsManager(this, scope, FFA.get().mediaSession.session)
 
     player = SimpleExoPlayer.Builder(this).build().apply {
       playWhenReady = false
@@ -118,9 +118,9 @@ class PlayerService : Service() {
       }
     }
 
-    audio.funkwhale.ffa.FFA.get().mediaSession.active = true
+    FFA.get().mediaSession.active = true
 
-    audio.funkwhale.ffa.FFA.get().mediaSession.connector.apply {
+    FFA.get().mediaSession.connector.apply {
       setPlayer(player)
 
       setMediaMetadataProvider {
@@ -216,9 +216,9 @@ class PlayerService : Service() {
     scope.launch(Main) {
       RequestBus.get().collect { request ->
         when (request) {
-          is Request.GetCurrentTrack -> request.channel?.offer(Response.CurrentTrack(queue.current()))
-          is Request.GetState -> request.channel?.offer(Response.State(player.playWhenReady))
-          is Request.GetQueue -> request.channel?.offer(Response.Queue(queue.get()))
+          is Request.GetCurrentTrack -> request.channel?.trySend(Response.CurrentTrack(queue.current()))?.isSuccess
+          is Request.GetState -> request.channel?.trySend(Response.State(player.playWhenReady))?.isSuccess
+          is Request.GetQueue -> request.channel?.trySend(Response.Queue(queue.get()))?.isSuccess
         }
       }
     }
@@ -271,7 +271,7 @@ class PlayerService : Service() {
     setPlaybackState(false)
     player.release()
 
-    audio.funkwhale.ffa.FFA.get().mediaSession.active = false
+    FFA.get().mediaSession.active = false
 
     super.onDestroy()
   }
diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt b/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt
index b08d36bb391bb7abaf125ed43cc4aa6c694433e0..16f0dc9bdca5efdf8cf8d3848e2c3abc4aaca131 100644
--- a/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/playback/QueueManager.kt
@@ -30,10 +30,10 @@ class QueueManager(val context: Context) {
         }
       }
 
-      val playbackCache = CacheDataSourceFactory(audio.funkwhale.ffa.FFA.get().exoCache, http)
+      val playbackCache = CacheDataSourceFactory(FFA.get().exoCache, http)
 
       return CacheDataSourceFactory(
-        audio.funkwhale.ffa.FFA.get().exoDownloadCache,
+        FFA.get().exoDownloadCache,
         playbackCache,
         FileDataSource.Factory(),
         null,
diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt
index dfefb44d3048aff52b548e7b3392a178b16c1595..577c1e1ad0510232c1aed93c872d50f37fef790b 100644
--- a/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/repositories/FavoritesRepository.kt
@@ -32,7 +32,7 @@ class FavoritesRepository(override val context: Context?) : Repository<Track, Tr
 
       track.bestUpload()?.let { upload ->
         maybeNormalizeUrl(upload.listen_url)?.let { url ->
-          track.cached = audio.funkwhale.ffa.FFA.get().exoCache.isCached(url, 0, upload.duration * 1000L)
+          track.cached = FFA.get().exoCache.isCached(url, 0, upload.duration * 1000L)
         }
       }
 
diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt
index 1b95516bda468db1a1b3948ecab85d4911277dc1..9a98822a2669d6903060a8f669ebb5d20497feea 100644
--- a/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/repositories/SearchRepository.kt
@@ -33,7 +33,7 @@ class TracksSearchRepository(override val context: Context?, var query: String)
       track.bestUpload()?.let { upload ->
         val url = mustNormalizeUrl(upload.listen_url)
 
-        track.cached = audio.funkwhale.ffa.FFA.get().exoCache.isCached(url, 0, upload.duration * 1000L)
+        track.cached = FFA.get().exoCache.isCached(url, 0, upload.duration * 1000L)
       }
 
       track
diff --git a/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt b/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt
index 6314916c9ab6e67037e8dc187c75fae785253706..6f9b8572248f73d7d885cd3fa091834a72e1cbff 100644
--- a/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/repositories/TracksRepository.kt
@@ -20,7 +20,7 @@ class TracksRepository(override val context: Context?, albumId: Int) : Repositor
 
   companion object {
     fun getDownloadedIds(): List<Int>? {
-      val cursor = audio.funkwhale.ffa.FFA.get().exoDownloadManager.downloadIndex.getDownloads()
+      val cursor = FFA.get().exoDownloadManager.downloadIndex.getDownloads()
       val ids: MutableList<Int> = mutableListOf()
 
       while (cursor.moveToNext()) {
@@ -52,7 +52,7 @@ class TracksRepository(override val context: Context?, albumId: Int) : Repositor
       track.bestUpload()?.let { upload ->
         val url = mustNormalizeUrl(upload.listen_url)
 
-        track.cached = audio.funkwhale.ffa.FFA.get().exoCache.isCached(url, 0, upload.duration * 1000L)
+        track.cached = FFA.get().exoCache.isCached(url, 0, upload.duration * 1000L)
       }
 
       track
diff --git a/app/src/main/java/audio/funkwhale/ffa/utils/Bus.kt b/app/src/main/java/audio/funkwhale/ffa/utils/Bus.kt
index 1254b070fa24ba652cb970801c17b7b73a5244f5..791df86e2ec9a92bc2c8235f4a60c9a95f587bf7 100644
--- a/app/src/main/java/audio/funkwhale/ffa/utils/Bus.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/utils/Bus.kt
@@ -1,5 +1,6 @@
 package audio.funkwhale.ffa.utils
 
+import audio.funkwhale.ffa.FFA
 import com.google.android.exoplayer2.offline.Download
 import com.google.android.exoplayer2.offline.DownloadCursor
 import kotlinx.coroutines.Dispatchers.IO
@@ -70,21 +71,21 @@ sealed class Response {
 object EventBus {
   fun send(event: Event) {
     GlobalScope.launch(IO) {
-      audio.funkwhale.ffa.FFA.get().eventBus.offer(event)
+      FFA.get().eventBus.trySend(event).isSuccess
     }
   }
 
-  fun get() = audio.funkwhale.ffa.FFA.get().eventBus.asFlow()
+  fun get() = FFA.get().eventBus.asFlow()
 }
 
 object CommandBus {
   fun send(command: Command) {
     GlobalScope.launch(IO) {
-      audio.funkwhale.ffa.FFA.get().commandBus.offer(command)
+      FFA.get().commandBus.trySend(command).isSuccess
     }
   }
 
-  fun get() = audio.funkwhale.ffa.FFA.get().commandBus.asFlow()
+  fun get() = FFA.get().commandBus.asFlow()
 }
 
 object RequestBus {
@@ -93,22 +94,22 @@ object RequestBus {
       GlobalScope.launch(IO) {
         request.channel = it
 
-        audio.funkwhale.ffa.FFA.get().requestBus.offer(request)
+        FFA.get().requestBus.trySend(request).isSuccess
       }
     }
   }
 
-  fun get() = audio.funkwhale.ffa.FFA.get().requestBus.asFlow()
+  fun get() = FFA.get().requestBus.asFlow()
 }
 
 object ProgressBus {
   fun send(current: Int, duration: Int, percent: Int) {
     GlobalScope.launch(IO) {
-      audio.funkwhale.ffa.FFA.get().progressBus.send(Triple(current, duration, percent))
+      FFA.get().progressBus.send(Triple(current, duration, percent))
     }
   }
 
-  fun get() = audio.funkwhale.ffa.FFA.get().progressBus.asFlow().conflate()
+  fun get() = FFA.get().progressBus.asFlow().conflate()
 }
 
 suspend inline fun <reified T> Channel<Response>.wait(): T? {