diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
index 0294711ae3a2fbac99735a0be617b6f25aa9abd5..c064b344845ea3b689773993f5195e942f892ded 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
@@ -494,13 +494,15 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       .mapMap(BufferViewConfig::showSearch)
       .mapOrElse(false)
 
-    combineLatest(viewModel.bufferSearchTemporarilyVisible, bufferSearchPermanentlyVisible)
+    combineLatest(viewModel.bufferSearchTemporarilyVisible.distinctUntilChanged(),
+                  bufferSearchPermanentlyVisible)
       .toLiveData().observe(this, Observer { (temporarily, permanently) ->
         val visible = temporarily || permanently
 
         val menuItem = chatListToolbar.menu.findItem(R.id.action_search)
         menuItem.isVisible = !permanently
         if (permanently) menuItem.isChecked = false
+        else menuItem.isChecked = temporarily
 
         bufferSearchContainer.visibleIf(visible)
         if (!visible) bufferSearch.setText("")
@@ -516,6 +518,8 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) = Unit
     })
 
+    bufferSearchClear.setTooltip()
+
     bufferSearchClear.setOnClickListener {
       bufferSearch.setText("")
     }
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 adbb64e9abbec12872cce22e72c4fa8e56485f14..07551532306bc284b71c56a44d27a42003935654 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
@@ -157,6 +157,7 @@ class ChatlineFragment : ServiceBoundFragment() {
       editorHelper.replaceText(text)
       historyBottomSheet.state = BottomSheetBehavior.STATE_HIDDEN
     }
+    close.setTooltip()
     close.setOnClickListener {
       historyBottomSheet.state = BottomSheetBehavior.STATE_HIDDEN
     }
@@ -204,6 +205,7 @@ class ChatlineFragment : ServiceBoundFragment() {
     send.setOnClickListener { send() }
     send.setTooltip()
 
+    tabComplete.setTooltip()
     tabComplete.visibleIf(autoCompleteSettings.button)
     tabComplete.setOnClickListener {
       autoCompleteHelper.autoComplete()
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt
index ecb0c1766d484cd88d3e383dd2b5166cf735d043..b64c470a5162bfe8945a0e4257a0392f6ef29caa 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt
@@ -26,12 +26,12 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
 import androidx.recyclerview.widget.DiffUtil
-import androidx.recyclerview.widget.ListAdapter
 import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.malheur.data.Report
 import de.kuschku.quasseldroid.R
+import de.kuschku.quasseldroid.util.lists.ListAdapter
 import org.threeten.bp.Instant
 import org.threeten.bp.ZoneId
 import org.threeten.bp.format.DateTimeFormatter
@@ -45,6 +45,15 @@ class CrashAdapter : ListAdapter<Pair<Report, Uri>, CrashAdapter.CrashViewHolder
       oldItem == newItem
   }
 ) {
+  private var onUpdateListener: ((List<Pair<Report, Uri>>) -> Unit)? = null
+  fun setOnUpdateListener(listener: ((List<Pair<Report, Uri>>) -> Unit)?) {
+    onUpdateListener = listener
+  }
+
+  override fun onUpdateFinished(list: List<Pair<Report, Uri>>) {
+    onUpdateListener?.invoke(list)
+  }
+
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = CrashViewHolder(
     LayoutInflater.from(parent.context).inflate(R.layout.widget_crash, parent, false)
   )
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt
index 8a6651949cb4647ed5e7d0ed15a0c04a540f4213..4ebec0f583473c835fbb284aaa1a0e48bb7ade13 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragment.kt
@@ -24,6 +24,7 @@ import android.os.Bundle
 import android.os.Handler
 import android.os.HandlerThread
 import android.view.*
+import android.widget.TextView
 import androidx.core.content.FileProvider
 import androidx.core.view.ViewCompat
 import androidx.recyclerview.widget.DividerItemDecoration
@@ -37,6 +38,7 @@ import de.kuschku.malheur.data.Report
 import de.kuschku.quasseldroid.BuildConfig
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.util.helper.fromJson
+import de.kuschku.quasseldroid.util.helper.visibleIf
 import java.io.File
 import javax.inject.Inject
 
@@ -44,6 +46,9 @@ class CrashFragment : DaggerFragment() {
   @BindView(R.id.list)
   lateinit var list: RecyclerView
 
+  @BindView(R.id.crashes_empty)
+  lateinit var crashesEmpty: TextView
+
   private lateinit var handlerThread: HandlerThread
   private lateinit var handler: Handler
 
@@ -80,6 +85,10 @@ class CrashFragment : DaggerFragment() {
     list.addItemDecoration(DividerItemDecoration(context, LinearLayoutManager.VERTICAL))
     ViewCompat.setNestedScrollingEnabled(list, false)
 
+    adapter?.setOnUpdateListener {
+      crashesEmpty.visibleIf(it.isEmpty())
+    }
+
     handler.post {
       val crashDir = this.crashDir
       val gson = this.gson
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
index d27f63c2d8514c8540da693f2d67616d31550947..2e64005e9bba2708505f5026fd5a7b8ff5a1e8a0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
@@ -29,6 +29,7 @@ import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
+import de.kuschku.quasseldroid.util.helper.setTooltip
 import de.kuschku.quasseldroid.util.helper.visibleIf
 
 class WhitelistCertificateAdapter :
@@ -114,6 +115,7 @@ class WhitelistCertificateAdapter :
           clickListener?.invoke(it)
         }
       }
+      delete.setTooltip()
     }
 
     fun bind(item: QuasselDatabase.SslValidityWhitelistEntry) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
index 262d08e6f5d66c79e57a3e8b7a975f86b787c973..9f48103209db59c1fc0ef4d0f8478ccb2a454561 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
@@ -29,6 +29,7 @@ import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
+import de.kuschku.quasseldroid.util.helper.setTooltip
 
 class WhitelistHostnameAdapter :
   RecyclerView.Adapter<WhitelistHostnameAdapter.WhitelistItemViewHolder>() {
@@ -108,6 +109,7 @@ class WhitelistHostnameAdapter :
           clickListener?.invoke(it)
         }
       }
+      delete.setTooltip()
     }
 
     fun bind(item: QuasselDatabase.SslHostnameWhitelistEntry) {
diff --git a/app/src/main/res/layout/fragment_chat_list.xml b/app/src/main/res/layout/fragment_chat_list.xml
index 8c8a2b35435400aaead1c462f2c2eb7e2f5f8f14..a30ac1b15fcf3781ce2eb8b9cff675dd1fd3f71b 100644
--- a/app/src/main/res/layout/fragment_chat_list.xml
+++ b/app/src/main/res/layout/fragment_chat_list.xml
@@ -32,8 +32,7 @@
     <androidx.appcompat.widget.Toolbar
       android:id="@+id/chatListToolbar"
       android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:minHeight="?attr/actionBarSize"
+      android:layout_height="?attr/actionBarSize"
       app:contentInsetLeft="0dip"
       app:contentInsetStart="0dip"
       app:contentInsetStartWithNavigation="0dip"
@@ -60,9 +59,9 @@
       android:id="@+id/buffer_search_container"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
+      android:layout_margin="6dp"
       app:cardBackgroundColor="?colorBackgroundSearch"
-      app:cardElevation="2dp"
-      android:layout_margin="6dp">
+      app:cardElevation="2dp">
 
       <LinearLayout
         android:layout_width="match_parent"
@@ -77,8 +76,8 @@
           android:background="@android:color/transparent"
           android:hint="@string/label_search_buffer"
           android:imeOptions="actionSearch"
-          android:inputType="textNoSuggestions"
           android:importantForAutofill="no"
+          android:inputType="textNoSuggestions"
           android:lines="1"
           android:minHeight="40dp"
           android:paddingLeft="8dp"
@@ -92,6 +91,7 @@
           android:layout_width="40dp"
           android:layout_height="match_parent"
           android:background="?selectableItemBackgroundBorderless"
+          android:contentDescription="@string/label_clear_search"
           app:srcCompat="@drawable/ic_close"
           app:tint="?colorTextSearchSecondary" />
 
diff --git a/app/src/main/res/layout/layout_editor.xml b/app/src/main/res/layout/layout_editor.xml
index e5b4bc3769f90d3503552b14be7962258ed959a0..e21658b188387b1e6c4bf505afcaee7f36f41c08 100644
--- a/app/src/main/res/layout/layout_editor.xml
+++ b/app/src/main/res/layout/layout_editor.xml
@@ -46,6 +46,7 @@
         android:padding="12dp"
         android:scaleType="fitXY"
         app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
         app:srcCompat="@drawable/ic_tab"
         app:tint="?attr/colorTextSecondary" />
 
@@ -90,6 +91,7 @@
         android:padding="12dp"
         android:scaleType="fitXY"
         app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
         app:srcCompat="@drawable/ic_send"
         app:tint="?attr/colorAccent"
         tools:ignore="UnusedAttribute" />
diff --git a/app/src/main/res/layout/layout_history.xml b/app/src/main/res/layout/layout_history.xml
index b8bbea59ed0e952e7bf78ca79be54535f8df570f..5f394dda6718676908cf23d8137d403144d8bd58 100644
--- a/app/src/main/res/layout/layout_history.xml
+++ b/app/src/main/res/layout/layout_history.xml
@@ -70,6 +70,7 @@
           android:layout_height="48dp"
           android:layout_gravity="top|end"
           android:background="?attr/selectableItemBackgroundBorderless"
+          android:contentDescription="@string/label_close"
           android:padding="12dp"
           android:scaleType="fitXY"
           app:srcCompat="@drawable/ic_chevron_down"
diff --git a/app/src/main/res/layout/preferences_crash.xml b/app/src/main/res/layout/preferences_crash.xml
index a694d99a9c9c1cf117697bf98494468fa9890106..99885becac6143e09e4199dfb9485551f78e29cf 100644
--- a/app/src/main/res/layout/preferences_crash.xml
+++ b/app/src/main/res/layout/preferences_crash.xml
@@ -17,10 +17,32 @@
   with this program. If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
-  android:id="@+id/list"
   android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:scrollbars="vertical"
-  tools:listitem="@layout/widget_crash" />
+  android:layout_height="match_parent">
+
+  <androidx.recyclerview.widget.RecyclerView
+    android:id="@+id/list"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:scrollbars="vertical"
+    tools:listitem="@layout/widget_crash" />
+
+  <TextView
+    android:id="@+id/crashes_empty"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:gravity="center"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+    android:paddingStart="?listPreferredItemPaddingLeft"
+    android:paddingLeft="?listPreferredItemPaddingLeft"
+    android:paddingEnd="?listPreferredItemPaddingRight"
+    android:paddingRight="?listPreferredItemPaddingRight"
+    android:text="@string/label_crashes_empty"
+    android:textColor="?colorTextSecondary"
+    android:textStyle="italic"
+    android:visibility="gone"
+    tools:visibility="visible" />
+</FrameLayout>
diff --git a/app/src/main/res/layout/preferences_whitelist_certificate_item.xml b/app/src/main/res/layout/preferences_whitelist_certificate_item.xml
index 676710f0b474741fbea9dd3f2d4dcbefc7465910..db1ec33982c8219272d49464c18b58a984f1bf74 100644
--- a/app/src/main/res/layout/preferences_whitelist_certificate_item.xml
+++ b/app/src/main/res/layout/preferences_whitelist_certificate_item.xml
@@ -66,6 +66,7 @@
     android:layout_height="match_parent"
     android:layout_gravity="center_vertical"
     android:background="?selectableItemBackgroundBorderless"
+    android:contentDescription="@string/label_delete"
     android:paddingStart="32dp"
     android:paddingLeft="32dp"
     android:paddingEnd="?listPreferredItemPaddingRight"
diff --git a/app/src/main/res/layout/preferences_whitelist_hostname_item.xml b/app/src/main/res/layout/preferences_whitelist_hostname_item.xml
index ac81076ff3238cfcf59c203dbff430a5e31bb68d..de5d6daa838aee0d5cef5238176c072b74ff42f5 100644
--- a/app/src/main/res/layout/preferences_whitelist_hostname_item.xml
+++ b/app/src/main/res/layout/preferences_whitelist_hostname_item.xml
@@ -66,6 +66,7 @@
     android:layout_height="match_parent"
     android:layout_gravity="center_vertical"
     android:background="?selectableItemBackgroundBorderless"
+    android:contentDescription="@string/label_delete"
     android:paddingStart="32dp"
     android:paddingLeft="32dp"
     android:paddingEnd="?listPreferredItemPaddingRight"
diff --git a/app/src/main/res/layout/widget_core_account.xml b/app/src/main/res/layout/widget_core_account.xml
index 71f360a7126da55bab35518690026263a3f2c4f1..35444de796708dedef16dcb421f7fcc8f0e820ec 100644
--- a/app/src/main/res/layout/widget_core_account.xml
+++ b/app/src/main/res/layout/widget_core_account.xml
@@ -84,6 +84,7 @@
     android:layout_height="48dp"
     android:layout_gravity="center_vertical"
     android:background="?attr/selectableItemBackgroundBorderless"
+    android:contentDescription="@string/label_edit_core"
     android:tint="#757575"
     app:srcCompat="@drawable/ic_pencil" />
 </LinearLayout>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9ecd98da9398a1d11e59c33476dc8d216ded3f69..f3af61d2db8d81c9eed84c0676854fd9882d6f69 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -36,6 +36,7 @@
   <string name="label_cancel">Cancel</string>
   <string name="label_update_user_password">Update User/Password</string>
   <string name="label_certificates">Certificates</string>
+  <string name="label_clear_search">Clear Search</string>
   <string name="label_close">Close</string>
   <string name="label_colors_custom">Custom</string>
   <string name="label_colors_mirc">mIRC</string>
@@ -44,12 +45,14 @@
   <string name="label_contributors">Contributors</string>
   <string name="label_copy">Copy</string>
   <string name="label_crashes">Crashes</string>
+  <string name="label_crashes_empty">No crash reports found</string>
   <string name="label_shortcut">Shortcut</string>
   <string name="label_shortcut_long">Create Shortcut on Homescreen</string>
   <string name="label_delete">Delete</string>
   <string name="label_delete_all">Delete All</string>
   <string name="label_disconnect">Disconnect</string>
-  <string name="label_edit_nick">Edit nickname</string>
+  <string name="label_edit_core">Edit Account</string>
+  <string name="label_edit_nick">Edit Nickname</string>
   <string name="label_edit_topic">Edit Topic</string>
   <string name="label_edit_topic_long">Open dialog to change the channel topic</string>
   <string name="label_filter_messages">Filter Messages</string>