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 de0b6ca40f6719639f960545d0eafe3ba7599186..0c38ca0e057198616c50bb7faab7868e1bc746a0 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
@@ -10,6 +10,9 @@ import android.os.Bundle
 import android.os.PersistableBundle
 import android.support.v4.widget.DrawerLayout
 import android.support.v7.app.ActionBarDrawerToggle
+import android.support.v7.widget.DefaultItemAnimator
+import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
 import android.support.v7.widget.Toolbar
 import android.text.Html
 import android.view.*
@@ -32,6 +35,7 @@ import de.kuschku.quasseldroid.persistence.AccountDatabase
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
 import de.kuschku.quasseldroid.settings.MessageSettings
 import de.kuschku.quasseldroid.settings.Settings
+import de.kuschku.quasseldroid.ui.chat.input.AutoCompleteAdapter
 import de.kuschku.quasseldroid.ui.chat.input.ChatlineFragment
 import de.kuschku.quasseldroid.ui.clientsettings.app.AppSettingsActivity
 import de.kuschku.quasseldroid.ui.coresettings.CoreSettingsActivity
@@ -58,6 +62,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
   @BindView(R.id.editor_panel)
   lateinit var editorPanel: SlidingUpPanelLayout
 
+  @BindView(R.id.autocomplete_list)
+  lateinit var autoCompleteList: RecyclerView
+
   @Inject
   lateinit var database: QuasselDatabase
 
@@ -127,6 +134,18 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
       }
     })
 
+    if (autoCompleteSettings.prefix || autoCompleteSettings.auto) {
+      chatlineFragment?.let {
+        val autocompleteAdapter = AutoCompleteAdapter(messageSettings, it.chatline::autoComplete)
+        autoCompleteList.layoutManager = LinearLayoutManager(it.activity)
+        autoCompleteList.itemAnimator = DefaultItemAnimator()
+        autoCompleteList.adapter = autocompleteAdapter
+        it.autoCompleteHelper.setDataListener {
+          autocompleteAdapter.submitList(it)
+        }
+      }
+    }
+
     viewModel.errors.observe(this, Observer { error ->
       error?.let {
         when (it) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
index cebc155c413c7cc0f85627bb225d280957b5ca47..58e2460de41f3a35a07ec044805c8051dca060d3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
@@ -48,6 +48,9 @@ class ChatlineFragment : ServiceBoundFragment() {
   @BindView(R.id.history_panel)
   lateinit var historyPanel: SlidingUpPanelLayout
 
+  @BindView(R.id.autocomplete_list_expanded)
+  lateinit var autoCompleteList: RecyclerView
+
   @Inject
   lateinit var autoCompleteSettings: AutoCompleteSettings
 
@@ -65,6 +68,8 @@ class ChatlineFragment : ServiceBoundFragment() {
 
   lateinit var editorHelper: EditorHelper
 
+  lateinit var autoCompleteHelper: AutoCompleteHelper
+
   val panelSlideListener = object : SlidingUpPanelLayout.PanelSlideListener {
     override fun onPanelSlide(panel: View?, slideOffset: Float) = Unit
 
@@ -84,7 +89,7 @@ class ChatlineFragment : ServiceBoundFragment() {
     val editorViewModel = ViewModelProviders.of(this).get(EditorViewModel::class.java)
     editorViewModel.quasselViewModel.onNext(viewModel)
 
-    val autoCompleteHelper = AutoCompleteHelper(
+    autoCompleteHelper = AutoCompleteHelper(
       requireActivity(),
       autoCompleteSettings,
       messageSettings,
@@ -104,15 +109,12 @@ class ChatlineFragment : ServiceBoundFragment() {
     editorViewModel.lastWord.onNext(editorHelper.lastWord)
 
     if (autoCompleteSettings.prefix || autoCompleteSettings.auto) {
-      val autoCompleteLists = listOfNotNull<RecyclerView>(
-        view.findViewById(R.id.autocomplete_list),
-        view.findViewById(R.id.autocomplete_list_expanded)
-      )
       val autocompleteAdapter = AutoCompleteAdapter(messageSettings, chatline::autoComplete)
-      for (autoCompleteList in autoCompleteLists) {
-        autoCompleteList.layoutManager = LinearLayoutManager(activity)
-        autoCompleteList.itemAnimator = DefaultItemAnimator()
-        autoCompleteList.adapter = autocompleteAdapter
+      autoCompleteList.layoutManager = LinearLayoutManager(activity)
+      autoCompleteList.itemAnimator = DefaultItemAnimator()
+      autoCompleteList.adapter = autocompleteAdapter
+      autoCompleteHelper.setDataListener {
+        autocompleteAdapter.submitList(it)
       }
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
index 5c7d3ac8a6a192fd923a0a75580b5f5cdb551c64..b72d594e0eac30e292521f6a17bc55a1f504dc7a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
@@ -31,6 +31,9 @@ class TopicFragment : SettingsFragment() {
   @BindView(R.id.formatting_toolbar)
   lateinit var toolbar: RichToolbar
 
+  @BindView(R.id.autocomplete_list_expanded)
+  lateinit var autoCompleteList: RecyclerView
+
   @Inject
   lateinit var autoCompleteSettings: AutoCompleteSettings
 
@@ -76,18 +79,15 @@ class TopicFragment : SettingsFragment() {
     editorViewModel.lastWord.onNext(editorHelper.lastWord)
 
     if (autoCompleteSettings.prefix || autoCompleteSettings.auto) {
-      val autoCompleteLists = listOfNotNull<RecyclerView>(
-        view.findViewById(R.id.autocomplete_list)
-      )
       val autocompleteAdapter = AutoCompleteAdapter(messageSettings, chatline::autoComplete)
-      for (autoCompleteList in autoCompleteLists) {
-        autoCompleteList.layoutManager = LinearLayoutManager(activity)
-        autoCompleteList.itemAnimator = DefaultItemAnimator()
-        autoCompleteList.adapter = autocompleteAdapter
+      autoCompleteList.layoutManager = LinearLayoutManager(activity)
+      autoCompleteList.itemAnimator = DefaultItemAnimator()
+      autoCompleteList.adapter = autocompleteAdapter
+      autoCompleteHelper.setDataListener {
+        autocompleteAdapter.submitList(it)
       }
     }
 
-
     val bufferId = arguments?.getInt("buffer", -1) ?: -1
     viewModel.buffer.onNext(bufferId)
     viewModel.bufferData.filter {
diff --git a/app/src/main/res/values-de/strings_preferences.xml b/app/src/main/res/values-de/strings_preferences.xml
index 48b0262f4a8d0a2ec2ad46fc5dc895d285536bdf..f3958451b87c3e74e49c767434bac27609a6df75 100644
--- a/app/src/main/res/values-de/strings_preferences.xml
+++ b/app/src/main/res/values-de/strings_preferences.xml
@@ -43,7 +43,7 @@
   <string name="preference_show_prefix_entry_highest">Höchsten Modus</string>
   <string name="preference_show_prefix_entry_none">Keine</string>
 
-  <string name="preference_hostmask_actions_title">Hostmaske</string>
+  <string name="preference_hostmask_actions_title">Hostmaske in Aktionen</string>
   <string name="preference_hostmask_actions_summary">Zeigt Ident und Host in Betreten/Verlassen-Nachrichten</string>
 
   <string name="preference_hostmask_plain_title">Hostmaske</string>
diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml
index 43ba210ddc77f4239ec27c9f0cbcd37c7fb93389..b3b15b6b1146df832415707ef04be99d6b732b0f 100644
--- a/app/src/main/res/values/strings_preferences.xml
+++ b/app/src/main/res/values/strings_preferences.xml
@@ -99,8 +99,8 @@
     <item>NONE</item>
   </string-array>
 
-  <string name="preference_hostmask_actions_key" translatable="false">hostmaskactions_</string>
-  <string name="preference_hostmask_actions_title">Show Hostmask</string>
+  <string name="preference_hostmask_actions_key" translatable="false">hostmask_actions</string>
+  <string name="preference_hostmask_actions_title">Show Hostmask in actions</string>
   <string name="preference_hostmask_actions_summary">Display the full nick!ident@host in join/part/quit messages</string>
 
   <string name="preference_hostmask_plain_key" translatable="false">hostmask_plain</string>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index be8c74d5fb2bbd08c6ec858b17bbde10aa6a5786..5300c073475fd8b8a5962ddd583a94614711de28 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -84,11 +84,13 @@
       android:defaultValue="false"
       android:dependency="@string/preference_nicks_on_new_line_key"
       android:key="@string/preference_hostmask_plain_key"
+      android:summary="@string/preference_hostmask_plain_summary"
       android:title="@string/preference_hostmask_plain_title" />
 
     <SwitchPreference
       android:defaultValue="false"
       android:key="@string/preference_hostmask_actions_key"
+      android:summary="@string/preference_hostmask_actions_summary"
       android:title="@string/preference_hostmask_actions_title" />
 
     <SwitchPreference
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt
index 54f9ab51e3df93a55a7bb1b782b45568376d7493..c8b76ac359e0b4cc2b4c1e3ed92eeb6a5fc514be 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt
@@ -207,6 +207,32 @@ class BufferSyncer constructor(
     live_highlightCounts.onNext(_highlightCounts)
   }
 
+  fun all(
+    bufferName: String? = null,
+    bufferId: BufferId? = null,
+    networkId: NetworkId? = null,
+    type: Buffer_Types? = null,
+    groupId: Int? = null
+  ) = _bufferInfos.values.filter {
+    bufferId == null || it.bufferId == bufferId
+  }.filter {
+    networkId == null || it.networkId == networkId
+  }.filter {
+    type == null || it.type == type
+  }.filter {
+    groupId == null || it.groupId == groupId
+  }.filter {
+    bufferName == null || it.bufferName == bufferName
+  }
+
+  fun find(
+    bufferName: String? = null,
+    bufferId: BufferId? = null,
+    networkId: NetworkId? = null,
+    type: Buffer_Types? = null,
+    groupId: Int? = null
+  ) = all(bufferName, bufferId, networkId, type, groupId).firstOrNull()
+
   private val _lastSeenMsg: MutableMap<BufferId, MsgId> = mutableMapOf()
   private val live_lastSeenMsg = BehaviorSubject.createDefault(mapOf<BufferId, MsgId>())