diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/AsyncBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/AsyncBackend.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c14d452887cf91785a089a1af13919c26c18d46d
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/AsyncBackend.kt
@@ -0,0 +1,47 @@
+package de.kuschku.quasseldroid.service
+
+import de.kuschku.libquassel.session.Backend
+import de.kuschku.libquassel.session.SocketAddress
+import de.kuschku.libquassel.util.compatibility.HandlerService
+
+class AsyncBackend(
+  private val handler: HandlerService,
+  private val backend: Backend,
+  private val disconnectCallback: () -> Unit
+) : Backend {
+  override fun updateUserDataAndLogin(user: String, pass: String) {
+    handler.backend {
+      backend.updateUserDataAndLogin(user, pass)
+    }
+  }
+
+  override fun connectUnlessConnected(address: SocketAddress, user: String, pass: String,
+                                      reconnect: Boolean) {
+    handler.backend {
+      backend.connectUnlessConnected(address, user, pass, reconnect)
+    }
+  }
+
+  override fun connect(address: SocketAddress, user: String, pass: String, reconnect: Boolean) {
+    handler.backend {
+      backend.connect(address, user, pass, reconnect)
+    }
+  }
+
+  override fun reconnect() {
+    handler.backend {
+      backend.reconnect()
+    }
+  }
+
+  override fun disconnect(forever: Boolean) {
+    handler.backend {
+      backend.disconnect(forever)
+      if (forever) {
+        disconnectCallback
+      }
+    }
+  }
+
+  override fun sessionManager() = backend.sessionManager()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselBinder.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselBinder.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ce82ee7029e604217074ebcf366afc9f051f3edf
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselBinder.kt
@@ -0,0 +1,6 @@
+package de.kuschku.quasseldroid.service
+
+import android.os.Binder
+import de.kuschku.libquassel.session.Backend
+
+class QuasselBinder(val backend: Backend) : Binder()
diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
index a85ad2860e0a0a53609a1d2f545b70b2661a2d1a..f309458b0d6dbab0180a6cc12f153f3b66c3eba7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
@@ -4,7 +4,6 @@ import android.annotation.SuppressLint
 import android.arch.lifecycle.Observer
 import android.content.*
 import android.net.ConnectivityManager
-import android.os.Binder
 import de.kuschku.libquassel.protocol.ClientData
 import de.kuschku.libquassel.protocol.Protocol
 import de.kuschku.libquassel.protocol.Protocol_Feature
@@ -206,43 +205,7 @@ class QuasselService : DaggerLifecycleService(),
 
   private val handlerService = AndroidHandlerService()
 
-  private val asyncBackend = object : Backend {
-    override fun updateUserDataAndLogin(user: String, pass: String) {
-      handlerService.backend {
-        backendImplementation.updateUserDataAndLogin(user, pass)
-      }
-    }
-
-    override fun connectUnlessConnected(address: SocketAddress, user: String, pass: String,
-                                        reconnect: Boolean) {
-      handlerService.backend {
-        backendImplementation.connectUnlessConnected(address, user, pass, reconnect)
-      }
-    }
-
-    override fun connect(address: SocketAddress, user: String, pass: String, reconnect: Boolean) {
-      handlerService.backend {
-        backendImplementation.connect(address, user, pass, reconnect)
-      }
-    }
-
-    override fun reconnect() {
-      handlerService.backend {
-        backendImplementation.reconnect()
-      }
-    }
-
-    override fun disconnect(forever: Boolean) {
-      handlerService.backend {
-        backendImplementation.disconnect(forever)
-        if (forever) {
-          stopSelf()
-        }
-      }
-    }
-
-    override fun sessionManager() = backendImplementation.sessionManager()
-  }
+  private val asyncBackend = AsyncBackend(handlerService, backendImplementation, ::stopSelf)
 
   @Inject
   lateinit var database: QuasselDatabase
@@ -350,5 +313,19 @@ class QuasselService : DaggerLifecycleService(),
     return QuasselBinder(asyncBackend)
   }
 
-  class QuasselBinder(val backend: Backend) : Binder()
+  companion object {
+    fun launch(
+      context: Context,
+      disconnect: Boolean? = null
+    ) = context.startService(intent(context, disconnect))
+
+    fun intent(
+      context: Context,
+      disconnect: Boolean? = null
+    ) = Intent(context, QuasselService::class.java).apply {
+      if (disconnect != null) {
+        putExtra("disconnect", disconnect)
+      }
+    }
+  }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
index 67b2adf824b0676ee81c65f16d6fe40b5fc3986f..d6ca32c1cc26db02341c1fb691a3f25a0df4dfc7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
@@ -406,11 +406,11 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
       true
     }
     R.id.action_core_settings   -> {
-      startActivity(Intent(this, CoreSettingsActivity::class.java))
+      CoreSettingsActivity.launch(this)
       true
     }
     R.id.action_client_settings -> {
-      startActivity(Intent(this, AppSettingsActivity::class.java))
+      AppSettingsActivity.launch(this)
       true
     }
     R.id.action_disconnect      -> {
@@ -439,4 +439,26 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
       putBoolean(Keys.Status.reconnect, false)
     }
   }
+
+  companion object {
+    fun launch(
+      context: Context,
+      sharedText: CharSequence? = null,
+      bufferId: Int? = null
+    ) = context.startActivity(intent(context, sharedText, bufferId))
+
+    fun intent(
+      context: Context,
+      sharedText: CharSequence? = null,
+      bufferId: Int? = null
+    ) = Intent(context, ChatActivity::class.java).apply {
+      if (sharedText != null) {
+        type = "text/plain"
+        putExtra(Intent.EXTRA_TEXT, sharedText)
+      }
+      if (bufferId != null) {
+        putExtra("bufferId", bufferId)
+      }
+    }
+  }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
index 68e1d88b3ae52294f12badaa8dd47adb104e336d..845049650b35b65044c78022057737167ce27c81 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
@@ -1,7 +1,6 @@
 package de.kuschku.quasseldroid.ui.chat
 
 import android.arch.lifecycle.Observer
-import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -100,16 +99,12 @@ class ToolbarFragment : ServiceBoundFragment() {
       viewModel.bufferData.value?.info?.let { info ->
         when (info.type.toInt()) {
           BufferInfo.Type.QueryBuffer.toInt()   -> {
-            val intent = Intent(requireContext(), UserInfoActivity::class.java)
-            intent.putExtra("bufferId", info.bufferId)
-            intent.putExtra("openBuffer", true)
-            startActivity(intent)
+            UserInfoActivity.launch(requireContext(), bufferId = info.bufferId, openBuffer = true)
           }
           BufferInfo.Type.ChannelBuffer.toInt() -> {
-            val intent = Intent(requireContext(), ChannelInfoActivity::class.java)
-            intent.putExtra("bufferId", info.bufferId)
-            intent.putExtra("openBuffer", true)
-            startActivity(intent)
+            ChannelInfoActivity.launch(requireContext(),
+                                       bufferId = info.bufferId,
+                                       openBuffer = true)
           }
           else                                  -> null
         }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt
index c64c7f76221cd5c411f74144b4c9d3cb779eb0ca..8904d4ae1e909a1ffdb7704ad3459c4f33dd92ab 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt
@@ -1,5 +1,25 @@
 package de.kuschku.quasseldroid.ui.chat.info.channel
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class ChannelInfoActivity : SettingsActivity(ChannelInfoFragment())
+class ChannelInfoActivity : SettingsActivity(ChannelInfoFragment()) {
+  companion object {
+    fun launch(
+      context: Context,
+      openBuffer: Boolean,
+      bufferId: Int
+    ) = context.startActivity(intent(context, openBuffer, bufferId))
+
+    fun intent(
+      context: Context,
+      openBuffer: Boolean,
+      bufferId: Int
+    ) = Intent(context, ChannelInfoActivity::class.java).apply {
+      putExtra("bufferId", bufferId)
+      putExtra("openBuffer", openBuffer)
+    }
+  }
+}
+
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt
index 26c968fe7bc1bcad090de32435e206e49520cb29..87b4a5f353bfe640b7fd53048b1a7c949d199dca 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt
@@ -1,7 +1,6 @@
 package de.kuschku.quasseldroid.ui.chat.info.channel
 
 import android.arch.lifecycle.Observer
-import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -74,9 +73,7 @@ class ChannelInfoFragment : ServiceBoundFragment() {
         topic.text = contentFormatter.format(requireContext(), channel.topic())
 
         actionEditTopic.setOnClickListener {
-          val intent = Intent(requireContext(), TopicActivity::class.java)
-          intent.putExtra("buffer", arguments?.getInt("bufferId") ?: -1)
-          startActivity(intent)
+          TopicActivity.launch(requireContext(), buffer = arguments?.getInt("bufferId") ?: -1)
         }
 
         actionPart.setOnClickListener {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt
index 3cc0d54c02584b3c1a27ff22f53cb75d6ab105b2..d26e2b3c90c30a975a3a1e9ea0e6177ec2d0517d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoActivity.kt
@@ -1,5 +1,38 @@
 package de.kuschku.quasseldroid.ui.chat.info.user
 
+import android.content.Context
+import android.content.Intent
+import de.kuschku.libquassel.protocol.BufferId
+import de.kuschku.libquassel.protocol.NetworkId
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class UserInfoActivity : SettingsActivity(UserInfoFragment())
+class UserInfoActivity : SettingsActivity(UserInfoFragment()) {
+  companion object {
+    fun launch(
+      context: Context,
+      openBuffer: Boolean,
+      bufferId: BufferId? = null,
+      nick: String? = null,
+      networkId: NetworkId? = null
+    ) = context.startActivity(intent(context, openBuffer, bufferId, nick, networkId))
+
+    fun intent(
+      context: Context,
+      openBuffer: Boolean,
+      bufferId: BufferId? = null,
+      nick: String? = null,
+      networkId: NetworkId? = null
+    ) = Intent(context, UserInfoActivity::class.java).apply {
+      putExtra("openBuffer", openBuffer)
+      if (bufferId != null) {
+        putExtra("bufferId", bufferId)
+      }
+      if (nick != null) {
+        putExtra("nick", nick)
+      }
+      if (networkId != null) {
+        putExtra("networkId", networkId)
+      }
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt
index 72622dfaca4da54f0b4bb19ea3417cca8de5871e..9bc92d7103fe6bab2efc53f44e1726af211f4c2a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt
@@ -1,7 +1,6 @@
 package de.kuschku.quasseldroid.ui.chat.info.user
 
 import android.arch.lifecycle.Observer
-import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -162,10 +161,8 @@ class UserInfoFragment : ServiceBoundFragment() {
                 type = Buffer_Type.of(Buffer_Type.QueryBuffer)
               )
 
-              val intent = Intent(requireContext(), ChatActivity::class.java)
               if (info != null) {
-                intent.putExtra("bufferId", info.bufferId)
-                startActivity(intent)
+                ChatActivity.launch(requireContext(), bufferId = info.bufferId)
               } else {
                 viewModel.allBuffers.map {
                   listOfNotNull(it.find {
@@ -175,8 +172,7 @@ class UserInfoFragment : ServiceBoundFragment() {
                   it.isNotEmpty()
                 }.firstElement().toLiveData().observe(this, Observer {
                   it?.firstOrNull()?.let { info ->
-                    intent.putExtra("bufferId", info.bufferId)
-                    startActivity(intent)
+                    ChatActivity.launch(requireContext(), bufferId = info.bufferId)
                   }
                 })
 
@@ -209,10 +205,7 @@ class UserInfoFragment : ServiceBoundFragment() {
         }
 
         actionMention.setOnClickListener {
-          val intent = Intent(requireContext(), ChatActivity::class.java)
-          intent.type = "text/plain"
-          intent.putExtra(Intent.EXTRA_TEXT, "${user.nick()}: ")
-          startActivity(intent)
+          ChatActivity.launch(requireContext(), sharedText = "${user.nick()}: ")
         }
         actionMention.visibleIf(arguments?.getBoolean("openBuffer") == false)
       }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
index c30714fa1714613539e7015ef5c9862d6d788617..f4c95212b34b69cc19c3e4138492ed3ce8197e1c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
@@ -200,10 +200,7 @@ class MessageListFragment : ServiceBoundFragment() {
     }
     if (autoCompleteSettings.senderDoubleClick)
       adapter.setOnDoubleClickListener { msg ->
-        val intent = Intent(requireContext(), ChatActivity::class.java)
-        intent.type = "text/plain"
-        intent.putExtra(Intent.EXTRA_TEXT, "${HostmaskHelper.nick(msg.sender)}: ")
-        startActivity(intent)
+        ChatActivity.launch(requireContext(), sharedText = "${HostmaskHelper.nick(msg.sender)}: ")
       }
     adapter.setOnUrlLongClickListener(LinkLongClickMenuHelper())
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
index 7c951159225201c5ed77d0b292872ce7c7682d18..3bfae2fa0befbc0067874fe99bfd7e403030f0cd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
@@ -1,7 +1,6 @@
 package de.kuschku.quasseldroid.ui.chat.nicks
 
 import android.arch.lifecycle.Observer
-import android.content.Intent
 import android.graphics.Typeface
 import android.os.Bundle
 import android.support.v7.widget.DefaultItemAnimator
@@ -157,18 +156,17 @@ class NickListFragment : ServiceBoundFragment() {
   private val clickListener: ((String) -> Unit)? = { nick ->
     viewModel.session.value?.orNull()?.bufferSyncer?.let { bufferSyncer ->
       viewModel.bufferData.value?.info?.let(BufferInfo::networkId)?.let { networkId ->
-        val intent = Intent(requireContext(), UserInfoActivity::class.java)
-        bufferSyncer.find(
-          bufferName = nick,
-          networkId = networkId,
-          type = Buffer_Type.of(Buffer_Type.QueryBuffer)
-        )?.let {
-          intent.putExtra("bufferId", it.bufferId)
-        }
-        intent.putExtra("nick", nick)
-        intent.putExtra("networkId", networkId)
-        intent.putExtra("openBuffer", false)
-        startActivity(intent)
+        UserInfoActivity.launch(
+          requireContext(),
+          openBuffer = false,
+          bufferId = bufferSyncer.find(
+            bufferName = nick,
+            networkId = networkId,
+            type = Buffer_Type.of(Buffer_Type.QueryBuffer)
+          )?.let(BufferInfo::bufferId),
+          nick = nick,
+          networkId = networkId
+        )
       }
     }
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt
index 83fb366f0ff367ff593379fa8c03f0c74ec53524..7d3c08cd858fb523fa0c40270fec8d6f0ffc087e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt
@@ -1,5 +1,22 @@
 package de.kuschku.quasseldroid.ui.chat.topic
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class TopicActivity : SettingsActivity(TopicFragment())
+class TopicActivity : SettingsActivity(TopicFragment()) {
+  companion object {
+    fun launch(
+      context: Context,
+      buffer: Int
+    ) = context.startActivity(intent(context, buffer))
+
+    fun intent(
+      context: Context,
+      buffer: Int
+    ) = Intent(context, TopicActivity::class.java).apply {
+      putExtra("buffer", buffer)
+    }
+  }
+}
+
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt
index 8997104a51be1d8f632922c46252c952bdb0c820..c13a3762c6aa02d7ee4549978f8e6f212d25b399 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsActivity.kt
@@ -1,5 +1,12 @@
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class AboutSettingsActivity : SettingsActivity(AboutSettingsFragment())
\ No newline at end of file
+class AboutSettingsActivity : SettingsActivity(AboutSettingsFragment()) {
+  companion object {
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, AboutSettingsActivity::class.java)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt
index 6cc525cf03cf3a642f2f7468f454739ce3241d78..28c092fc8996078d7311d802d2c85b8533dd5862 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/LibraryAdapter.kt
@@ -1,6 +1,5 @@
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.content.Intent
 import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
@@ -40,10 +39,9 @@ class LibraryAdapter(private val libraries: List<Library>) :
       ButterKnife.bind(this, itemView)
       itemView.setOnClickListener {
         this.item?.run {
-          val intent = Intent(itemView.context, LicenseSettingsActivity::class.java)
-          intent.putExtra("license_name", license.fullName)
-          intent.putExtra("license_text", license.text)
-          itemView.context.startActivity(intent)
+          LicenseSettingsActivity.launch(itemView.context,
+                                         license_name = license.fullName,
+                                         license_text = license.text)
         }
       }
     }
@@ -56,4 +54,4 @@ class LibraryAdapter(private val libraries: List<Library>) :
       this.license.text = item.license.shortName
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt
index 5bb8ffefa471b0449aa37323f1f12f24672f6a1a..36831b076818482ea4c2d28cc66ea7675b885781 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsActivity.kt
@@ -1,5 +1,6 @@
 package de.kuschku.quasseldroid.ui.clientsettings.app
 
+import android.content.Context
 import android.content.Intent
 import android.view.Menu
 import android.view.MenuItem
@@ -16,13 +17,18 @@ class AppSettingsActivity : SettingsActivity(AppSettingsFragment()) {
 
   override fun onOptionsItemSelected(item: MenuItem?) = when (item?.itemId) {
     R.id.action_about   -> {
-      startActivity(Intent(applicationContext, AboutSettingsActivity::class.java))
+      AboutSettingsActivity.launch(this)
       true
     }
     R.id.action_crashes -> {
-      startActivity(Intent(applicationContext, CrashSettingsActivity::class.java))
+      CrashSettingsActivity.launch(this)
       true
     }
     else                -> super.onOptionsItemSelected(item)
   }
-}
\ No newline at end of file
+
+  companion object {
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, AppSettingsActivity::class.java)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsActivity.kt
index 4a2be941aae6b5ef00051fe0c86a4a96a24ebdff..6a17c61cc39a0388b5a195752736dd295cffbbca 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsActivity.kt
@@ -1,5 +1,12 @@
 package de.kuschku.quasseldroid.ui.clientsettings.crash
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class CrashSettingsActivity : SettingsActivity(CrashSettingsFragment())
\ No newline at end of file
+class CrashSettingsActivity : SettingsActivity(CrashSettingsFragment()) {
+  companion object {
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, CrashSettingsActivity::class.java)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt
index 79630f68098aaa6ef9987f77c13199d13550705b..8b4d4b60468bba5e6621416b0b8895dd0ef44bd9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsActivity.kt
@@ -1,5 +1,25 @@
 package de.kuschku.quasseldroid.ui.clientsettings.license
 
+import android.content.Context
+import android.content.Intent
+import android.support.annotation.StringRes
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class LicenseSettingsActivity : SettingsActivity(LicenseSettingsFragment())
\ No newline at end of file
+class LicenseSettingsActivity : SettingsActivity(LicenseSettingsFragment()) {
+  companion object {
+    fun launch(
+      context: Context,
+      license_name: String,
+      @StringRes license_text: Int
+    ) = context.startActivity(intent(context, license_name, license_text))
+
+    fun intent(
+      context: Context,
+      license_name: String,
+      @StringRes license_text: Int
+    ) = Intent(context, LicenseSettingsActivity::class.java).apply {
+      putExtra("license_name", license_name)
+      putExtra("license_text", license_text)
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt
index 09f567bbbe630a9314576e73050e2b99bb0c2fc6..e45c520960716deca71ab6e0bc2c6b80292b17e4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsActivity.kt
@@ -1,5 +1,12 @@
 package de.kuschku.quasseldroid.ui.coresettings
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class CoreSettingsActivity : SettingsActivity(CoreSettingsFragment())
\ No newline at end of file
+class CoreSettingsActivity : SettingsActivity(CoreSettingsFragment()) {
+  companion object {
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, CoreSettingsActivity::class.java)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt
index 27f54e693928c97138b09bef1d78c5c38477bb8d..8a800c24deb91e81fcb61cb86b37464e06913efc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt
@@ -1,7 +1,6 @@
 package de.kuschku.quasseldroid.ui.coresettings
 
 import android.arch.lifecycle.Observer
-import android.content.Intent
 import android.os.Bundle
 import android.support.v4.view.ViewCompat
 import android.support.v7.widget.DividerItemDecoration
@@ -60,15 +59,11 @@ class CoreSettingsFragment : ServiceBoundFragment() {
     }
 
     val identityAdapter = SettingsItemAdapter {
-      val intent = Intent(requireContext(), IdentityActivity::class.java)
-      intent.putExtra("identity", it)
-      startActivity(intent)
+      IdentityActivity.launch(requireContext(), identity = it)
     }
 
     val chatListAdapter = SettingsItemAdapter {
-      val intent = Intent(requireContext(), ChatListActivity::class.java)
-      intent.putExtra("chatlist", it)
-      startActivity(intent)
+      ChatListActivity.launch(requireContext(), chatlist = it)
     }
 
     val itemDecoration = DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
@@ -119,11 +114,11 @@ class CoreSettingsFragment : ServiceBoundFragment() {
     })
 
     networkconfig.setOnClickListener {
-      startActivity(Intent(requireContext(), NetworkConfigActivity::class.java))
+      NetworkConfigActivity.launch(requireContext())
     }
 
     ignorelist.setOnClickListener {
-      startActivity(Intent(requireContext(), IgnoreListActivity::class.java))
+      IgnoreListActivity.launch(requireContext())
     }
 
     return view
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt
index 7ebf8cb2adf9d3a5d3a7087144fad15f1aafcc90..45a42e7b2914a3b3d99a4c7783dd58ab6b7232b3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListActivity.kt
@@ -1,5 +1,21 @@
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class ChatListActivity : SettingsActivity(ChatListFragment())
+class ChatListActivity : SettingsActivity(ChatListFragment()) {
+  companion object {
+    fun launch(
+      context: Context,
+      chatlist: Int
+    ) = context.startActivity(intent(context, chatlist))
+
+    fun intent(
+      context: Context,
+      chatlist: Int
+    ) = Intent(context, ChatListActivity::class.java).apply {
+      putExtra("chatlist", chatlist)
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt
index 59cd117fd27d7a258fa3bb004a131c097552398e..b137bf1f61df11bfc653d96d94d4aee8234cdf68 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityActivity.kt
@@ -1,5 +1,22 @@
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
+import android.content.Context
+import android.content.Intent
+import de.kuschku.libquassel.protocol.IdentityId
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class IdentityActivity : SettingsActivity(IdentityFragment())
\ No newline at end of file
+class IdentityActivity : SettingsActivity(IdentityFragment()) {
+  companion object {
+    fun launch(
+      context: Context,
+      identity: IdentityId
+    ) = context.startActivity(intent(context, identity))
+
+    fun intent(
+      context: Context,
+      identity: IdentityId
+    ) = Intent(context, IdentityActivity::class.java).apply {
+      putExtra("identity", identity)
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt
index 1d75e1602ff3d1417f98b2a0e688184c2bc9745c..b8275b5fd314ada6a5d9b95876c7c36f2bf54e86 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemActivity.kt
@@ -1,5 +1,24 @@
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
+import android.content.Context
+import android.content.Intent
+import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class IgnoreItemActivity : SettingsActivity(IgnoreItemFragment())
+class IgnoreItemActivity : SettingsActivity(IgnoreItemFragment()) {
+  companion object {
+    fun launch(
+      context: Context,
+      item: IgnoreListManager.IgnoreListItem? = null
+    ) = context.startActivity(intent(context, item))
+
+    fun intent(
+      context: Context,
+      item: IgnoreListManager.IgnoreListItem? = null
+    ) = Intent(context, IgnoreItemActivity::class.java).apply {
+      if (item != null) {
+        putExtra("item", item)
+      }
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt
index e5effd234ce064451494a3465c4ef93dbb58e0f7..66c55a9b253db1e8f21e4e9bb6a6a949437fbcb7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListActivity.kt
@@ -1,5 +1,12 @@
 package de.kuschku.quasseldroid.ui.coresettings.ignorelist
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class IgnoreListActivity : SettingsActivity(IgnoreListFragment())
+class IgnoreListActivity : SettingsActivity(IgnoreListFragment()) {
+  companion object {
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, IgnoreListActivity::class.java)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt
index ce51560e6c6f027cc03a416909a6eadbe8c6d249..a30ac988769c7376e22ef2afe0e47734034a5a8d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt
@@ -48,8 +48,7 @@ class IgnoreListFragment : SettingsFragment() {
     helper.attachToRecyclerView(list)
 
     add.setOnClickListener {
-      val intent = Intent(requireContext(), IgnoreItemActivity::class.java)
-      startActivityForResult(intent, REQUEST_CREATE_RULE)
+      startActivityForResult(IgnoreItemActivity.intent(requireContext()), REQUEST_CREATE_RULE)
     }
 
     viewModel.ignoreListManager
@@ -68,9 +67,7 @@ class IgnoreListFragment : SettingsFragment() {
   }
 
   fun itemClick(item: IgnoreListManager.IgnoreListItem) {
-    val intent = Intent(requireContext(), IgnoreItemActivity::class.java)
-    intent.putExtra("item", item)
-    startActivityForResult(intent, REQUEST_UPDATE_RULE)
+    startActivityForResult(IgnoreItemActivity.intent(requireContext(), item), REQUEST_UPDATE_RULE)
   }
 
   fun startDrag(holder: IgnoreListAdapter.IgnoreItemViewHolder) = helper.startDrag(holder)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt
index 525bed7365faa1bca511cc61dc469862384f75f7..c7918c176d196053e0d9a6e834bec9e8111bfd15 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigActivity.kt
@@ -1,5 +1,12 @@
 package de.kuschku.quasseldroid.ui.coresettings.networkconfig
 
+import android.content.Context
+import android.content.Intent
 import de.kuschku.quasseldroid.util.ui.SettingsActivity
 
-class NetworkConfigActivity : SettingsActivity(NetworkConfigFragment())
\ No newline at end of file
+class NetworkConfigActivity : SettingsActivity(NetworkConfigFragment()) {
+  companion object {
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, NetworkConfigActivity::class.java)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
index 5dcc3717de495b8c0ecc1cd60936da1b338b6616..02d965a96647d78465324e7e0d94ee808b844d9e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt
@@ -2,6 +2,7 @@ package de.kuschku.quasseldroid.ui.setup.accounts.edit
 
 import android.app.Activity
 import android.content.Context
+import android.content.Intent
 import android.os.Bundle
 import android.support.design.widget.TextInputLayout
 import android.support.v7.app.AlertDialog
@@ -181,4 +182,18 @@ class AccountEditActivity : DaggerAppCompatActivity() {
     }
     else               -> super.onOptionsItemSelected(item)
   }
+
+  companion object {
+    fun launch(
+      context: Context,
+      account: Long
+    ) = context.startActivity(intent(context, account))
+
+    fun intent(
+      context: Context,
+      account: Long
+    ) = Intent(context, AccountEditActivity::class.java).apply {
+      putExtra("account", account)
+    }
+  }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt
index e06e5654103b772dbb3e9f1d4604928466bae54d..0b877d43177f37452b865b5b4e3e2b6b0f7ef662 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionActivity.kt
@@ -2,6 +2,7 @@ package de.kuschku.quasseldroid.ui.setup.accounts.selection
 
 import android.app.Activity
 import android.content.Context
+import android.content.Intent
 import android.content.SharedPreferences
 import android.os.Bundle
 import de.kuschku.quasseldroid.Keys
@@ -12,6 +13,9 @@ class AccountSelectionActivity : SetupActivity() {
   companion object {
     const val REQUEST_CREATE_FIRST = 0
     const val REQUEST_CREATE_NEW = 1
+
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, AccountSelectionActivity::class.java)
   }
 
   override val fragments = listOf(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt
index 741a3aaa52ff1e773a2b0c181792714c6bf28b8a..4d2762f20347d675a606cc274c05690741c1c166 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt
@@ -49,7 +49,7 @@ class AccountSelectionSlide : SlideFragment() {
       override fun onChanged(t: List<AccountDatabase.Account>?) {
         if (t?.isEmpty() != false)
           startActivityForResult(
-            Intent(context, AccountSetupActivity::class.java),
+            AccountSetupActivity.intent(requireContext()),
             REQUEST_CREATE_FIRST
           )
         accountViewModel.accounts.removeObserver(this)
@@ -65,12 +65,10 @@ class AccountSelectionSlide : SlideFragment() {
     accountList.adapter = adapter
 
     adapter.addAddListener {
-      startActivityForResult(Intent(context, AccountSetupActivity::class.java), -1)
+      startActivityForResult(AccountSetupActivity.intent(requireContext()), -1)
     }
     adapter.addEditListener { id ->
-      val intent = Intent(context, AccountEditActivity::class.java)
-      intent.putExtra("account", id)
-      startActivityForResult(intent, REQUEST_CREATE_NEW)
+      startActivityForResult(AccountEditActivity.intent(requireContext(), id), REQUEST_CREATE_NEW)
     }
     adapter.addSelectionListener {
       updateValidity()
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt
index bff708ef26af88bcdecee1661e5d20d709f25847..d70338da7b534c11c9e28e07aa03ffb7ae7793ab 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupActivity.kt
@@ -1,6 +1,8 @@
 package de.kuschku.quasseldroid.ui.setup.accounts.setup
 
 import android.app.Activity
+import android.content.Context
+import android.content.Intent
 import android.os.Bundle
 import de.kuschku.quasseldroid.persistence.AccountDatabase
 import de.kuschku.quasseldroid.ui.setup.SetupActivity
@@ -48,4 +50,9 @@ class AccountSetupActivity : SetupActivity() {
     AccountSetupUserSlide(),
     AccountSetupNameSlide()
   )
+
+  companion object {
+    fun launch(context: Context) = context.startActivity(intent(context))
+    fun intent(context: Context) = Intent(context, AccountSetupActivity::class.java)
+  }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt
index 67fab22bfc5b4f5f65c047a10de2ec9f5f927e0d..4623c8d3b24af5918547ced88b4e0928fabb4eec 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt
@@ -52,14 +52,20 @@ class QuasseldroidNotificationManager(private val context: Context) {
   }
 
   fun notificationBackground(): Handle {
-    val intentOpen = Intent(context.applicationContext, ChatActivity::class.java)
-    intentOpen.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
-    val pendingIntentOpen = PendingIntent.getActivity(context.applicationContext, 0, intentOpen, 0)
+    val pendingIntentOpen = PendingIntent.getActivity(
+      context.applicationContext,
+      0,
+      ChatActivity.intent(context.applicationContext).apply {
+        flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
+      },
+      0
+    )
 
-    val intentDisconnect = Intent(context, QuasselService::class.java)
-    intentDisconnect.putExtra("disconnect", true)
     val pendingIntentDisconnect = PendingIntent.getService(
-      context, 0, intentDisconnect, PendingIntent.FLAG_UPDATE_CURRENT
+      context,
+      0,
+      QuasselService.intent(context.applicationContext, disconnect = true),
+      PendingIntent.FLAG_UPDATE_CURRENT
     )
 
     val notification = NotificationCompat.Builder(
@@ -91,4 +97,4 @@ class QuasseldroidNotificationManager(private val context: Context) {
     val id: Int,
     val builder: NotificationCompat.Builder
   )
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt
index 35a72d7c63337a8855a86dc80c19dfaac96be099..2375ca2a7c6c9f8f9b47afd9f20df23bcf36bb60 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/BackendServiceConnection.kt
@@ -7,6 +7,7 @@ import android.content.ServiceConnection
 import android.os.IBinder
 import de.kuschku.libquassel.session.Backend
 import de.kuschku.libquassel.util.Optional
+import de.kuschku.quasseldroid.service.QuasselBinder
 import de.kuschku.quasseldroid.service.QuasselService
 import io.reactivex.subjects.BehaviorSubject
 
@@ -26,25 +27,25 @@ class BackendServiceConnection : ServiceConnection {
   override fun onServiceConnected(component: ComponentName?, binder: IBinder?) {
     when (component) {
       ComponentName(context, QuasselService::class.java) ->
-        if (binder is QuasselService.QuasselBinder) {
+        if (binder is QuasselBinder) {
           backend.onNext(Optional.of(binder.backend))
         }
     }
   }
 
-  fun start(intent: Intent = Intent(context, QuasselService::class.java)) {
+  fun start(intent: Intent = QuasselService.intent(context!!)) {
     context?.startService(intent)
   }
 
-  fun bind(intent: Intent = Intent(context, QuasselService::class.java), flags: Int = 0) {
+  fun bind(intent: Intent = QuasselService.intent(context!!), flags: Int = 0) {
     context?.bindService(intent, this, flags)
   }
 
-  fun stop(intent: Intent = Intent(context, QuasselService::class.java)) {
+  fun stop(intent: Intent = QuasselService.intent(context!!)) {
     context?.stopService(intent)
   }
 
   fun unbind() {
     context?.unbindService(this)
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
index a98089d8892b393997f5c9dd4fcd13da4b408aa2..2fbed102af8580439342aef1091bcbc75927ad36 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
@@ -140,9 +140,7 @@ abstract class ServiceBoundActivity : AppCompatActivity(),
     if (!reconnect || !accountIdValid) {
 
       if (!startedSelection) {
-        startActivityForResult(
-          Intent(this, AccountSelectionActivity::class.java), REQUEST_SELECT_ACCOUNT
-        )
+        startActivityForResult(AccountSelectionActivity.intent(this), REQUEST_SELECT_ACCOUNT)
         startedSelection = true
       }
     } else {