diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 14d0aad908ad778d352b636de229dd240f7e6a44..ee1008f2c035446b5e0d2544b793295da903bf6c 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -29,12 +29,9 @@
           <entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.20/c6761d7805b5312302f2bbd78cda68c976ce0c70/kotlin-stdlib-common-1.4.20.jar" />
           <entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
         </processorPath>
-        <module name="briar-desktop.bramble-core.test" />
-        <module name="briar-desktop.bramble-java.test" />
-        <module name="briar-desktop.briar-core.main" />
-        <module name="briar-desktop.briar-core.test" />
-        <module name="briar-desktop.bramble-java.main" />
-        <module name="briar-desktop.bramble-core.main" />
+        <module name="briar-desktop.bramble-java" />
+        <module name="briar-desktop.briar-core" />
+        <module name="briar-desktop.bramble-core" />
       </profile>
     </annotationProcessing>
     <bytecodeTargetLevel target="1.8">
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt b/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt
index 252c2b6080d0b3ad884ec8640dba4dbbc1f13f8f..cf2856e84f4ee913d46954beec2514fc34a887ef 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt
@@ -21,10 +21,12 @@ package org.briarproject.briar.desktop
 import dagger.Component
 import org.briarproject.bramble.BrambleCoreEagerSingletons
 import org.briarproject.bramble.BrambleCoreModule
+import org.briarproject.bramble.api.event.EventExecutor
 import org.briarproject.briar.BriarCoreEagerSingletons
 import org.briarproject.briar.BriarCoreModule
 import org.briarproject.briar.desktop.ui.BriarUi
 import java.security.SecureRandom
+import java.util.concurrent.Executor
 import javax.inject.Singleton
 
 @Component(
@@ -40,4 +42,7 @@ internal interface BriarDesktopApp : BrambleCoreEagerSingletons, BriarCoreEagerS
     fun getBriarUi(): BriarUi
 
     fun getSecureRandom(): SecureRandom
+
+    @EventExecutor
+    fun getEventExecutor(): Executor
 }
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
index 013368fba8ffaf403bfc31049cdb0df5b1fa6e94..685355a6788bb254a91b9d94229f1d2fe8188d4d 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
@@ -51,7 +51,8 @@ import java.util.logging.Level.INFO
 import java.util.logging.Level.WARNING
 
 @NonNls
-private val DEFAULT_DATA_DIR = getProperty("user.home") + separator + ".briar" + separator + "desktop"
+private val DEFAULT_DATA_DIR =
+    getProperty("user.home") + separator + ".briar" + separator + "desktop"
 
 private class Main : CliktCommand(
     name = "briar-desktop", // NON-NLS
@@ -96,7 +97,8 @@ private class Main : CliktCommand(
 
         LogUtils.setupLogging(level)
 
-        val buildTime = Instant.ofEpochMilli(BuildData.GIT_TIME).atZone(ZoneId.systemDefault()).toLocalDateTime()
+        val buildTime = Instant.ofEpochMilli(BuildData.GIT_TIME).atZone(ZoneId.systemDefault())
+            .toLocalDateTime()
         val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") // NON-NLS
         LOG.i { "This is briar-desktop version ${BuildData.VERSION}" }
         LOG.i { "Build info:" }
@@ -114,6 +116,19 @@ private class Main : CliktCommand(
         BrambleCoreEagerSingletons.Helper.injectEagerSingletons(app)
         BriarCoreEagerSingletons.Helper.injectEagerSingletons(app)
 
+        val eventExecutor = app.getEventExecutor()
+        Thread {
+            while (true) {
+                LOG.i { "Background tick" }
+                eventExecutor.execute { LOG.i { "Foreground tick " } }
+                try {
+                    Thread.sleep(1000)
+                } catch (ignored: InterruptedException) {
+                    break
+                }
+            }
+        }.start()
+
         application {
             app.getBriarUi().start {
                 app.getBriarUi().stop()