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 26346ebd3cad009e62e2a43f137a86c8fdc2889e..91d99f61b14d9b045355fbcb3cacfbc6c1c440cf 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
@@ -24,6 +24,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.appcompat.widget.AppCompatImageView
 import androidx.lifecycle.Observer
 import butterknife.BindView
 import butterknife.ButterKnife
@@ -31,14 +32,15 @@ import de.kuschku.libquassel.protocol.Buffer_Type
 import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.util.flag.hasFlag
 import de.kuschku.libquassel.util.helpers.value
+import de.kuschku.quasseldroid.GlideApp
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.settings.AppearanceSettings
 import de.kuschku.quasseldroid.settings.MessageSettings
 import de.kuschku.quasseldroid.ui.chat.info.channel.ChannelInfoActivity
 import de.kuschku.quasseldroid.ui.chat.info.user.UserInfoActivity
-import de.kuschku.quasseldroid.util.helper.combineLatest
-import de.kuschku.quasseldroid.util.helper.toLiveData
-import de.kuschku.quasseldroid.util.helper.visibleIf
+import de.kuschku.quasseldroid.util.ColorContext
+import de.kuschku.quasseldroid.util.avatars.AvatarHelper
+import de.kuschku.quasseldroid.util.helper.*
 import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
 import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
 import de.kuschku.quasseldroid.util.ui.SpanFormatter
@@ -51,6 +53,9 @@ class ToolbarFragment : ServiceBoundFragment() {
   @BindView(R.id.toolbar_subtitle)
   lateinit var toolbarSubtitle: TextView
 
+  @BindView(R.id.toolbar_icon)
+  lateinit var icon: AppCompatImageView
+
   @BindView(R.id.toolbar_action_area)
   lateinit var actionArea: View
 
@@ -91,10 +96,42 @@ class ToolbarFragment : ServiceBoundFragment() {
       description, messageSettings.colorizeMirc
     )
 
-    combineLatest(viewModel.bufferDataThrottled, viewModel.lag).toLiveData()
+    val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size_buffer)
+
+    val colorContext = ColorContext(requireContext(), messageSettings)
+
+    combineLatest(viewModel.bufferDataThrottled, viewModel.lag).map {
+      val avatarInfo = it.first?.ircUser?.let { user ->
+        val avatarUrls = AvatarHelper.avatar(messageSettings, user, avatarSize)
+
+        val nickName = user.nick()
+        val useSelfColor = when (messageSettings.colorizeNicknames) {
+          MessageSettings.ColorizeNicknamesMode.ALL          -> false
+          MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+            user.network().isMyNick(nickName)
+          MessageSettings.ColorizeNicknamesMode.NONE         -> true
+        }
+
+        val fallbackDrawable = colorContext.buildTextDrawable(user.nick(), useSelfColor)
+
+        Pair(avatarUrls, fallbackDrawable)
+      }
+
+      Triple(it.first, it.second, avatarInfo)
+    }.toLiveData()
       .observe(this, Observer {
         if (it != null) {
-          val (data, lag) = it
+          val (data, lag, avatarInfo) = it
+
+          if (avatarInfo != null) {
+            val (avatarUrls, fallbackDrawable) = avatarInfo
+            icon.loadAvatars(avatarUrls, fallbackDrawable, crop = !messageSettings.squareAvatars)
+            icon.visibility = View.VISIBLE
+          } else {
+            GlideApp.with(icon).clear(icon)
+            icon.visibility = View.GONE
+          }
+
           if (data?.info?.type?.hasFlag(Buffer_Type.StatusBuffer) == true) {
             this.title = data.network?.networkName()
           } else {
@@ -140,6 +177,7 @@ class ToolbarFragment : ServiceBoundFragment() {
         }
       }
     }
+    actionArea.setTooltip()
 
     return view
   }
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 af1d9171270cd95d80336611447bed4a52ddd9eb..a7e1e1785184d2c7d367c84d2e48aa329bd7ad7b 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
@@ -202,6 +202,7 @@ class ChatlineFragment : ServiceBoundFragment() {
 
     editorHelper.setOnEnterListener(::send)
     send.setOnClickListener { send() }
+    send.setTooltip()
 
     tabComplete.visibleIf(autoCompleteSettings.button)
     tabComplete.setOnClickListener {
diff --git a/app/src/main/res/layout/fragment_toolbar.xml b/app/src/main/res/layout/fragment_toolbar.xml
index dfa09f03df9318e9087cd294f833a84ceb4a96ee..8a26f58b87766f749c08855ce6520f48350070db 100644
--- a/app/src/main/res/layout/fragment_toolbar.xml
+++ b/app/src/main/res/layout/fragment_toolbar.xml
@@ -20,61 +20,66 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/toolbar_action_area"
-  android:layout_width="fill_parent"
-  android:layout_height="fill_parent"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
   android:background="?attr/selectableItemBackgroundBorderless"
   android:clickable="true"
   android:focusable="true"
   android:focusableInTouchMode="false"
-  android:gravity="center_vertical|start"
   android:minHeight="?attr/actionBarSize"
-  android:orientation="vertical"
+  android:contentDescription="@string/label_info"
   android:theme="?attr/actionBarTheme"
+  android:orientation="horizontal"
   tools:showIn="@layout/activity_main">
 
+  <androidx.appcompat.widget.AppCompatImageView
+    android:id="@+id/toolbar_icon"
+    android:layout_width="@dimen/avatar_size_buffer"
+    android:layout_height="@dimen/avatar_size_buffer"
+    android:layout_gravity="center_vertical"
+    android:layout_marginEnd="8dp"
+    android:layout_marginRight="8dp"
+    android:visibility="gone"
+    tools:src="@tools:sample/avatars"
+    tools:visibility="visible" />
+
   <LinearLayout
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center_vertical|start"
-    android:layout_marginTop="-2dp"
-    android:baselineAligned="false">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center_vertical|start"
+    android:orientation="vertical">
 
-    <TextView
-      android:id="@+id/key"
-      style="@style/Widget.RtlConformTextView"
-      android:layout_width="16dp"
-      android:layout_height="16dp"
-      android:layout_marginEnd="2dp"
-      android:layout_marginRight="2dp"
-      android:layout_marginTop="2dp"
-      android:gravity="center"
-      android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
-      android:textColor="?android:textColorPrimary"
-      android:textSize="16sp"
-      android:visibility="gone" />
+    <LinearLayout
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_gravity="center_vertical|start"
+      android:layout_marginTop="-2dp"
+      android:baselineAligned="false">
+
+      <TextView
+        android:id="@+id/toolbar_title"
+        style="@style/Widget.RtlConformTextView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:gravity="center_vertical"
+        android:singleLine="true"
+        android:text="@string/app_name"
+        android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
+        android:textColor="?android:textColorPrimary" />
+
+    </LinearLayout>
 
     <TextView
-      android:id="@+id/toolbar_title"
-      style="@style/Widget.RtlConformTextView"
+      android:id="@+id/toolbar_subtitle"
+      style="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
+      android:layout_marginTop="-3dp"
       android:ellipsize="end"
-      android:gravity="center_vertical"
       android:singleLine="true"
-      android:text="@string/app_name"
-      android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
-      android:textColor="?android:textColorPrimary" />
+      android:textColor="?android:textColorSecondary"
+      android:visibility="gone" />
 
   </LinearLayout>
-
-  <TextView
-    android:id="@+id/toolbar_subtitle"
-    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_marginTop="-3dp"
-    android:ellipsize="end"
-    android:singleLine="true"
-    android:textColor="?android:textColorSecondary"
-    android:visibility="gone" />
 </LinearLayout>
diff --git a/app/src/main/res/layout/layout_editor.xml b/app/src/main/res/layout/layout_editor.xml
index dde9aec40ff9c60a69e5ac34f7f2e8f24df8c1aa..c8e1b5117311f7cbe19752ca3db035a3852e9efd 100644
--- a/app/src/main/res/layout/layout_editor.xml
+++ b/app/src/main/res/layout/layout_editor.xml
@@ -45,6 +45,7 @@
         android:padding="12dp"
         android:scaleType="fitXY"
         app:layout_constraintStart_toStartOf="parent"
+        android:contentDescription="@string/label_autocomplete"
         app:srcCompat="@drawable/ic_tab"
         app:tint="?attr/colorTextSecondary" />
 
@@ -89,6 +90,7 @@
         android:scaleType="fitXY"
         app:layout_constraintEnd_toEndOf="parent"
         app:srcCompat="@drawable/ic_send"
+        android:contentDescription="@string/label_send"
         app:tint="?attr/colorAccent"
         tools:ignore="UnusedAttribute" />
     </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index de5b41652d1d2289643b35004419ae9beb6ba04b..336b63168974536d40a6c1f0eb1aa85b7ef20a6a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -29,6 +29,7 @@
 
   <string name="label_about">About</string>
   <string name="label_accept">Accept</string>
+  <string name="label_autocomplete">Autocomplete</string>
   <string name="label_avatar">Avatar</string>
   <string name="label_back">Back</string>
   <string name="label_buffer_name">Buffer Name</string>
@@ -56,6 +57,7 @@
   <string name="label_hide_temp">Hide Temporarily</string>
   <string name="label_ignore">Ignore</string>
   <string name="label_ignore_long">Add/remove user to/from ignore list</string>
+  <string name="label_info">Details</string>
   <string name="label_info_channel">Channel Details</string>
   <string name="label_info_core">Core Details</string>
   <string name="label_info_user">User Details</string>
@@ -92,6 +94,7 @@
   <string name="label_rename">Rename</string>
   <string name="label_save">Save</string>
   <string name="label_select">Select</string>
+  <string name="label_send">Send</string>
   <string name="label_set_default">Set Default</string>
   <string name="label_settings">Settings</string>
   <string name="label_settings_client">Client Settings</string>
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
index 52b89bfffa2988b09b226a4f874f01e327d4a0c3..e4332e416d527fbd40f82dbe075da84b29a0deb4 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -161,7 +161,8 @@ class QuasselViewModel : ViewModel() {
                     BufferData(
                       info = info,
                       network = network,
-                      description = user.realName()
+                      description = user.realName(),
+                      ircUser = user
                     )
                   }
                 }
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
index 700c453f1407c5a37397a5b92c5295db0178d033..9a247f6db875363f42b96453a3ae1c18f0f8f36c 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
@@ -20,11 +20,13 @@
 package de.kuschku.quasseldroid.viewmodel.data
 
 import de.kuschku.libquassel.quassel.BufferInfo
+import de.kuschku.libquassel.quassel.syncables.IrcUser
 import de.kuschku.libquassel.quassel.syncables.Network
 
 data class BufferData(
   val info: BufferInfo? = null,
   val network: Network? = null,
   val description: String? = null,
-  val userCount: Int = 0
+  val userCount: Int = 0,
+  val ircUser: IrcUser? = null
 )