From 4757aa3c6418d5fe19ca3ef3e1d6328d0a3e2950 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Tue, 17 Apr 2018 00:45:37 +0200
Subject: [PATCH] Cleanup

---
 .../de/kuschku/quasseldroid/QuasselDroid.kt   |   1 -
 .../quasseldroid/dagger/AppComponent.kt       |   1 -
 .../kuschku/quasseldroid/dagger/AppModule.kt  |   2 +-
 .../quasseldroid/dagger/DatabaseModule.kt     |   2 +-
 .../quasseldroid/dagger/SettingsModule.kt     |   2 +-
 .../quasseldroid/settings/BacklogSettings.kt  |   2 +-
 .../settings/ConnectionSettings.kt            |   2 +-
 .../ui/chat/buffers/BufferListAdapter.kt      |  91 +++++----------
 .../chat/buffers/BufferViewConfigFragment.kt  |  88 +++++++++------
 .../chat/info/channel/ChannelInfoActivity.kt  |   1 -
 .../ui/chat/input/ChatlineFragment.kt         |   1 -
 .../ui/chat/input/MessageHistoryAdapter.kt    |   1 -
 .../ui/chat/messages/MessageAdapter.kt        |   1 -
 .../ui/chat/messages/MessageListFragment.kt   |   4 +-
 .../ui/chat/messages/MessageRenderer.kt       |   1 -
 .../ui/chat/nicks/NickListFragment.kt         | 104 +++++++++---------
 .../ui/chat/topic/TopicActivity.kt            |   1 -
 .../about/AboutSettingsFragmentProvider.kt    |   2 +-
 .../ui/clientsettings/about/Contributor.kt    |   2 +-
 .../about/ContributorAdapter.kt               |   2 +-
 .../ui/clientsettings/about/Library.kt        |   2 +-
 .../ui/clientsettings/about/License.kt        |   2 +-
 .../clientsettings/app/AppSettingsFragment.kt |   2 +-
 .../app/AppSettingsFragmentProvider.kt        |   2 +-
 .../ui/clientsettings/crash/CrashAdapter.kt   |   2 +-
 .../crash/CrashSettingsFragmentProvider.kt    |   2 +-
 .../license/LicenseSettingsFragment.kt        |   2 +-
 .../LicenseSettingsFragmentProvider.kt        |   2 +-
 .../CoreSettingsFragmentProvider.kt           |   2 +-
 .../ui/coresettings/SettingsItem.kt           |   2 +-
 .../ui/coresettings/SettingsItemAdapter.kt    |   2 +-
 .../chatlist/ChatListBaseFragment.kt          |   4 +-
 .../chatlist/MinimumActivityAdapter.kt        |   1 -
 .../coresettings/chatlist/NetworkAdapter.kt   |   4 -
 .../identity/IdentityBaseFragment.kt          |   1 -
 .../identity/IdentityCreateFragment.kt        |   1 -
 .../identity/IdentityNicksAdapter.kt          |   2 +-
 .../ignoreitem/IgnoreTypeAdapter.kt           |   1 -
 .../ignoreitem/ScopeTypeAdapter.kt            |   1 -
 .../ignoreitem/StrictnessTypeAdapter.kt       |   1 -
 .../network/NetworkBaseFragment.kt            |   1 -
 .../network/NetworkServerAdapter.kt           |   3 -
 .../networkconfig/NetworkConfigFragment.kt    |   5 +-
 .../NetworkConfigFragmentProvider.kt          |   2 +-
 .../networkserver/ProxyTypeAdapter.kt         |   1 -
 .../accounts/edit/AccountEditActivity.kt      |   2 +-
 .../AccountSelectionFragmentProvider.kt       |   2 +-
 .../setup/AccountSetupConnectionSlide.kt      |   3 +-
 .../setup/AccountSetupFragmentProvider.kt     |   2 +-
 .../accounts/setup/AccountSetupUserSlide.kt   |   2 +
 .../kuschku/quasseldroid/util/AvatarHelper.kt |   4 +-
 .../de/kuschku/quasseldroid/util/Patterns.kt  |  12 +-
 .../util/backport/AndroidThreeTenBackport.kt  |   3 +-
 .../util/backport/WritableWrappedChannel.kt   |   1 -
 .../compatibility/AndroidHandlerService.kt    |   8 +-
 .../quasseldroid/util/helper/BooleanHelper.kt |   1 -
 .../quasseldroid/util/helper/ContextHelper.kt |   2 +-
 .../util/helper/DrawableHelper.kt             |   2 +-
 .../util/helper/FloatingActionButtonHelper.kt |   2 +-
 .../quasseldroid/util/helper/GsonHelper.kt    |   2 +-
 .../util/helper/IntProgressionHelper.kt       |   2 +-
 .../util/helper/IntRangeHelper.kt             |   2 +-
 .../quasseldroid/util/helper/ListHelper.kt    |   9 ++
 .../util/helper/LruCacheHelper.kt             |   2 +-
 .../quasseldroid/util/helper/MenuHelper.kt    |   2 +-
 .../util/helper/SelectionHelper.kt            |   2 +-
 .../util/helper/SwitchCompatHelper.kt         |   2 +-
 .../quasseldroid/util/helper/ThemeHelper.kt   |   2 +-
 .../util/irc/format/ContentFormatter.kt       |   2 +-
 .../util/irc/format/IrcFormatDeserializer.kt  |  25 -----
 .../util/service/ServiceBoundActivity.kt      |   1 -
 .../quasseldroid/util/ui/AnimationHelper.kt   |   2 +-
 .../util/ui/AutoCompleteRecyclerView.kt       |   2 +-
 .../ui/MaterialContentLoadingProgressBar.kt   |   3 +-
 .../util/ui/RecyclerSpinnerAdapter.kt         |   1 -
 .../quasseldroid/util/ui/SeekBarPreference.kt |  31 +++---
 .../quasseldroid/util/ui/SettingsActivity.kt  |   1 -
 .../res/layout/widget_chatmessage_plain.xml   |   4 +-
 buildSrc/src/main/kotlin/ProjectHelper.kt     |   2 +-
 buildSrc/src/main/kotlin/VersionContext.kt    |   2 +-
 .../kuschku/libquassel/protocol/QVariant.kt   |   2 +-
 .../de/kuschku/libquassel/protocol/Type.kt    |   1 -
 .../libquassel/quassel/LegacyFeature.kt       |  30 ++---
 .../libquassel/quassel/QuasselFeatures.kt     |   1 -
 .../exceptions/DeserializationException.kt    |   2 +-
 .../exceptions/MessageHandlingException.kt    |   2 +-
 .../quassel/syncables/BufferSyncer.kt         |   4 +-
 .../libquassel/quassel/syncables/IrcUser.kt   |  26 +----
 .../libquassel/quassel/syncables/Network.kt   |   1 -
 .../quassel/syncables/NetworkConfig.kt        |   1 -
 .../syncables/interfaces/ISyncableObject.kt   |   4 +-
 .../libquassel/session/CoreConnection.kt      |   1 +
 .../de/kuschku/libquassel/session/Features.kt |   2 +-
 .../de/kuschku/libquassel/session/ISession.kt |   3 -
 .../libquassel/session/ProtocolHandler.kt     |   6 +-
 .../de/kuschku/libquassel/session/Session.kt  |   4 +-
 .../de/kuschku/libquassel/util/CRCUtils.kt    |   2 +-
 .../kuschku/libquassel/util/IrcUserUtils.kt   |   2 +-
 .../kuschku/libquassel/util/flag/LongFlag.kt  |   2 +-
 .../kuschku/libquassel/util/flag/ShortFlag.kt |   2 +-
 .../libquassel/util/helpers/MathHelper.kt     |   2 +-
 .../libquassel/util/irc/IrcCaseMappers.kt     |   8 +-
 .../libquassel/util/nio/ChainedByteBuffer.kt  |   1 -
 .../libquassel/util/nio/WrappedChannel.kt     |   1 -
 .../kuschku/libquassel/ConnectionUnitTest.kt  |  15 +--
 .../util/helper/LiveDataHelper.kt             |   2 +-
 .../util/helper/LiveDataZipHelper.kt          |   3 +-
 .../viewmodel/data/BufferHiddenState.kt       |   1 -
 .../viewmodel/data/BufferListItem.kt          |   2 +-
 .../viewmodel/data/BufferProps.kt             |   2 +-
 .../viewmodel/data/BufferState.kt             |   2 +-
 .../viewmodel/data/BufferStatus.kt            |   2 +-
 .../viewmodel/data/SelectedBufferItem.kt      |   2 +-
 113 files changed, 278 insertions(+), 371 deletions(-)
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/helper/ListHelper.kt

diff --git a/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt b/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt
index 940023c90..0d02ed87e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt
@@ -13,7 +13,6 @@ import de.kuschku.quasseldroid.util.compatibility.AndroidCompatibilityUtils
 import de.kuschku.quasseldroid.util.compatibility.AndroidLoggingHandler
 import de.kuschku.quasseldroid.util.compatibility.AndroidStreamChannelFactory
 
-
 class QuasselDroid : DaggerApplication() {
   override fun applicationInjector(): AndroidInjector<out QuasselDroid> =
     DaggerAppComponent.builder().create(this)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt
index f8d97c2df..f41427b9f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt
@@ -20,4 +20,3 @@ interface AppComponent : AndroidInjector<QuasselDroid> {
   @Component.Builder
   abstract class Builder : AndroidInjector.Builder<QuasselDroid>()
 }
-
diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt
index d0e026b04..763581c71 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt
@@ -9,4 +9,4 @@ import de.kuschku.quasseldroid.QuasselDroid
 abstract class AppModule {
   @Binds
   abstract fun provideContext(application: QuasselDroid): Context
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt
index f13fa558c..442e59f37 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt
@@ -17,4 +17,4 @@ class DatabaseModule {
   fun provideAccountsDatabase(context: Context): AccountDatabase {
     return AccountDatabase.Creator.init(context)
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt
index 7fe62188d..f49bc646e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt
@@ -21,4 +21,4 @@ class SettingsModule {
 
   @Provides
   fun provideConnectionSettings(context: Context) = Settings.connection(context)
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt
index 55a128e44..a7b8355e2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt
@@ -7,4 +7,4 @@ data class BacklogSettings(
   companion object {
     val DEFAULT = BacklogSettings()
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt
index 68b945534..044af32ac 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt
@@ -6,4 +6,4 @@ data class ConnectionSettings(
   companion object {
     val DEFAULT = ConnectionSettings()
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
index 271f9c5cf..89cda2853 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt
@@ -1,9 +1,7 @@
 package de.kuschku.quasseldroid.ui.chat.buffers
 
-import android.arch.lifecycle.LifecycleOwner
-import android.arch.lifecycle.LiveData
-import android.arch.lifecycle.Observer
 import android.graphics.drawable.Drawable
+import android.support.v7.recyclerview.extensions.ListAdapter
 import android.support.v7.util.DiffUtil
 import android.support.v7.widget.RecyclerView
 import android.view.LayoutInflater
@@ -15,12 +13,14 @@ import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.protocol.BufferId
 import de.kuschku.libquassel.protocol.Buffer_Activity
-import de.kuschku.libquassel.protocol.Buffer_Type
 import de.kuschku.libquassel.protocol.NetworkId
 import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.util.flag.hasFlag
 import de.kuschku.quasseldroid.R
-import de.kuschku.quasseldroid.util.helper.*
+import de.kuschku.quasseldroid.util.helper.getVectorDrawableCompat
+import de.kuschku.quasseldroid.util.helper.styledAttributes
+import de.kuschku.quasseldroid.util.helper.tint
+import de.kuschku.quasseldroid.util.helper.visibleIf
 import de.kuschku.quasseldroid.viewmodel.data.BufferListItem
 import de.kuschku.quasseldroid.viewmodel.data.BufferProps
 import de.kuschku.quasseldroid.viewmodel.data.BufferState
@@ -28,16 +28,26 @@ import de.kuschku.quasseldroid.viewmodel.data.BufferStatus
 import io.reactivex.subjects.BehaviorSubject
 
 class BufferListAdapter(
-  lifecycleOwner: LifecycleOwner,
-  liveData: LiveData<List<BufferProps>?>,
   private val selectedBuffer: BehaviorSubject<BufferId>,
-  private val collapsedNetworks: BehaviorSubject<Set<NetworkId>>,
-  runInBackground: (() -> Unit) -> Any,
-  runOnUiThread: (Runnable) -> Any,
-  private val clickListener: ((BufferId) -> Unit)? = null,
-  private val longClickListener: ((BufferId) -> Unit)? = null
-) : RecyclerView.Adapter<BufferListAdapter.BufferViewHolder>() {
-  var data = emptyList<BufferListItem>()
+  private val collapsedNetworks: BehaviorSubject<Set<NetworkId>>
+) : ListAdapter<BufferListItem, BufferListAdapter.BufferViewHolder>(
+  object : DiffUtil.ItemCallback<BufferListItem>() {
+    override fun areItemsTheSame(oldItem: BufferListItem, newItem: BufferListItem) =
+      oldItem.props.info.bufferId == newItem.props.info.bufferId
+
+    override fun areContentsTheSame(oldItem: BufferListItem, newItem: BufferListItem) =
+      oldItem == newItem
+  }
+) {
+  private var clickListener: ((BufferId) -> Unit)? = null
+  private var longClickListener: ((BufferId) -> Unit)? = null
+  fun setOnClickListener(listener: ((BufferId) -> Unit)?) {
+    this.clickListener = listener
+  }
+
+  fun setOnLongClickListener(listener: ((BufferId) -> Unit)?) {
+    this.longClickListener = listener
+  }
 
   fun expandListener(networkId: NetworkId) {
     if (collapsedNetworks.value.orEmpty().contains(networkId))
@@ -56,52 +66,6 @@ class BufferListAdapter(
     selectedBuffer.onNext(-1)
   }
 
-  init {
-    liveData.zip(collapsedNetworks.toLiveData(), selectedBuffer.toLiveData()).observe(
-      lifecycleOwner, Observer { it: Triple<List<BufferProps>?, Set<NetworkId>, BufferId>? ->
-      val old: List<BufferListItem> = data
-      runInBackground {
-        val list = it?.first ?: emptyList()
-        val collapsedNetworks = it?.second ?: emptySet()
-        val selected = it?.third ?: -1
-
-        val new: List<BufferListItem> = list.sortedBy { props ->
-          !props.info.type.hasFlag(Buffer_Type.StatusBuffer)
-        }.sortedBy { props ->
-          props.network.networkName
-        }.map { props ->
-          BufferListItem(
-            props,
-            BufferState(
-              networkExpanded = !collapsedNetworks.contains(props.network.networkId),
-              selected = selected == props.info.bufferId
-            )
-          )
-        }.filter { (props, state) ->
-          props.info.type.hasFlag(BufferInfo.Type.StatusBuffer) || state.networkExpanded
-        }
-
-        val result = DiffUtil.calculateDiff(
-          object : DiffUtil.Callback() {
-            override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) =
-              old[oldItemPosition].props.info.bufferId == new[newItemPosition].props.info.bufferId
-
-            override fun getOldListSize() = old.size
-            override fun getNewListSize() = new.size
-
-            override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) =
-              old[oldItemPosition] == new[newItemPosition]
-          }, true
-        )
-        runOnUiThread(
-          Runnable {
-            data = new
-            result.dispatchUpdatesTo(this@BufferListAdapter)
-          })
-      }
-    })
-  }
-
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = when (viewType) {
     BufferInfo.Type.ChannelBuffer.toInt() -> BufferViewHolder.ChannelBuffer(
       LayoutInflater.from(parent.context).inflate(
@@ -138,12 +102,9 @@ class BufferListAdapter(
   }
 
   override fun onBindViewHolder(holder: BufferViewHolder, position: Int) =
-    holder.bind(data[position].props, data[position].state)
-
-  override fun getItemCount() = data.size
-
-  override fun getItemViewType(position: Int) = data[position].props.info.type.toInt()
+    holder.bind(getItem(position).props, getItem(position).state)
 
+  override fun getItemViewType(position: Int) = getItem(position).props.info.type.toInt()
   abstract class BufferViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
     abstract fun bind(props: BufferProps, state: BufferState)
 
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 a4b20a53f..f0dcff4b0 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
@@ -12,6 +12,7 @@ import de.kuschku.libquassel.protocol.BufferId
 import de.kuschku.libquassel.protocol.Buffer_Activity
 import de.kuschku.libquassel.protocol.Buffer_Type
 import de.kuschku.libquassel.protocol.Message_Type
+import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.quassel.syncables.BufferViewConfig
 import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
 import de.kuschku.libquassel.util.flag.hasFlag
@@ -22,12 +23,13 @@ import de.kuschku.quasseldroid.persistence.QuasselDatabase
 import de.kuschku.quasseldroid.settings.AppearanceSettings
 import de.kuschku.quasseldroid.settings.MessageSettings
 import de.kuschku.quasseldroid.util.helper.combineLatest
-import de.kuschku.quasseldroid.util.helper.map
 import de.kuschku.quasseldroid.util.helper.toLiveData
 import de.kuschku.quasseldroid.util.helper.zip
 import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
 import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
 import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState
+import de.kuschku.quasseldroid.viewmodel.data.BufferListItem
+import de.kuschku.quasseldroid.viewmodel.data.BufferState
 import javax.inject.Inject
 
 class BufferViewConfigFragment : ServiceBoundFragment() {
@@ -196,42 +198,58 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     }
 
     listAdapter = BufferListAdapter(
-      this,
-      viewModel.bufferList.toLiveData().zip(database.filtered().listen(accountId)).map {
-        val (data, activityList) = it
-        val (config, list) = data ?: Pair(null, emptyList())
-        val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE
-        val activities = activityList.map { it.bufferId to it.filtered }.toMap()
-        list.map {
-          val activity = it.activity - (activities[it.info.bufferId] ?: 0)
-          it.copy(
-            description = ircFormatDeserializer.formatString(
-              requireContext(), it.description.toString(), messageSettings.colorizeMirc
-            ),
-            activity = activity,
-            bufferActivity = Buffer_Activity.of(
-              when {
-                it.highlights > 0                     -> Buffer_Activity.Highlight
-                activity.hasFlag(Message_Type.Plain) ||
-                activity.hasFlag(Message_Type.Notice) ||
-                activity.hasFlag(Message_Type.Action) -> Buffer_Activity.NewMessage
-                activity.isNotEmpty()                 -> Buffer_Activity.OtherActivity
-                else                                  -> Buffer_Activity.NoActivity
-              }
-            )
-          )
-        }.filter { props ->
-          minimumActivity.toInt() <= props.bufferActivity.toInt() ||
-          props.info.type.hasFlag(Buffer_Type.StatusBuffer)
-        }
-      },
       viewModel.selectedBufferId,
-      viewModel.collapsedNetworks,
-      ::runInBackground,
-      activity!!::runOnUiThread,
-      ::clickListener,
-      ::longClickListener
+      viewModel.collapsedNetworks
     )
+    combineLatest(viewModel.bufferList, viewModel.collapsedNetworks, viewModel.selectedBuffer)
+      .toLiveData().zip(database.filtered().listen(accountId))
+      .observe(this, Observer { it ->
+        it?.let { (data, activityList) ->
+          runInBackground {
+            val (info, collapsedNetworks, selected) = data
+            val (config, list) = info ?: Pair(null, emptyList())
+            val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE
+            val activities = activityList.associate { it.bufferId to it.filtered }
+            listAdapter.submitList(list.sortedBy { props ->
+              !props.info.type.hasFlag(Buffer_Type.StatusBuffer)
+            }.sortedBy { props ->
+              props.network.networkName
+            }.map { props ->
+              BufferListItem(
+                props,
+                BufferState(
+                  networkExpanded = !collapsedNetworks.contains(props.network.networkId),
+                  selected = selected.info?.bufferId == props.info.bufferId
+                )
+              )
+            }.filter { (props, state) ->
+              props.info.type.hasFlag(BufferInfo.Type.StatusBuffer) || state.networkExpanded
+            }.map {
+              val activity = it.props.activity - (activities[it.props.info.bufferId] ?: 0)
+              it.copy(
+                props = it.props.copy(
+                  activity = activity,
+                  bufferActivity = Buffer_Activity.of(
+                    when {
+                      it.props.highlights > 0               -> Buffer_Activity.Highlight
+                      activity.hasFlag(Message_Type.Plain) ||
+                      activity.hasFlag(Message_Type.Notice) ||
+                      activity.hasFlag(Message_Type.Action) -> Buffer_Activity.NewMessage
+                      activity.isNotEmpty()                 -> Buffer_Activity.OtherActivity
+                      else                                  -> Buffer_Activity.NoActivity
+                    }
+                  )
+                )
+              )
+            }.filter {
+              minimumActivity.toInt() <= it.props.bufferActivity.toInt() ||
+              it.props.info.type.hasFlag(Buffer_Type.StatusBuffer)
+            })
+          }
+        }
+      })
+    listAdapter.setOnClickListener(this@BufferViewConfigFragment::clickListener)
+    listAdapter.setOnLongClickListener(this@BufferViewConfigFragment::longClickListener)
     chatList.adapter = listAdapter
 
     viewModel.selectedBuffer.toLiveData().observe(this, Observer { buffer ->
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 8904d4ae1..e61e55817 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
@@ -22,4 +22,3 @@ class ChannelInfoActivity : SettingsActivity(ChannelInfoFragment()) {
     }
   }
 }
-
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 255e89229..3c2839472 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
@@ -82,7 +82,6 @@ class ChatlineFragment : ServiceBoundFragment() {
     val view = inflater.inflate(R.layout.fragment_chatline, container, false)
     ButterKnife.bind(this, view)
 
-
     val editorViewModel = ViewModelProviders.of(this).get(EditorViewModel::class.java)
     editorViewModel.quasselViewModel.onNext(viewModel)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
index 68a1653c3..f2537f1d1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
@@ -54,7 +54,6 @@ class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.Me
 
     fun bind(data: CharSequence) {
       value = data
-
       content.text = data
     }
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
index 6e53f1c92..b4e9e903e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
@@ -234,4 +234,3 @@ class MessageAdapter @Inject constructor(
     }
   }
 }
-
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 f4c95212b..6a6be7434 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
@@ -247,7 +247,7 @@ class MessageListFragment : ServiceBoundFragment() {
                         expanded: Set<MsgId>, markerLine: MsgId?): List<DisplayMessage> {
       var previous: QuasselDatabase.DatabaseMessage? = null
       var previousDate: ZonedDateTime? = null
-      return list.asReversed().map {
+      return list.mapReverse {
         val date = it.time.atZone(ZoneId.systemDefault()).truncatedTo(ChronoUnit.DAYS)
         val isSameDay = previousDate?.isEqual(date) ?: false
         val isFollowUp = previous?.sender == it.sender && previous?.type == it.type && isSameDay
@@ -262,7 +262,7 @@ class MessageListFragment : ServiceBoundFragment() {
           isMarkerLine = markerLine == it.messageId,
           isEmoji = false
         )
-      }.asReversed()
+      }
     }
 
     val data = combineLatest(viewModel.buffer,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt
index 3a34a3bc7..58b09710e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt
@@ -21,4 +21,3 @@ interface MessageRenderer {
            isFollowUp: Boolean,
            isEmoji: Boolean) = Unit
 }
-
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 3bfae2fa0..68408c557 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
@@ -63,7 +63,6 @@ class NickListFragment : ServiceBoundFragment() {
     }
     nickList.itemAnimator = DefaultItemAnimator()
 
-
     val senderColors = requireContext().theme.styledAttributes(
       R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3,
       R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7,
@@ -76,56 +75,63 @@ class NickListFragment : ServiceBoundFragment() {
     }
 
     val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size)
-
-    viewModel.nickData.map {
-      it.map {
-        val nickName = it.nick
-        val senderColorIndex = IrcUserUtils.senderColor(nickName)
-        val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\')
-                           .firstOrNull() ?: nickName.firstOrNull()
-        val initial = rawInitial?.toUpperCase().toString()
-        val senderColor = senderColors[senderColorIndex]
-
-
-        fun formatNick(nick: CharSequence): CharSequence {
-          val spannableString = SpannableString(nick)
-          spannableString.setSpan(
-            ForegroundColorSpan(senderColor),
-            0,
-            nick.length,
-            SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
-          )
-          spannableString.setSpan(
-            StyleSpan(Typeface.BOLD),
-            0,
-            nick.length,
-            SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
+    viewModel.nickData.toLiveData().observe(this, Observer {
+      runInBackground {
+        it?.map {
+          val nickName = it.nick
+          val senderColorIndex = IrcUserUtils.senderColor(nickName)
+          val rawInitial = nickName.trimStart('-',
+                                              '_',
+                                              '[',
+                                              ']',
+                                              '{',
+                                              '}',
+                                              '|',
+                                              '`',
+                                              '^',
+                                              '.',
+                                              '\\')
+                             .firstOrNull() ?: nickName.firstOrNull()
+          val initial = rawInitial?.toUpperCase().toString()
+          val senderColor = senderColors[senderColorIndex]
+          fun formatNick(nick: CharSequence): CharSequence {
+            val spannableString = SpannableString(nick)
+            spannableString.setSpan(
+              ForegroundColorSpan(senderColor),
+              0,
+              nick.length,
+              SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
+            )
+            spannableString.setSpan(
+              StyleSpan(Typeface.BOLD),
+              0,
+              nick.length,
+              SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
+            )
+            return spannableString
+          }
+          it.copy(
+            displayNick = formatNick(it.nick),
+            fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor),
+            modes = when (messageSettings.showPrefix) {
+              MessageSettings.ShowPrefixMode.ALL ->
+                it.modes
+              else                               ->
+                it.modes.substring(0, Math.min(it.modes.length, 1))
+            },
+            realname = ircFormatDeserializer.formatString(
+              requireContext(), it.realname.toString(), messageSettings.colorizeMirc
+            ),
+            avatarUrls = AvatarHelper.avatar(messageSettings, it, avatarSize)
           )
-          return spannableString
-        }
-
-        it.copy(
-          displayNick = formatNick(it.nick),
-          fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor),
-          modes = when (messageSettings.showPrefix) {
-            MessageSettings.ShowPrefixMode.ALL ->
-              it.modes
-            else                               ->
-              it.modes.substring(0, Math.min(it.modes.length, 1))
-          },
-          realname = ircFormatDeserializer.formatString(
-            requireContext(), it.realname.toString(), messageSettings.colorizeMirc
-          ),
-          avatarUrls = AvatarHelper.avatar(messageSettings, it, avatarSize)
-        )
-      }.sortedBy {
-        IrcCaseMappers[it.networkCasemapping].toLowerCase(it.nick.trimStart(*IGNORED_CHARS))
-          .trimStart(*IGNORED_CHARS)
-      }.sortedBy {
-        it.lowestMode
+        }?.sortedBy {
+          IrcCaseMappers[it.networkCasemapping].toLowerCase(it.nick.trimStart(*IGNORED_CHARS))
+            .trimStart(*IGNORED_CHARS)
+        }?.sortedBy {
+          it.lowestMode
+        }?.let(nickListAdapter::submitList)
       }
-    }.toLiveData().observe(this, Observer(nickListAdapter::submitList))
-
+    })
     savedInstanceState?.run {
       nickList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
     }
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 7d3c08cd8..bf935c2e6 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
@@ -19,4 +19,3 @@ class TopicActivity : SettingsActivity(TopicFragment()) {
     }
   }
 }
-
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt
index 29251635e..87c2b85f9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt
@@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector
 abstract class AboutSettingsFragmentProvider {
   @ContributesAndroidInjector
   abstract fun bindAboutSettingsFragment(): AboutSettingsFragment
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt
index d90d86e1c..78bf7e6e2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt
@@ -4,4 +4,4 @@ data class Contributor(
   val name: String,
   val nickName: String,
   val description: String
-)
\ No newline at end of file
+)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt
index a5a3e7dfb..9949b05be 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt
@@ -41,4 +41,4 @@ class ContributorAdapter(private val contributors: List<Contributor>) :
       this.description.text = item.description
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt
index 21debd0ec..1d63953b0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt
@@ -5,4 +5,4 @@ data class Library(
   val version: String? = null,
   val license: License,
   val url: String? = null
-)
\ No newline at end of file
+)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt
index 29e4db909..4a8077a14 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt
@@ -6,4 +6,4 @@ data class License(
   val shortName: String,
   val fullName: String = shortName,
   @StringRes val text: Int
-)
\ No newline at end of file
+)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt
index 7981dc1f0..1a0bb25ff 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt
@@ -51,4 +51,4 @@ class AppSettingsFragment : DaggerPreferenceFragmentCompat(),
       updateSummary(preference)
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt
index 1c005598f..237399cb3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt
@@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector
 abstract class AppSettingsFragmentProvider {
   @ContributesAndroidInjector
   abstract fun bindAppSettingsFragment(): AppSettingsFragment
-}
\ No newline at end of file
+}
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 6c6ee0acc..eccdfb17b 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
@@ -78,4 +78,4 @@ class CrashAdapter : ListAdapter<Pair<Report, String>, CrashAdapter.CrashViewHol
       this.error.text = "${item.crash?.exception?.lines()?.firstOrNull()}"
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt
index 7d7c78eab..8c54633c4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt
@@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector
 abstract class CrashSettingsFragmentProvider {
   @ContributesAndroidInjector
   abstract fun bindAppSettingsFragment(): CrashSettingsFragment
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt
index 0e9cfb75e..a13da2823 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt
@@ -27,4 +27,4 @@ class LicenseSettingsFragment : DaggerFragment() {
 
     return view
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt
index 86cc6cff6..c1f290046 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt
@@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector
 abstract class LicenseSettingsFragmentProvider {
   @ContributesAndroidInjector
   abstract fun bindLicenseSettingsFragment(): LicenseSettingsFragment
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
index 2b0e5768a..3892a6474 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
@@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector
 abstract class CoreSettingsFragmentProvider {
   @ContributesAndroidInjector
   abstract fun CoreSettingsFragmentbind(): CoreSettingsFragment
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt
index 939c36527..7eba4efe0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt
@@ -3,4 +3,4 @@ package de.kuschku.quasseldroid.ui.coresettings
 data class SettingsItem(
   val id: Int,
   val name: String
-)
\ No newline at end of file
+)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt
index ac1812720..ee5858663 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt
@@ -50,4 +50,4 @@ class SettingsItemAdapter(private val clickListener: (Int) -> Unit) :
       this.title.text = item.name
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt
index d964fcfd3..84f18336a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt
@@ -27,8 +27,6 @@ import de.kuschku.quasseldroid.util.helper.toLiveData
 
 abstract class ChatListBaseFragment : SettingsFragment(), SettingsFragment.Savable,
                                       SettingsFragment.Changeable {
-  protected var chatlist: Pair<BufferViewConfig?, BufferViewConfig>? = null
-
   @BindView(R.id.buffer_view_name)
   lateinit var bufferViewName: EditText
 
@@ -62,6 +60,8 @@ abstract class ChatListBaseFragment : SettingsFragment(), SettingsFragment.Savab
   @BindView(R.id.hide_inactive_networks)
   lateinit var hideInactiveNetworks: SwitchCompat
 
+  protected var chatlist: Pair<BufferViewConfig?, BufferViewConfig>? = null
+
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                             savedInstanceState: Bundle?): View? {
     val view = inflater.inflate(R.layout.settings_chatlist, container, false)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt
index 2a36ed6f6..f32d01c1e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt
@@ -68,4 +68,3 @@ class MinimumActivityAdapter(val data: List<MinimumActivityItem>) :
     }
   }
 }
-
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt
index c70c42f33..ec292d7ef 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt
@@ -52,13 +52,9 @@ class NetworkAdapter : RecyclerSpinnerAdapter<NetworkAdapter.NetworkViewHolder>(
   }
 
   override fun getItem(position: Int): INetwork.NetworkInfo? = data[position]
-
   override fun getItemId(position: Int) = getItem(position)?.networkId?.toLong() ?: -1
-
   override fun hasStableIds() = true
-
   override fun getCount() = data.size
-
   class NetworkViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
     @BindView(android.R.id.text1)
     lateinit var text: TextView
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt
index ec80b42bd..724f719e4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt
@@ -22,7 +22,6 @@ import de.kuschku.quasseldroid.ui.coresettings.SettingsFragment
 import de.kuschku.quasseldroid.util.helper.setDependent
 import de.kuschku.quasseldroid.util.helper.toLiveData
 
-
 abstract class IdentityBaseFragment : SettingsFragment(), SettingsFragment.Savable,
                                       SettingsFragment.Changeable {
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt
index d7a0bfde0..cdaef171b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt
@@ -3,7 +3,6 @@ package de.kuschku.quasseldroid.ui.coresettings.identity
 import de.kuschku.libquassel.quassel.syncables.Identity
 import de.kuschku.libquassel.util.helpers.value
 
-
 class IdentityCreateFragment : IdentityBaseFragment() {
   override fun onSave() = viewModel.session.value?.orNull()?.let { session ->
     Identity(session.proxy).let { data ->
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt
index c95903662..4ba215fcd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt
@@ -95,4 +95,4 @@ class IdentityNicksAdapter(
       nick.text = item
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt
index b86e2ee16..c8ba877ac 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt
@@ -68,4 +68,3 @@ class IgnoreTypeAdapter(val data: List<IgnoreTypeItem>) :
     }
   }
 }
-
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt
index 21eec1e61..58762ec9d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt
@@ -68,4 +68,3 @@ class ScopeTypeAdapter(val data: List<ScopeTypeItem>) :
     }
   }
 }
-
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt
index a30682a30..59712d6a8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt
@@ -68,4 +68,3 @@ class StrictnessTypeAdapter(val data: List<StrictnessTypeItem>) :
     }
   }
 }
-
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt
index 234002202..0af5ac7f5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt
@@ -31,7 +31,6 @@ import kotlin.math.roundToInt
 
 abstract class NetworkBaseFragment : SettingsFragment(), SettingsFragment.Savable,
                                      SettingsFragment.Changeable {
-
   @BindView(R.id.network_name)
   lateinit var networkName: EditText
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt
index 80d697bef..2b1cb4473 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt
@@ -112,11 +112,9 @@ class NetworkServerAdapter(
         }
         false
       }
-
       secure = itemView.context.getVectorDrawableCompat(R.drawable.ic_lock)?.mutate()
       partiallySecure = itemView.context.getVectorDrawableCompat(R.drawable.ic_lock)?.mutate()
       insecure = itemView.context.getVectorDrawableCompat(R.drawable.ic_lock_open)?.mutate()
-
       itemView.context.theme.styledAttributes(
         R.attr.colorTintSecure,
         R.attr.colorTintPartiallySecure,
@@ -132,7 +130,6 @@ class NetworkServerAdapter(
       this.item = item
       host.text = item.host
       port.text = item.port.toString()
-
       sslEnabled.setImageDrawable(
         when {
           item.useSsl && item.sslVerify -> secure
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt
index e8c697a08..41019cd2d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt
@@ -18,8 +18,6 @@ import de.kuschku.quasseldroid.util.helper.toLiveData
 
 class NetworkConfigFragment : SettingsFragment(), SettingsFragment.Savable,
                               SettingsFragment.Changeable {
-  private var networkConfig: Pair<NetworkConfig, NetworkConfig>? = null
-
   @BindView(R.id.ping_timeout_enabled)
   lateinit var pingTimeoutEnabled: SwitchCompat
 
@@ -50,6 +48,8 @@ class NetworkConfigFragment : SettingsFragment(), SettingsFragment.Savable,
   @BindView(R.id.standard_ctcp)
   lateinit var standardCtcp: SwitchCompat
 
+  private var networkConfig: Pair<NetworkConfig, NetworkConfig>? = null
+
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                             savedInstanceState: Bundle?): View? {
     val view = inflater.inflate(R.layout.settings_networkconfig, container, false)
@@ -85,7 +85,6 @@ class NetworkConfigFragment : SettingsFragment(), SettingsFragment.Savable,
     return view
   }
 
-
   override fun onSave() = networkConfig?.let { (it, data) ->
     applyChanges(data)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
index f697f8a93..cf6c9aa4b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
@@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector
 abstract class NetworkConfigFragmentProvider {
   @ContributesAndroidInjector
   abstract fun bindNetworkConfigFragment(): NetworkConfigFragment
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt
index 378884151..adb22bf5d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt
@@ -64,4 +64,3 @@ class ProxyTypeAdapter(val data: List<ProxyTypeItem>) :
     }
   }
 }
-
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 02d965a96..e557b7c60 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
@@ -92,7 +92,7 @@ class AccountEditActivity : DaggerAppCompatActivity() {
       hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) =
-        text.toString().matches(Patterns.DOMAIN_NAME.toRegex())
+        text.toString().matches(Patterns.DOMAIN_NAME)
     }
 
     portValidator = object : TextValidator(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
index 4953c9c77..c7739dac3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
@@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector
 abstract class AccountSelectionFragmentProvider {
   @ContributesAndroidInjector
   abstract fun bindAccountSelectionSlide(): AccountSelectionSlide
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
index 670bb67b6..0ca13008f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt
@@ -17,6 +17,7 @@ import de.kuschku.quasseldroid.util.TextValidator
 class AccountSetupConnectionSlide : SlideFragment() {
   @BindView(R.id.hostWrapper)
   lateinit var hostWrapper: TextInputLayout
+
   @BindView(R.id.host)
   lateinit var hostField: EditText
 
@@ -54,7 +55,7 @@ class AccountSetupConnectionSlide : SlideFragment() {
       hostWrapper::setError, resources.getString(R.string.hint_invalid_host)
     ) {
       override fun validate(text: Editable) =
-        text.toString().matches(Patterns.DOMAIN_NAME.toRegex())
+        text.toString().matches(Patterns.DOMAIN_NAME)
 
       override fun onChanged() = updateValidity()
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
index bd29c83f4..327b82803 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
@@ -13,4 +13,4 @@ abstract class AccountSetupFragmentProvider {
 
   @ContributesAndroidInjector
   abstract fun bindAccountSetupUserSlide(): AccountSetupUserSlide
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
index e21728510..8224efecc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt
@@ -16,11 +16,13 @@ import de.kuschku.quasseldroid.util.TextValidator
 class AccountSetupUserSlide : SlideFragment() {
   @BindView(R.id.userWrapper)
   lateinit var userWrapper: TextInputLayout
+
   @BindView(R.id.user)
   lateinit var userField: EditText
 
   @BindView(R.id.passWrapper)
   lateinit var passWrapper: TextInputLayout
+
   @BindView(R.id.pass)
   lateinit var passField: EditText
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt
index c949a544c..afccc5d16 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt
@@ -42,7 +42,7 @@ object AvatarHelper {
   ).flatten()
 
   private fun gravatarFallback(realname: String, size: Int?): List<String> {
-    return Regex(Patterns.AUTOLINK_EMAIL_ADDRESS_STR)
+    return Patterns.AUTOLINK_EMAIL_ADDRESS
       .findAll(realname)
       .mapNotNull {
         it.groups[1]?.value
@@ -57,7 +57,7 @@ object AvatarHelper {
   }
 
   private fun ircCloudFallback(ident: String, size: Int?): List<String> {
-    val userId = Regex("(?:~?)[us]id(\\d+)").matchEntire(ident)?.groupValues?.lastOrNull()
+    val userId = Patterns.IRCCLOUD_IDENT.matchEntire(ident)?.groupValues?.lastOrNull()
                  ?: return emptyList()
 
     if (size != null) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt b/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt
index 69da950e2..85dd63f9b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt
@@ -1,7 +1,6 @@
 package de.kuschku.quasseldroid.util
 
 import org.intellij.lang.annotations.Language
-import java.util.regex.Pattern
 
 @SuppressWarnings("Access")
 object Patterns {
@@ -51,8 +50,7 @@ object Patterns {
 
   @Language("RegExp")
   const val DOMAIN_NAME_STR = """(?:$LOCAL_HOST_NAME|$HOST_NAME|$IP_ADDRESS_STRING)"""
-  val DOMAIN_NAME: Pattern = Pattern.compile(DOMAIN_NAME_STR)
-
+  val DOMAIN_NAME = Regex(DOMAIN_NAME_STR)
   /**
    * Regular expression for valid email characters. Does not include some of the valid characters
    * defined in RFC5321: #&~!^`{}/=$*?|
@@ -79,5 +77,11 @@ object Patterns {
    * and the special characters #&~!^`{}/=$*?| that are included in RFC5321.
    */
   const val AUTOLINK_EMAIL_ADDRESS_STR = """($WORD_BOUNDARY(?:$EMAIL_ADDRESS_LOCAL_PART@$EMAIL_ADDRESS_DOMAIN)$WORD_BOUNDARY)"""
-  val AUTOLINK_EMAIL_ADDRESS = Pattern.compile(AUTOLINK_EMAIL_ADDRESS_STR)
+  val AUTOLINK_EMAIL_ADDRESS = Regex(AUTOLINK_EMAIL_ADDRESS_STR)
+
+  /**
+   * Regular expression pattern to match IRCCloud user idents.
+   */
+  const val IRCCLOUD_IDENT_STR = """(?:~?)[us]id(\d+)"""
+  val IRCCLOUD_IDENT = Regex(IRCCLOUD_IDENT_STR)
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt
index 1e7087a50..09c79d9a8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt
@@ -7,7 +7,6 @@ import java.io.IOException
 import java.io.InputStream
 import java.util.concurrent.atomic.AtomicBoolean
 
-
 object AndroidThreeTenBackport {
   private val initialized = AtomicBoolean()
 
@@ -35,4 +34,4 @@ object AndroidThreeTenBackport {
 
     ZoneRulesProvider.registerProvider(provider)
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt b/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt
index 091db6ab6..a3513baf1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt
@@ -5,7 +5,6 @@ import java.nio.ByteBuffer
 import java.nio.channels.WritableByteChannel
 import java.nio.channels.spi.AbstractInterruptibleChannel
 
-
 class WritableWrappedChannel(
   private var backingStream: OutputStream
 ) : AbstractInterruptibleChannel(), WritableByteChannel {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt b/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt
index 3da80f703..01c9b848c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt
@@ -124,10 +124,10 @@ class AndroidHandlerService : HandlerService {
       }
     }
 
-    private class ScheduledRunnable internal constructor(private val handler: Handler,
-                                                         private val delegate: Runnable) : Runnable,
-                                                                                           Disposable {
-
+    private class ScheduledRunnable internal constructor(
+      private val handler: Handler,
+      private val delegate: Runnable
+    ) : Runnable, Disposable {
       @Volatile
       private var disposed: Boolean = false
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt
index 8bb2713f0..bccc72ecf 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt
@@ -7,4 +7,3 @@ inline fun <R> Boolean.letIf(block: () -> R): R? {
 inline fun <R> Boolean.letUnless(block: () -> R): R? {
   return if (this) null else block()
 }
-
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt
index b027f9d65..bcd39daae 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt
@@ -32,4 +32,4 @@ fun <T> Context.sharedPreferences(name: String? = null, mode: Int = 0,
     PreferenceManager.getDefaultSharedPreferences(this).f()
   } else {
     getSharedPreferences(name, mode).f()
-  }
\ No newline at end of file
+  }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt
index 90047347c..c993462c2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt
@@ -4,4 +4,4 @@ import android.graphics.drawable.Drawable
 import android.support.annotation.ColorInt
 import android.support.v4.graphics.drawable.DrawableCompat
 
-fun Drawable.tint(@ColorInt tint: Int) = DrawableCompat.setTint(this, tint)
\ No newline at end of file
+fun Drawable.tint(@ColorInt tint: Int) = DrawableCompat.setTint(this, tint)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt
index e8842c408..4bacbb234 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt
@@ -5,4 +5,4 @@ import android.support.design.widget.FloatingActionButton
 fun FloatingActionButton.toggle(visible: Boolean) {
   if (visible) show()
   else hide()
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt
index c760c8a60..310f9f8ec 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt
@@ -4,4 +4,4 @@ import com.google.gson.Gson
 import java.io.File
 
 inline fun <reified T> Gson.fromJson(file: File) = this.fromJson(file.reader(), T::class.java)
-inline fun <reified T> Gson.fromJson(text: String) = this.fromJson(text, T::class.java)
\ No newline at end of file
+inline fun <reified T> Gson.fromJson(text: String) = this.fromJson(text, T::class.java)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt
index 69c467371..3d2b73091 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt
@@ -1,4 +1,4 @@
 package de.kuschku.quasseldroid.util.helper
 
 val IntProgression.length: Int
-  get() = this.last + 1 - this.first
\ No newline at end of file
+  get() = this.last + 1 - this.first
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt
index fc62e431e..e4b3ab54f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt
@@ -10,4 +10,4 @@ infix fun IntRange.without(other: IntRange): Iterable<IntRange> {
   val endingFragment: IntRange = otherLast + 1 until this.last + 1
 
   return listOf(startingFragment, endingFragment).filter { it.last >= it.start }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ListHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ListHelper.kt
new file mode 100644
index 000000000..8c814bb10
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ListHelper.kt
@@ -0,0 +1,9 @@
+package de.kuschku.quasseldroid.util.helper
+
+inline fun <T, U> List<T>.mapReverse(mapper: (T) -> U): List<U> {
+  val result = mutableListOf<U>()
+  for (i in size - 1 downTo 0) {
+    result.add(0, mapper(this[i]))
+  }
+  return result
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt
index 47e7447e3..aaa7306ac 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt
@@ -5,4 +5,4 @@ import android.util.LruCache
 inline fun <K, V> LruCache<K, V>.getOrPut(key: K, value: () -> V) = get(key) ?: value().let {
   put(key, it)
   it
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
index 32a4c0e5b..eeb22f6b3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
@@ -16,4 +16,4 @@ fun Menu.retint(context: Context) {
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt
index 6d107d6f5..ee771dcb5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt
@@ -12,4 +12,4 @@ val CharSequence.selection: IntRange
   }
 
 val EditText.selection: IntRange
-  get() = text.selection
\ No newline at end of file
+  get() = text.selection
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt
index aff438caa..211c5f640 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt
@@ -12,4 +12,4 @@ fun SwitchCompat.setDependent(view: ViewGroup, reverse: Boolean = false) {
       AnimationHelper.collapse(view)
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt
index c5f2724c6..abb9842a0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt
@@ -12,4 +12,4 @@ inline fun <R> TypedArray.use(block: (TypedArray) -> R): R {
   val result = block(this)
   recycle()
   return result
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
index 7c68c06c6..5bc19c013 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt
@@ -65,4 +65,4 @@ class ContentFormatter @Inject constructor(
 
     return text
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt
index ea59e13db..e6957ebd5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt
@@ -1,27 +1,5 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation, either version 3 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
 package de.kuschku.quasseldroid.util.irc.format
 
-
 import android.content.Context
 import android.text.SpannableStringBuilder
 import android.text.Spanned
@@ -309,7 +287,6 @@ class IrcFormatDeserializer @Inject constructor() {
   }
 
   private class FormatDescription<out U : IrcFormat>(val start: Int, val format: U) {
-
     fun apply(editable: SpannableStringBuilder, end: Int) {
       format.applyTo(editable, start, end)
     }
@@ -346,7 +323,6 @@ class IrcFormatDeserializer @Inject constructor() {
   }
 
   private inner class HexIrcFormat(val foreground: Int, val background: Int) : IrcFormat {
-
     override fun applyTo(editable: SpannableStringBuilder, from: Int, to: Int) {
       if (foreground >= 0) {
         editable.setSpan(
@@ -365,7 +341,6 @@ class IrcFormatDeserializer @Inject constructor() {
 
   private inner class ColorIrcFormat(val foreground: Byte, val background: Byte,
                                      val mircColors: IntArray) : IrcFormat {
-
     override fun applyTo(editable: SpannableStringBuilder, from: Int, to: Int) {
       if (foreground.toInt() >= 0 && foreground.toInt() < mircColors.size) {
         editable.setSpan(
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 2fbed102a..15ee758d7 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
@@ -43,7 +43,6 @@ abstract class ServiceBoundActivity : AppCompatActivity(),
   protected val backend: BehaviorSubject<Optional<Backend>>
     get() = connection.backend
 
-
   @Inject
   lateinit var supportFragmentInjector: DispatchingAndroidInjector<Fragment>
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt
index 0007abab4..9851180c7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt
@@ -59,4 +59,4 @@ object AnimationHelper {
       }
     })
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt
index 2e82c5271..6a5ab0c6f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt
@@ -21,4 +21,4 @@ class AutoCompleteRecyclerView : RecyclerView {
       )
     )
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt
index 6856596c4..36141fd17 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt
@@ -1,5 +1,3 @@
-package de.kuschku.quasseldroid.util.ui
-
 /*
  * Copyright (C) 2013 The Android Open Source Project
  *
@@ -15,6 +13,7 @@ package de.kuschku.quasseldroid.util.ui
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package de.kuschku.quasseldroid.util.ui
 
 import android.content.Context
 import android.util.AttributeSet
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt
index 3732bd811..53a3997c5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt
@@ -31,7 +31,6 @@ abstract class RecyclerSpinnerAdapter<VH : RecyclerView.ViewHolder> : BaseAdapte
     return holder.itemView
   }
 
-
   protected abstract fun onBindViewHolder(holder: VH, position: Int)
   protected abstract fun onCreateViewHolder(parent: ViewGroup, dropDown: Boolean): VH
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt
index 003cf1c4b..390d097d3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt
@@ -1,18 +1,3 @@
-package de.kuschku.quasseldroid.util.ui
-
-import android.content.Context
-import android.content.res.TypedArray
-import android.support.v7.preference.Preference
-import android.support.v7.preference.PreferenceViewHolder
-import android.support.v7.widget.AppCompatSeekBar
-import android.util.AttributeSet
-import android.util.Log
-import android.widget.SeekBar
-import android.widget.TextView
-import butterknife.BindView
-import butterknife.ButterKnife
-import de.kuschku.quasseldroid.R
-
 /*
  * Copyright (c) 2015 IRCCloud, Ltd.
  *
@@ -28,8 +13,22 @@ import de.kuschku.quasseldroid.R
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener {
+package de.kuschku.quasseldroid.util.ui
 
+import android.content.Context
+import android.content.res.TypedArray
+import android.support.v7.preference.Preference
+import android.support.v7.preference.PreferenceViewHolder
+import android.support.v7.widget.AppCompatSeekBar
+import android.util.AttributeSet
+import android.util.Log
+import android.widget.SeekBar
+import android.widget.TextView
+import butterknife.BindView
+import butterknife.ButterKnife
+import de.kuschku.quasseldroid.R
+
+class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener {
   private val TAG = javaClass.name
 
   private var maxValue = 100
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt
index 86ac9b86f..06d18039d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt
@@ -30,7 +30,6 @@ abstract class SettingsActivity(private val fragment: Fragment? = null) : Servic
     supportActionBar?.setDisplayHomeAsUpEnabled(true)
 
     val fragment = this.fragment ?: this.fragment()
-
     if (fragment != null) {
       val transaction = supportFragmentManager.beginTransaction()
       fragment.arguments = arguments
diff --git a/app/src/main/res/layout/widget_chatmessage_plain.xml b/app/src/main/res/layout/widget_chatmessage_plain.xml
index 769d36af7..e92c0e0b5 100644
--- a/app/src/main/res/layout/widget_chatmessage_plain.xml
+++ b/app/src/main/res/layout/widget_chatmessage_plain.xml
@@ -54,10 +54,10 @@
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_vertical"
-      android:textColor="?attr/colorForegroundSecondary"
-      android:visibility="gone"
       android:ellipsize="marquee"
       android:singleLine="true"
+      android:textColor="?attr/colorForegroundSecondary"
+      android:visibility="gone"
       tools:text="@sample/messages.json/data/sender"
       tools:visibility="visible" />
 
diff --git a/buildSrc/src/main/kotlin/ProjectHelper.kt b/buildSrc/src/main/kotlin/ProjectHelper.kt
index a2c9119a7..26746aeaa 100644
--- a/buildSrc/src/main/kotlin/ProjectHelper.kt
+++ b/buildSrc/src/main/kotlin/ProjectHelper.kt
@@ -21,4 +21,4 @@ fun Project.properties(fileName: String): Properties? {
   val props = Properties()
   props.load(file.inputStream())
   return props
-}
\ No newline at end of file
+}
diff --git a/buildSrc/src/main/kotlin/VersionContext.kt b/buildSrc/src/main/kotlin/VersionContext.kt
index 806b41a63..8a5832913 100644
--- a/buildSrc/src/main/kotlin/VersionContext.kt
+++ b/buildSrc/src/main/kotlin/VersionContext.kt
@@ -4,4 +4,4 @@ inline fun withVersion(version: Any?, f: VersionContext.() -> Unit) {
   (version as? String)?.let {
     VersionContext(version).f()
   }
-}
\ No newline at end of file
+}
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt
index 8018c79d7..97e074021 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt
@@ -67,4 +67,4 @@ inline fun <reified U> QVariant_?.valueOrThrow(e: Throwable = NullPointerExcepti
   this?.data as? U ?: throw e
 
 inline fun <reified U> QVariant_?.valueOrThrow(e: () -> Throwable): U =
-  this?.data as? U ?: throw e()
\ No newline at end of file
+  this?.data as? U ?: throw e()
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt
index 44a70bef0..9c293a96e 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt
@@ -3,7 +3,6 @@ package de.kuschku.libquassel.protocol
 import de.kuschku.libquassel.protocol.primitive.serializer.*
 import java.util.*
 
-
 enum class Type(val id: kotlin.Int, val serializer: Serializer<*>? = null) {
   Void(0, VoidSerializer),
   Bool(1, BoolSerializer),
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt
index de9c099f9..203a15225 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt
@@ -51,21 +51,21 @@ enum class LegacyFeature(override val bit: Int) :
     fun fromExtended(it: ExtendedFeature) = when (it) {
       ExtendedFeature.SynchronizedMarkerLine -> LegacyFeature.SynchronizedMarkerLine
       ExtendedFeature.SaslAuthentication     -> LegacyFeature.SaslAuthentication
-      ExtendedFeature.SaslExternal           -> LegacyFeature.SaslExternal
-      ExtendedFeature.HideInactiveNetworks   -> LegacyFeature.HideInactiveNetworks
-      ExtendedFeature.PasswordChange         -> LegacyFeature.PasswordChange
-      ExtendedFeature.CapNegotiation         -> LegacyFeature.CapNegotiation
-      ExtendedFeature.VerifyServerSSL        -> LegacyFeature.VerifyServerSSL
-      ExtendedFeature.CustomRateLimits       -> LegacyFeature.CustomRateLimits
-      ExtendedFeature.DccFileTransfer        -> LegacyFeature.DccFileTransfer
-      ExtendedFeature.AwayFormatTimestamp -> LegacyFeature.AwayFormatTimestamp
-      ExtendedFeature.Authenticators      -> LegacyFeature.Authenticators
-      ExtendedFeature.BufferActivitySync  -> LegacyFeature.BufferActivitySync
-      ExtendedFeature.CoreSideHighlights  -> LegacyFeature.CoreSideHighlights
-      ExtendedFeature.SenderPrefixes      -> LegacyFeature.SenderPrefixes
-      ExtendedFeature.RemoteDisconnect    -> LegacyFeature.RemoteDisconnect
-      ExtendedFeature.ExtendedFeatures    -> LegacyFeature.ExtendedFeatures
-      else                                -> null
+      ExtendedFeature.SaslExternal         -> LegacyFeature.SaslExternal
+      ExtendedFeature.HideInactiveNetworks -> LegacyFeature.HideInactiveNetworks
+      ExtendedFeature.PasswordChange       -> LegacyFeature.PasswordChange
+      ExtendedFeature.CapNegotiation       -> LegacyFeature.CapNegotiation
+      ExtendedFeature.VerifyServerSSL      -> LegacyFeature.VerifyServerSSL
+      ExtendedFeature.CustomRateLimits     -> LegacyFeature.CustomRateLimits
+      ExtendedFeature.DccFileTransfer      -> LegacyFeature.DccFileTransfer
+      ExtendedFeature.AwayFormatTimestamp  -> LegacyFeature.AwayFormatTimestamp
+      ExtendedFeature.Authenticators       -> LegacyFeature.Authenticators
+      ExtendedFeature.BufferActivitySync   -> LegacyFeature.BufferActivitySync
+      ExtendedFeature.CoreSideHighlights   -> LegacyFeature.CoreSideHighlights
+      ExtendedFeature.SenderPrefixes       -> LegacyFeature.SenderPrefixes
+      ExtendedFeature.RemoteDisconnect     -> LegacyFeature.RemoteDisconnect
+      ExtendedFeature.ExtendedFeatures     -> LegacyFeature.ExtendedFeatures
+      else                                 -> null
     }
   }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt
index 965f4905b..9a8b2b6e7 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt
@@ -24,4 +24,3 @@ class QuasselFeatures(
     fun all() = QuasselFeatures(ExtendedFeature.values().toSet(), emptySet())
   }
 }
-
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt
index e4fd7384f..aba33f238 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt
@@ -6,4 +6,4 @@ class DeserializationException : Exception {
   constructor(p0: String?, p1: Throwable?) : super(p0, p1)
   constructor(p0: Throwable?) : super(p0)
   constructor(p0: String?, p1: Throwable?, p2: Boolean, p3: Boolean) : super(p0, p1, p2, p3)
-}
\ No newline at end of file
+}
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt
index 93f36ceee..f3032a1b3 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt
@@ -13,4 +13,4 @@ sealed class MessageHandlingException(cause: Throwable?) : Exception(cause) {
     val source: HandshakeMessage,
     cause: Throwable?
   ) : MessageHandlingException(cause)
-}
\ No newline at end of file
+}
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 737c47465..597090022 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
@@ -5,15 +5,13 @@ import de.kuschku.libquassel.protocol.Type
 import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.quassel.syncables.interfaces.IBufferSyncer
 import de.kuschku.libquassel.session.ISession
-import de.kuschku.libquassel.session.SignalProxy
 import de.kuschku.libquassel.util.irc.IrcCaseMappers
 import io.reactivex.Observable
 import io.reactivex.subjects.BehaviorSubject
 
 class BufferSyncer constructor(
-  proxy: SignalProxy,
   private val session: ISession
-) : SyncableObject(proxy, "BufferSyncer"), IBufferSyncer {
+) : SyncableObject(session.proxy, "BufferSyncer"), IBufferSyncer {
   fun lastSeenMsg(buffer: BufferId): MsgId = _lastSeenMsg[buffer] ?: 0
   fun liveLastSeenMsg(buffer: BufferId): Observable<MsgId> = live_lastSeenMsg.map {
     markerLine(buffer)
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt
index fc168007d..8ce519c61 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt
@@ -22,7 +22,6 @@ class IrcUser(
   }
 
   override fun toVariantMap() = initProperties()
-
   override fun fromVariantMap(properties: QVariantMap) {
     initSetProperties(properties)
   }
@@ -64,7 +63,6 @@ class IrcUser(
     setWhoisServiceReply(properties["whoisServiceReply"].valueOr(this::whoisServiceReply))
     setSuserHost(properties["suserHost"].valueOr(this::suserHost))
     setEncrypted(properties["encrypted"].valueOr(this::encrypted))
-
     setUserModes(properties["userModes"].valueOr(this::userModes))
   }
 
@@ -253,106 +251,93 @@ class IrcUser(
   }
 
   private val hasChangedNotification = BehaviorSubject.createDefault(Unit)
+
   private var _nick: String = HostmaskHelper.nick(hostmask)
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _user: String = HostmaskHelper.user(hostmask)
-
+    set(value) {
+      field = value
+      hasChangedNotification.onNext(Unit)
+    }
   private var _host: String = HostmaskHelper.host(hostmask)
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _realName: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _account: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _awayMessage: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _away: Boolean = false
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _server: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _idleTime: Instant = Instant.EPOCH
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _idleTimeSet: Instant = Instant.EPOCH
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _loginTime: Instant = Instant.EPOCH
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _ircOperator: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _lastAwayMessage: Int = 0
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _whoisServiceReply: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _suserHost: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _encrypted: Boolean = false
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _channels: MutableSet<IrcChannel> = mutableSetOf()
-
   private var _userModes: String = ""
     set(value) {
       field = value
       hasChangedNotification.onNext(Unit)
     }
-
   private var _network: Network = network
   private var _codecForEncoding: Charset? = null
   private var _codecForDecoding: Charset? = null
@@ -361,4 +346,3 @@ class IrcUser(
     val NULL = IrcUser("", Network.NULL, SignalProxy.NULL)
   }
 }
-
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt
index 6e771258a..16d50a6f2 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt
@@ -550,7 +550,6 @@ class Network constructor(
    *
    * @param useCustomRate If true, use custom rate limits, otherwise use Quassel defaults.
    */
-
   override fun setUseCustomMessageRate(useCustomRate: Boolean) {
     if (_useCustomMessageRate == useCustomRate)
       return
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt
index 2332cef6b..65b5d0771 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt
@@ -15,7 +15,6 @@ class NetworkConfig constructor(
   }
 
   override fun toVariantMap() = initProperties()
-
   override fun fromVariantMap(properties: QVariantMap) {
     initSetProperties(properties)
   }
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt
index aa7fe2473..3c5576843 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt
@@ -28,13 +28,13 @@ interface ISyncableObject {
   fun toVariantMap(): QVariantMap = emptyMap()
 }
 
-/*inline*/ fun ISyncableObject.SYNC(function: String, vararg arg: QVariant_) {
+inline fun ISyncableObject.SYNC(function: String, vararg arg: QVariant_) {
   // Don’t transmit calls back that we just got from the network
   if (initialized && proxy.shouldSync(className, objectName, function))
     proxy.callSync(className, objectName, function, arg.toList())
 }
 
-/*inline*/ fun ISyncableObject.REQUEST(function: String, vararg arg: QVariant_) {
+inline fun ISyncableObject.REQUEST(function: String, vararg arg: QVariant_) {
   // Don’t transmit calls back that we just got from the network
   if (initialized && proxy.shouldSync(className, objectName, function))
     proxy.callSync(className, objectName, function, arg.toList())
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
index 5b22f88e9..69b4dd3b0 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
@@ -124,6 +124,7 @@ class CoreConnection(
   override fun close() {
     try {
       setState(ConnectionState.CLOSED)
+      interrupt()
     } catch (e: Throwable) {
       log(WARN, TAG, "Error encountered while closing connection", e)
     }
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/Features.kt b/lib/src/main/java/de/kuschku/libquassel/session/Features.kt
index ec68eac89..e8a1d04b0 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/Features.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/Features.kt
@@ -11,4 +11,4 @@ data class Features(
       core.enabledFeatures intersect client.enabledFeatures,
       core.unknownFeatures union client.unknownFeatures
     )
-}
\ No newline at end of file
+}
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt b/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt
index d35de1f70..8e1762ebd 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt
@@ -35,9 +35,7 @@ interface ISession : Closeable {
   val initStatus: Observable<Pair<Int, Int>>
 
   val proxy: SignalProxy
-
   val error: Flowable<HandshakeMessage>
-
   val lag: Observable<Long>
 
   fun login(user: String, pass: String)
@@ -70,7 +68,6 @@ interface ISession : Closeable {
       override val lag: Observable<Long> = Observable.just(0L)
 
       override fun login(user: String, pass: String) = Unit
-
       override fun close() = Unit
     }
   }
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt
index d6b239c38..f10d766b9 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt
@@ -15,12 +15,10 @@ import java.io.Closeable
 
 @Suppress("LeakingThis")
 abstract class ProtocolHandler(
-  protected val exceptionHandler: (Throwable) -> Unit
+  private val exceptionHandler: (Throwable) -> Unit
 ) : SignalProxy, AuthHandler, Closeable {
   protected var closed = false
-
-  private val objectStorage: ObjectStorage = ObjectStorage(this)
-
+  protected abstract val objectStorage: ObjectStorage
   protected open var rpcHandler: RpcHandler? = null
 
   private val toInit = mutableMapOf<ISyncableObject, MutableList<SignalProxyMessage.SyncMessage>>()
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/Session.kt b/lib/src/main/java/de/kuschku/libquassel/session/Session.kt
index ec0bb88ee..293c1f94a 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/Session.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/Session.kt
@@ -24,6 +24,7 @@ class Session(
   val disconnectFromCore: () -> Unit,
   exceptionHandler: (Throwable) -> Unit
 ) : ProtocolHandler(exceptionHandler), ISession {
+  override val objectStorage: ObjectStorage = ObjectStorage(this)
   override val proxy: SignalProxy = this
   override val features = Features(clientData.clientFeatures, QuasselFeatures.empty())
 
@@ -41,7 +42,7 @@ class Session(
   override val aliasManager = AliasManager(this)
   override val backlogManager = BacklogManager(this, backlogStorage)
   override val bufferViewManager = BufferViewManager(this)
-  override val bufferSyncer = BufferSyncer(this, this)
+  override val bufferSyncer = BufferSyncer(this)
   override val certManagers = mutableMapOf<IdentityId, CertManager>()
   override val coreInfo = CoreInfo(this)
   override val dccConfig = DccConfig(this)
@@ -210,7 +211,6 @@ class Session(
 
   override fun dispatch(message: SignalProxyMessage) {
     if (closed) return
-
     coreConnection.dispatch(message)
   }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt b/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt
index 998c248ad..aca8f7281 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt
@@ -41,4 +41,4 @@ object CRCUtils {
     }
     return crcout
   }
-}
\ No newline at end of file
+}
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt b/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt
index a2bf8f950..668b1462e 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt
@@ -54,4 +54,4 @@ object IrcUserUtils {
       else
         lastIndex
     }
-}
\ No newline at end of file
+}
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt
index 9081e1eef..fb5279105 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt
@@ -126,4 +126,4 @@ infix operator fun <T> LongFlags<T>.minus(other: LongFlags<T>): LongFlags<T>
 
 infix fun <T> LongFlags<T>.unset(which: T): LongFlags<T>
   where T : Enum<T>, T : LongFlag<T> = LongFlags(
-  value xor which.bit)
\ No newline at end of file
+  value xor which.bit)
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt
index 2ef747380..b7e4baed3 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt
@@ -131,4 +131,4 @@ infix operator fun <T> ShortFlags<T>.minus(other: ShortFlags<T>): ShortFlags<T>
 
 infix fun <T> ShortFlags<T>.unset(which: T): ShortFlags<T>
   where T : Enum<T>, T : ShortFlag<T> = ShortFlags(
-  value xor which.bit)
\ No newline at end of file
+  value xor which.bit)
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt
index 2335af048..86bff28e0 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt
@@ -1,4 +1,4 @@
 inline fun Int.clamp(lowerBound: Int, upperBound: Int): Int =
   maxOf(lowerBound, minOf(this, upperBound))
 
-inline fun Int.clamp(range: IntRange): Int = clamp(range.start, range.last)
\ No newline at end of file
+inline fun Int.clamp(range: IntRange): Int = clamp(range.start, range.last)
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt b/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt
index 037c61829..ab217dade 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt
@@ -8,11 +8,11 @@ object IrcCaseMappers {
 
   interface IrcCaseMapper {
     fun equalsIgnoreCase(a: String, b: String): Boolean
-    fun equalsIgnoreCaseNullable(a: String?, b: String?) =  when {
+    fun equalsIgnoreCaseNullable(a: String?, b: String?) = when {
       a === null && b === null -> true
-      a === null -> false
-      b === null -> false
-      else -> this.equalsIgnoreCase(a, b)
+      a === null               -> false
+      b === null               -> false
+      else                     -> this.equalsIgnoreCase(a, b)
     }
 
     fun toLowerCase(value: String): String
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt b/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt
index 26fe1d2d9..77916e146 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt
@@ -4,7 +4,6 @@ import java.nio.ByteBuffer
 import java.nio.channels.WritableByteChannel
 import java.util.*
 
-
 class ChainedByteBuffer(private val bufferSize: Int = 1024, private val direct: Boolean = false) {
   private val bufferList: MutableList<ByteBuffer> = ArrayList()
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt b/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt
index 50fefbed5..558603f36 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt
@@ -20,7 +20,6 @@ import javax.net.ssl.SSLContext
 import javax.net.ssl.SSLSocket
 import javax.net.ssl.X509TrustManager
 
-
 class WrappedChannel(
   private val socket: Socket,
   private var rawInStream: InputStream? = null,
diff --git a/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt b/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt
index a1292b3b6..f157fca99 100644
--- a/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt
+++ b/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt
@@ -3,7 +3,6 @@ package de.kuschku.libquassel
 import de.kuschku.libquassel.protocol.*
 import de.kuschku.libquassel.quassel.ProtocolFeature
 import de.kuschku.libquassel.quassel.QuasselFeatures
-import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
 import de.kuschku.libquassel.session.BacklogStorage
 import de.kuschku.libquassel.session.ConnectionState
 import de.kuschku.libquassel.session.Session
@@ -32,6 +31,7 @@ class ConnectionUnitTest {
   }
 
   private fun runTest(host: String, port: Int, user: String, pass: String) {
+    val start = System.currentTimeMillis()
     val session = Session(
       ClientData(
         identifier = "libquassel test",
@@ -61,16 +61,9 @@ class ConnectionUnitTest {
     }, user to pass, {}, {})
     session.state.subscribe {
       if (it == ConnectionState.CONNECTED) {
-        session.rpcHandler?.createNetwork(INetwork.NetworkInfo(
-          networkName = "QuakeNet",
-          identity = session.identities.values.firstOrNull()?.id()!!,
-          serverList = listOf(
-            INetwork.Server(
-              host = "irc.quakenet.org",
-              port = 6667
-            )
-          )
-        ), emptyList())
+        val end = System.currentTimeMillis()
+        println("Connection took ${0.001 * (end - start)} seconds")
+        session.close()
       }
     }
     session.join()
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt
index 45f74e097..23049fc82 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt
@@ -144,4 +144,4 @@ inline operator fun <T> LiveData<T>.invoke() = value
 
 inline operator fun <T, U> LiveData<T?>.invoke(f: (T) -> U?) = value?.let(f)
 
-inline fun <T, U> LiveData<T>.let(f: (T) -> U?) = value?.let(f)
\ No newline at end of file
+inline fun <T, U> LiveData<T>.let(f: (T) -> U?) = value?.let(f)
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt
index 192049fc9..83d3faa30 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt
@@ -15,7 +15,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-
 package de.kuschku.quasseldroid.util.helper
 
 import android.arch.lifecycle.LiveData
@@ -104,4 +103,4 @@ fun <A, B> LiveData<A>.zip(b: LiveData<B>): LiveData<Pair<A, B>> =
  */
 fun <A, B, C> LiveData<A>.zip(b: LiveData<B>,
                               c: LiveData<C>): LiveData<Triple<A, B, C>> =
-  zipLiveData(this, b, c)
\ No newline at end of file
+  zipLiveData(this, b, c)
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt
index c4a11b6ee..59672d921 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt
@@ -5,4 +5,3 @@ enum class BufferHiddenState {
   HIDDEN_TEMPORARY,
   HIDDEN_PERMANENT
 }
-
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt
index 76f60e254..47499580b 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt
@@ -3,4 +3,4 @@ package de.kuschku.quasseldroid.viewmodel.data
 data class BufferListItem(
   val props: BufferProps,
   val state: BufferState
-)
\ No newline at end of file
+)
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt
index ccc6258dc..73d381b55 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt
@@ -16,4 +16,4 @@ data class BufferProps(
     BufferInfo.Activity.NoActivity
   ),
   val hiddenState: BufferHiddenState
-)
\ No newline at end of file
+)
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt
index b95936c90..ddb6a7583 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt
@@ -3,4 +3,4 @@ package de.kuschku.quasseldroid.viewmodel.data
 data class BufferState(
   val networkExpanded: Boolean,
   val selected: Boolean
-)
\ No newline at end of file
+)
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt
index a586e1eb3..b8dcdcd22 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt
@@ -4,4 +4,4 @@ enum class BufferStatus {
   ONLINE,
   AWAY,
   OFFLINE
-}
\ No newline at end of file
+}
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt
index 21daf1af6..951e2fd70 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt
@@ -8,4 +8,4 @@ data class SelectedBufferItem(
   val connectionState: INetwork.ConnectionState = INetwork.ConnectionState.Disconnected,
   val joined: Boolean = false,
   val hiddenState: BufferHiddenState = BufferHiddenState.VISIBLE
-)
\ No newline at end of file
+)
-- 
GitLab