diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 753d81c0cf28945c6a231f0f8d4618a3e5fef3a7..7f0c3f784b7be3dd40a1ea4d8a7181ab0dae2e36 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -89,9 +89,9 @@ android {
 }
 
 val appCompatVersion = "27.0.2"
-val appArchVersion = "1.0.0"
+val appArchVersion = "1.1.0"
 dependencies {
-  implementation(kotlin("stdlib", "1.2.0"))
+  implementation(kotlin("stdlib", "1.2.21"))
 
   implementation(appCompat("appcompat-v7"))
   implementation(appCompat("design"))
@@ -100,18 +100,17 @@ dependencies {
   implementation(appCompat("recyclerview-v7"))
   implementation(appCompat("constraint", "constraint-layout", version = "1.0.2"))
 
-  implementation("com.github.StephenVinouze.AdvancedRecyclerView", "core", "1.1.6")
-
-  implementation("io.reactivex.rxjava2", "rxjava", "2.1.3")
+  implementation("io.reactivex.rxjava2", "rxjava", "2.1.9")
 
   implementation(appArch("lifecycle", "extensions"))
   implementation(appArch("lifecycle", "reactivestreams"))
   kapt(appArch("lifecycle", "compiler"))
 
-  implementation(appArch("persistence.room", "runtime"))
-  kapt(appArch("persistence.room", "compiler"))
+  implementation(appArch("persistence.room", "runtime", "1.0.0"))
+  implementation(appArch("persistence.room", "rxjava2", "1.0.0"))
+  kapt(appArch("persistence.room", "compiler", "1.0.0"))
 
-  implementation(appArch("paging", "runtime", version = "1.0.0-alpha3")) {
+  implementation(appArch("paging", "runtime", version = "1.0.0-alpha5")) {
     exclude(group = "junit", module = "junit")
   }
 
@@ -127,7 +126,7 @@ dependencies {
   }
   implementation(project(":malheur"))
 
-  testImplementation(appArch("persistence.room", "testing"))
+  testImplementation(appArch("persistence.room", "testing", "1.0.0"))
   testImplementation("junit", "junit", "4.12")
 
   androidTestImplementation("com.android.support.test", "runner", "1.0.1")
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt
index b17dc281a6222e3869ee814a98ca83611dbf5fd4..17bc32a3daeb01d5d3d038468af56d075e301955 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt
@@ -170,6 +170,11 @@ class BufferListAdapter(
       var bufferId: BufferId? = null
       var networkId: NetworkId? = null
 
+      private var none: Int = 0
+      private var activity: Int = 0
+      private var message: Int = 0
+      private var highlight: Int = 0
+
       init {
         ButterKnife.bind(this, itemView)
         itemView.setOnClickListener {
@@ -183,6 +188,16 @@ class BufferListAdapter(
           if (network != null)
             expansionListener?.invoke(network)
         }
+
+        itemView.context.theme.styledAttributes(
+          R.attr.colorTextSecondary, R.attr.colorTintActivity, R.attr.colorTintMessage,
+          R.attr.colorTintHighlight
+        ) {
+          none = getColor(0, 0)
+          activity = getColor(1, 0)
+          message = getColor(2, 0)
+          highlight = getColor(3, 0)
+        }
       }
 
       override fun bind(props: BufferProps, state: BufferState) {
@@ -190,6 +205,15 @@ class BufferListAdapter(
         bufferId = props.info.bufferId
         networkId = props.info.networkId
 
+        name.setTextColor(
+          when (props.activity) {
+            Buffer_Activity.NoActivity    -> none
+            Buffer_Activity.OtherActivity -> activity
+            Buffer_Activity.NewMessage    -> message
+            Buffer_Activity.Highlight     -> highlight
+          }
+        )
+
         if (state.networkExpanded) {
           status.setImageDrawable(itemView.context.getCompatDrawable(R.drawable.ic_chevron_up))
         } else {
@@ -234,7 +258,7 @@ class BufferListAdapter(
 
         itemView.context.theme.styledAttributes(
           R.attr.colorAccent, R.attr.colorAway,
-          R.attr.colorForeground, R.attr.colorTintActivity, R.attr.colorTintMessage,
+          R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
           R.attr.colorTintHighlight
         ) {
           DrawableCompat.setTint(online, getColor(0, 0))
@@ -313,7 +337,7 @@ class BufferListAdapter(
 
         itemView.context.theme.styledAttributes(
           R.attr.colorAccent, R.attr.colorAway,
-          R.attr.colorForeground, R.attr.colorTintActivity, R.attr.colorTintMessage,
+          R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
           R.attr.colorTintHighlight
         ) {
           DrawableCompat.setTint(online, getColor(0, 0))
@@ -394,7 +418,7 @@ class BufferListAdapter(
 
         itemView.context.theme.styledAttributes(
           R.attr.colorAccent, R.attr.colorAway,
-          R.attr.colorForeground, R.attr.colorTintActivity, R.attr.colorTintMessage,
+          R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
           R.attr.colorTintHighlight
         ) {
           DrawableCompat.setTint(online, getColor(0, 0))
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
index b0cc94e298a8e85472512654a057cba72ee1f041..bd29ef6b7bff3b7e05b1d0f23bd18bbb4ca57eed 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
@@ -81,68 +81,77 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     bufferIdList.switchMapRx { ids ->
       val bufferSyncer = manager.bufferSyncer
       if (bufferSyncer != null) {
-        Observable.combineLatest(
-          ids.mapNotNull { id ->
-            manager.bufferSyncer?.bufferInfo(
-              id
-            )
-          }.mapNotNull {
-            val network = manager.networks[it.networkId]
-            if (network == null) {
-              null
-            } else {
-              it to network
-            }
-          }.map { (info, network) ->
-            bufferSyncer.liveActivity(info.bufferId).map { activity ->
-              when {
-                activity.hasFlag(Message.MessageType.Plain) ||
-                activity.hasFlag(Message.MessageType.Notice) ||
-                activity.hasFlag(Message.MessageType.Action) -> Buffer_Activity.NewMessage
-                activity.nonEmpty()                          -> Buffer_Activity.OtherActivity
-                else                                         -> Buffer_Activity.NoActivity
+        bufferSyncer.live_bufferInfos.switchMap {
+          Observable.combineLatest(
+            ids.mapNotNull { id ->
+              bufferSyncer.bufferInfo(id)
+            }.mapNotNull {
+              val network = manager.networks[it.networkId]
+              if (network == null) {
+                null
+              } else {
+                it to network
               }
-            }.switchMap { activity ->
-              when (info.type.toInt()) {
-                BufferInfo.Type.QueryBuffer.toInt()   -> {
-                  network.liveIrcUser(info.bufferName).switchMap { user ->
-                    user.live_away.switchMap { away ->
-                      user.live_realName.map { realName ->
+            }.map { (info, network) ->
+              bufferSyncer.liveActivity(info.bufferId).map { activity ->
+                when {
+                  activity.hasFlag(Message.MessageType.Plain) ||
+                  activity.hasFlag(Message.MessageType.Notice) ||
+                  activity.hasFlag(Message.MessageType.Action) -> Buffer_Activity.NewMessage
+                  activity.nonEmpty()                          -> Buffer_Activity.OtherActivity
+                  else                                         -> Buffer_Activity.NoActivity
+                }
+              }.switchMap { activity ->
+                when (info.type.toInt()) {
+                  BufferInfo.Type.QueryBuffer.toInt()   -> {
+                    network.liveIrcUser(info.bufferName).switchMap { user ->
+                      user.live_away.switchMap { away ->
+                        user.live_realName.map { realName ->
+                          BufferListAdapter.BufferProps(
+                            info = info,
+                            network = network.networkInfo(),
+                            bufferStatus = when {
+                              user == IrcUser.NULL -> BufferListAdapter.BufferStatus.OFFLINE
+                              away                 -> BufferListAdapter.BufferStatus.AWAY
+                              else                 -> BufferListAdapter.BufferStatus.ONLINE
+                            },
+                            description = realName,
+                            activity = activity
+                          )
+                        }
+                      }
+                    }
+                  }
+                  BufferInfo.Type.ChannelBuffer.toInt() -> {
+                    network.liveIrcChannel(
+                      info.bufferName
+                    ).switchMap { channel ->
+                      channel.live_topic.map { topic ->
                         BufferListAdapter.BufferProps(
                           info = info,
                           network = network.networkInfo(),
-                          bufferStatus = when {
-                            user == IrcUser.NULL -> BufferListAdapter.BufferStatus.OFFLINE
-                            away                 -> BufferListAdapter.BufferStatus.AWAY
-                            else                 -> BufferListAdapter.BufferStatus.ONLINE
+                          bufferStatus = when (channel) {
+                            IrcChannel.NULL -> BufferListAdapter.BufferStatus.OFFLINE
+                            else            -> BufferListAdapter.BufferStatus.ONLINE
                           },
-                          description = realName,
+                          description = topic,
                           activity = activity
                         )
                       }
                     }
                   }
-                }
-                BufferInfo.Type.ChannelBuffer.toInt() -> {
-                  network.liveIrcChannel(
-                    info.bufferName
-                  ).switchMap { channel ->
-                    channel.live_topic.map { topic ->
+                  BufferInfo.Type.StatusBuffer.toInt()  -> {
+                    network.liveConnectionState.map {
                       BufferListAdapter.BufferProps(
                         info = info,
                         network = network.networkInfo(),
-                        bufferStatus = when (channel) {
-                          IrcChannel.NULL -> BufferListAdapter.BufferStatus.OFFLINE
-                          else            -> BufferListAdapter.BufferStatus.ONLINE
-                        },
-                        description = topic,
+                        bufferStatus = BufferListAdapter.BufferStatus.OFFLINE,
+                        description = "",
                         activity = activity
                       )
                     }
                   }
-                }
-                BufferInfo.Type.StatusBuffer.toInt()  -> {
-                  network.liveConnectionState.map {
+                  else                                  -> Observable.just(
                     BufferListAdapter.BufferProps(
                       info = info,
                       network = network.networkInfo(),
@@ -150,23 +159,14 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
                       description = "",
                       activity = activity
                     )
-                  }
-                }
-                else                                  -> Observable.just(
-                  BufferListAdapter.BufferProps(
-                    info = info,
-                    network = network.networkInfo(),
-                    bufferStatus = BufferListAdapter.BufferStatus.OFFLINE,
-                    description = "",
-                    activity = activity
                   )
-                )
+                }
               }
+            }, { array: Array<Any> ->
+              array.toList() as List<BufferListAdapter.BufferProps>
             }
-          }, { array: Array<Any> ->
-            array.toList() as List<BufferListAdapter.BufferProps>
-          }
-        )
+          )
+        }
       } else {
         Observable.empty()
       }
diff --git a/app/src/main/res/layout/widget_buffer.xml b/app/src/main/res/layout/widget_buffer.xml
index fdf7d6c7118645c5700f909077d4c3ad0298f23e..f057d26addce6b55b1ec7279da9db41479bf23f2 100644
--- a/app/src/main/res/layout/widget_buffer.xml
+++ b/app/src/main/res/layout/widget_buffer.xml
@@ -35,7 +35,7 @@
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:singleLine="true"
-      android:textColor="?attr/colorForeground"
+      android:textColor="?attr/colorTextPrimary"
       android:textSize="13sp"
       android:textStyle="bold"
       tools:text="#quasseldroid" />
@@ -46,7 +46,7 @@
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:singleLine="true"
-      android:textColor="?attr/colorForegroundSecondary"
+      android:textColor="?attr/colorTextSecondary"
       android:textSize="12sp"
       tools:text="QuasselDroid is an Android client for #quassel ♥ justJanne's much improved version: https://dl.kuschku.de/releases/quasseldroid/ ♥ http://github.com/sandsmark/QuasselDroid ♥ Quasseldroid  on play  https://market.android.com/details?id=com.iskrembilen.quasseldroid ♥ Sign up for beta: https://plus.google.com/communities/104094956084217666662" />
   </LinearLayout>
diff --git a/app/src/main/res/layout/widget_network.xml b/app/src/main/res/layout/widget_network.xml
index fa16ceb4fc0d01aa86fd03fcc425c93cb74c6bae..0ec8859d288b138fd30a99c2ef6676fc6a15a4a2 100644
--- a/app/src/main/res/layout/widget_network.xml
+++ b/app/src/main/res/layout/widget_network.xml
@@ -4,37 +4,52 @@
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
-  android:foreground="?attr/selectableItemBackgroundBorderless"
-  android:minHeight="48dp"
+  android:background="?attr/selectableItemBackground"
+  android:orientation="vertical"
   tools:background="@android:color/background_light"
   tools:theme="@style/Theme.ChatTheme.Quassel_Light">
 
-  <TextView
-    android:id="@+id/name"
-    android:layout_width="0dip"
+  <View
+    android:layout_width="match_parent"
+    android:layout_height="1dp"
+    android:background="?attr/colorDivider" />
+
+  <LinearLayout
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:layout_marginBottom="8dp"
-    android:layout_marginLeft="16dp"
-    android:layout_marginRight="16dp"
-    android:layout_marginTop="8dp"
-    android:layout_weight="1"
-    android:singleLine="true"
-    android:textColor="?attr/colorForeground"
-    android:textSize="14sp"
-    android:textStyle="bold"
-    tools:text="Freenode" />
+    android:minHeight="48dp">
+
+    <TextView
+      android:id="@+id/name"
+      android:layout_width="0dip"
+      android:layout_height="wrap_content"
+      android:layout_gravity="center"
+      android:layout_marginBottom="8dp"
+      android:layout_marginLeft="16dp"
+      android:layout_marginRight="16dp"
+      android:layout_marginTop="8dp"
+      android:layout_weight="1"
+      android:singleLine="true"
+      android:textColor="?attr/colorTextSecondary"
+      android:textSize="14sp"
+      android:textStyle="bold"
+      tools:text="Freenode" />
 
-  <ImageView
-    android:id="@+id/status"
-    android:layout_width="wrap_content"
-    android:layout_height="match_parent"
-    android:minWidth="72dp"
-    android:paddingBottom="12dp"
-    android:paddingEnd="16dp"
-    android:paddingStart="16dp"
-    android:paddingTop="12dp"
-    android:scaleType="fitEnd"
-    android:tint="?attr/colorForegroundSecondary"
-    app:srcCompat="@drawable/ic_chevron_down" />
+    <ImageView
+      android:id="@+id/status"
+      android:layout_width="wrap_content"
+      android:layout_height="match_parent"
+      android:background="?attr/selectableItemBackgroundBorderless"
+      android:clickable="true"
+      android:contentDescription="Expand"
+      android:focusable="true"
+      android:minWidth="72dp"
+      android:paddingBottom="12dp"
+      android:paddingEnd="16dp"
+      android:paddingStart="16dp"
+      android:paddingTop="12dp"
+      android:scaleType="fitEnd"
+      android:tint="?attr/colorTextSecondary"
+      app:srcCompat="@drawable/ic_chevron_down" />
+  </LinearLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index 46a053646ce0fed01fb5e8b8740b82110e0b67e2..81d04fca80d8140b75051c4e0be5ea837b9c6cf8 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -44,6 +44,8 @@
 
   <attr name="colorForegroundMirc" format="integer" />
 
+  <attr name="colorTextPrimary" format="color" />
+  <attr name="colorTextSecondary" format="color" />
   <attr name="colorDivider" format="color" />
 
   <attr name="colorBackground" format="color" />
diff --git a/app/src/main/res/values/themes_base.xml b/app/src/main/res/values/themes_base.xml
index 2c4ea184d98da57bc1d4b4cb03286b37f482d70d..7557a2d36936e6d70d64d99774c67d13280c0a2b 100644
--- a/app/src/main/res/values/themes_base.xml
+++ b/app/src/main/res/values/themes_base.xml
@@ -40,6 +40,8 @@
 
     <item name="windowActionModeOverlay">true</item>
 
+    <item name="colorTextPrimary">#8a8a8a</item>
+    <item name="colorTextSecondary">#dedede</item>
     <item name="colorDivider">#1FFFFFFF</item>
 
     <item name="colorFill">@color/colorFillDark</item>
@@ -74,6 +76,8 @@
 
     <item name="windowActionModeOverlay">true</item>
 
+    <item name="colorTextPrimary">#212121</item>
+    <item name="colorTextSecondary">#757575</item>
     <item name="colorDivider">#1F000000</item>>
 
     <item name="colorFill">@color/colorFillLight</item>