diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index be54154de0bb1c97420932abedd2480a37097b06..753d81c0cf28945c6a231f0f8d4618a3e5fef3a7 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -127,8 +127,6 @@ dependencies {
   }
   implementation(project(":malheur"))
 
-  debugImplementation("com.squareup.leakcanary", "leakcanary-android", "1.5.1")
-
   testImplementation(appArch("persistence.room", "testing"))
   testImplementation("junit", "junit", "4.12")
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt
index bb0a3058a69977280c095060504810a23634e4c0..16c3177cf8eea0c51e9c9365baed107c3d07c389 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt
@@ -14,16 +14,6 @@ import de.kuschku.quasseldroid_ng.util.helper.systemService
 
 class QuasseldroidNG : Application() {
   override fun onCreate() {
-    /*
-    // We do not need LeakCanary in RELEASE builds
-    if (LeakCanary.isInAnalyzerProcess(this)) {
-      // This process is dedicated to LeakCanary for heap analysis.
-      // You should not init your app in this process.
-      return
-    }
-    LeakCanary.install(this)
-    */
-
     CrashHandler.init(
       application = this,
       buildConfig = BuildConfig::class.java
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/AccountDatabase.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/AccountDatabase.kt
index d17a86787a3edba242398e328e592c17f80b27f0..d5429e0452084723a2fb22013ea222c239a24141 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/AccountDatabase.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/AccountDatabase.kt
@@ -4,7 +4,7 @@ import android.arch.paging.LivePagedListProvider
 import android.arch.persistence.room.*
 import android.content.Context
 
-@Database(entities = arrayOf(AccountDatabase.Account::class), version = 1)
+@Database(entities = [(AccountDatabase.Account::class)], version = 1)
 abstract class AccountDatabase : RoomDatabase() {
   abstract fun accounts(): AccountDao
 
@@ -52,8 +52,10 @@ abstract class AccountDatabase : RoomDatabase() {
       if (database == null) {
         synchronized(LOCK) {
           if (database == null) {
-            database = Room.databaseBuilder(context.applicationContext,
-                                            AccountDatabase::class.java, DATABASE_NAME)
+            database = Room.databaseBuilder(
+              context.applicationContext,
+              AccountDatabase::class.java, DATABASE_NAME
+            )
               .build()
           }
         }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselBacklogStorage.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselBacklogStorage.kt
index b05e47731b35f969a2463874a44be90213b9f7db..dd8b2b764d6b1423b8f822096f9eae334da51b37 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselBacklogStorage.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselBacklogStorage.kt
@@ -21,16 +21,18 @@ class QuasselBacklogStorage(private val db: QuasselDatabase) : BacklogStorage {
       }
 
     for (message in messages) {
-      db.message().save(QuasselDatabase.DatabaseMessage(
-        messageId = message.messageId,
-        time = message.time,
-        type = message.type.value,
-        flag = message.flag.value,
-        bufferId = message.bufferInfo.bufferId,
-        sender = message.sender,
-        senderPrefixes = message.senderPrefixes,
-        content = message.content
-      ))
+      db.message().save(
+        QuasselDatabase.DatabaseMessage(
+          messageId = message.messageId,
+          time = message.time,
+          type = message.type.value,
+          flag = message.flag.value,
+          bufferId = message.bufferInfo.bufferId,
+          sender = message.sender,
+          senderPrefixes = message.senderPrefixes,
+          content = message.content
+        )
+      )
     }
   }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt
index 723a937a9080793f2e0d3f12071507d98d206bbb..714246e92570273cb2de020664c0cd3d69a0d951 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt
@@ -9,7 +9,7 @@ import de.kuschku.libquassel.protocol.Message_Flag
 import de.kuschku.libquassel.protocol.Message_Type
 import org.threeten.bp.Instant
 
-@Database(entities = arrayOf(QuasselDatabase.DatabaseMessage::class), version = 2)
+@Database(entities = [(QuasselDatabase.DatabaseMessage::class)], version = 2)
 @TypeConverters(QuasselDatabase.DatabaseMessage.MessageTypeConverters::class)
 abstract class QuasselDatabase : RoomDatabase() {
   abstract fun message(): MessageDao
@@ -35,15 +35,19 @@ abstract class QuasselDatabase : RoomDatabase() {
 
     override fun toString(): String {
       return "Message(messageId=$messageId, time=$time, type=${Message_Type.of(
-        type)}, flag=${Message_Flag.of(
-        flag)}, bufferId=$bufferId, sender='$sender', senderPrefixes='$senderPrefixes', content='$content')"
+        type
+      )}, flag=${Message_Flag.of(
+        flag
+      )}, bufferId=$bufferId, sender='$sender', senderPrefixes='$senderPrefixes', content='$content')"
     }
 
     object MessageDiffCallback : DiffCallback<DatabaseMessage>() {
-      override fun areContentsTheSame(oldItem: QuasselDatabase.DatabaseMessage, newItem: QuasselDatabase.DatabaseMessage)
+      override fun areContentsTheSame(oldItem: QuasselDatabase.DatabaseMessage,
+                                      newItem: QuasselDatabase.DatabaseMessage)
         = oldItem == newItem
 
-      override fun areItemsTheSame(oldItem: QuasselDatabase.DatabaseMessage, newItem: QuasselDatabase.DatabaseMessage)
+      override fun areItemsTheSame(oldItem: QuasselDatabase.DatabaseMessage,
+                                   newItem: QuasselDatabase.DatabaseMessage)
         = oldItem.messageId == newItem.messageId
     }
   }
@@ -80,7 +84,9 @@ abstract class QuasselDatabase : RoomDatabase() {
     @Query("DELETE FROM message WHERE bufferId = :bufferId")
     fun clearMessages(@IntRange(from = 0) bufferId: Int)
 
-    @Query("DELETE FROM message WHERE bufferId = :bufferId AND messageId >= :first AND messageId <= :last")
+    @Query(
+      "DELETE FROM message WHERE bufferId = :bufferId AND messageId >= :first AND messageId <= :last"
+    )
     fun clearMessages(@IntRange(from = 0) bufferId: Int, first: Int, last: Int)
   }
 
@@ -94,8 +100,10 @@ abstract class QuasselDatabase : RoomDatabase() {
       if (database == null) {
         synchronized(LOCK) {
           if (database == null) {
-            database = Room.databaseBuilder(context.applicationContext,
-              QuasselDatabase::class.java, DATABASE_NAME)
+            database = Room.databaseBuilder(
+              context.applicationContext,
+              QuasselDatabase::class.java, DATABASE_NAME
+            )
               .build()
           }
         }
@@ -109,6 +117,7 @@ abstract class QuasselDatabase : RoomDatabase() {
   }
 }
 
-fun QuasselDatabase.MessageDao.clearMessages(@IntRange(from = 0) bufferId: Int, idRange: kotlin.ranges.IntRange) {
+fun QuasselDatabase.MessageDao.clearMessages(@IntRange(from = 0)
+                                             bufferId: Int, idRange: kotlin.ranges.IntRange) {
   this.clearMessages(bufferId, idRange.first, idRange.last)
 }
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt
index 7ef65d2cc17c14c6caf5061b0ed3c4bb1bbe9b50..a3c6e5fcafdc8dc38e0cce5ab37fa43891726e2d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt
@@ -1,5 +1,6 @@
 package de.kuschku.quasseldroid_ng.service
 
+import android.annotation.SuppressLint
 import android.arch.lifecycle.LifecycleService
 import android.arch.lifecycle.Observer
 import android.content.Intent
@@ -24,12 +25,11 @@ class QuasselService : LifecycleService() {
   private lateinit var clientData: ClientData
 
   private val trustManager = object : X509TrustManager {
-    override fun checkClientTrusted(p0: Array<out X509Certificate>?, p1: String?) {
-    }
-
-    override fun checkServerTrusted(p0: Array<out X509Certificate>?, p1: String?) {
-    }
+    @SuppressLint("TrustAllX509TrustManager")
+    override fun checkClientTrusted(p0: Array<out X509Certificate>?, p1: String?) = Unit
 
+    @SuppressLint("TrustAllX509TrustManager")
+    override fun checkServerTrusted(p0: Array<out X509Certificate>?, p1: String?) = Unit
     override fun getAcceptedIssuers(): Array<X509Certificate> = emptyArray()
   }
 
@@ -45,8 +45,10 @@ class QuasselService : LifecycleService() {
 
     override fun connect(address: SocketAddress, user: String, pass: String, reconnect: Boolean) {
       disconnect()
-      sessionManager.connect(clientData, trustManager, address, ::AndroidHandlerService,
-                             user to pass, reconnect)
+      sessionManager.connect(
+        clientData, trustManager, address, ::AndroidHandlerService,
+        user to pass, reconnect
+      )
     }
 
     override fun reconnect() {
@@ -118,9 +120,11 @@ class QuasselService : LifecycleService() {
       .delay(200, TimeUnit.MILLISECONDS)
       .throttleFirst(1, TimeUnit.SECONDS)
       .toLiveData()
-      .observe(this, Observer {
+      .observe(
+        this, Observer {
         sessionManager.reconnect()
-      })
+      }
+      )
   }
 
   override fun onBind(intent: Intent?): QuasselBinder {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt
index 4eec892857a0cf4eee7e5518fff8347db824789f..499ff06f51c646af18de7a72d12da226dda17d39 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt
@@ -25,7 +25,8 @@ class BufferListAdapter(
   var data = mutableListOf<BufferInfo>()
 
   init {
-    liveData.observe(lifecycleOwner, Observer { list: List<BufferInfo>? ->
+    liveData.observe(
+      lifecycleOwner, Observer { list: List<BufferInfo>? ->
       runInBackground {
         val old = data
         val new = list?.sortedBy(BufferInfo::networkId) ?: emptyList()
@@ -39,14 +40,18 @@ class BufferListAdapter(
 
             override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int)
               = old[oldItemPosition] == new[newItemPosition]
-          }, true)
-        runOnUiThread(Runnable {
-          data.clear()
-          data.addAll(new)
-          result.dispatchUpdatesTo(this@BufferListAdapter)
-        })
+          }, true
+        )
+        runOnUiThread(
+          Runnable {
+            data.clear()
+            data.addAll(new)
+            result.dispatchUpdatesTo(this@BufferListAdapter)
+          }
+        )
       }
-    })
+    }
+    )
   }
 
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = BufferViewHolder(
@@ -80,7 +85,7 @@ class BufferListAdapter(
     fun bind(info: BufferInfo) {
       text.text = when {
         info.type.hasFlag(BufferInfo.Type.StatusBuffer) -> "Network ${info.networkId}"
-        else -> "${info.networkId}/${info.bufferName}"
+        else                                            -> "${info.networkId}/${info.bufferName}"
       }
       bufferId = info.bufferId
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt
index 007573f626c2546f8f88cbdbc9b46a9ef0688edd..afadc9b6d1c69fbb722b30d073bfc42a579e33be 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt
@@ -24,13 +24,15 @@ class BufferViewConfigAdapter(
   val data = mutableListOf<BufferViewConfig>()
 
   init {
-    liveData.observe(lifecycleOwner, Observer { list: List<BufferViewConfig>? ->
+    liveData.observe(
+      lifecycleOwner, Observer { list: List<BufferViewConfig>? ->
       data.clear()
       if (list != null) {
         data.addAll(list)
       }
       notifyDataSetChanged()
-    })
+    }
+    )
   }
 
   override fun isEmpty() = data.isEmpty()
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
index 2babd2c93c8c2673e60871bd4734666513cf3739..af325bf39187df89135a330ad36fdb3059ee5f97 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
@@ -50,9 +50,11 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     manager.live_bufferViewConfigs.map { ids ->
       ids.mapNotNull { id ->
         manager.bufferViewConfig(id)
-      }.sortedWith(Comparator { a, b ->
-        (a?.bufferViewName() ?: "").compareTo((b?.bufferViewName() ?: ""), true)
-      })
+      }.sortedWith(
+        Comparator { a, b ->
+          (a?.bufferViewName() ?: "").compareTo((b?.bufferViewName() ?: ""), true)
+        }
+      )
     }
   }.or(emptyList())
 
@@ -92,7 +94,13 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     chatListSpinner.adapter = adapter
     chatListSpinner.onItemSelectedListener = itemSelectedListener
 
-    chatList.adapter = BufferListAdapter(this, bufferList, handlerThread::post, activity!!::runOnUiThread, clickListener)
+    chatList.adapter = BufferListAdapter(
+      this,
+      bufferList,
+      handlerThread::post,
+      activity!!::runOnUiThread,
+      clickListener
+    )
     chatList.layoutManager = LinearLayoutManager(context)
     chatList.itemAnimator = DefaultItemAnimator()
     return view
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt
index 589ec88eb9e1f33a155764833e795e978cfa3a51..679b94aa2c5482777d9b65561a3393d496f2316f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt
@@ -32,8 +32,8 @@ import de.kuschku.quasseldroid_ng.util.service.ServiceBoundActivity
 import de.kuschku.quasseldroid_ng.util.ui.MaterialContentLoadingProgressBar
 
 class ChatActivity : ServiceBoundActivity() {
-  var contentMessages: MessageListFragment? = null
-  var chatListFragment: BufferViewConfigFragment? = null
+  private var contentMessages: MessageListFragment? = null
+  private var chatListFragment: BufferViewConfigFragment? = null
 
   @BindView(R.id.drawerLayout)
   lateinit var drawerLayout: DrawerLayout
@@ -72,8 +72,12 @@ class ChatActivity : ServiceBoundActivity() {
 
     database = QuasselDatabase.Creator.init(application)
 
-    contentMessages = supportFragmentManager.findFragmentById(R.id.contentMessages) as? MessageListFragment
-    chatListFragment = supportFragmentManager.findFragmentById(R.id.chatListFragment) as? BufferViewConfigFragment
+    contentMessages = supportFragmentManager.findFragmentById(
+      R.id.contentMessages
+    ) as? MessageListFragment
+    chatListFragment = supportFragmentManager.findFragmentById(
+      R.id.chatListFragment
+    ) as? BufferViewConfigFragment
 
     setSupportActionBar(toolbar)
 
@@ -85,21 +89,29 @@ class ChatActivity : ServiceBoundActivity() {
       println("Changed buffer to $it")
     }
 
-    currentBuffer.observe(this, Observer {
+    currentBuffer.observe(
+      this, Observer {
       if (it != null) {
         drawerLayout.closeDrawer(Gravity.START, true)
       }
-    })
-
-    drawerToggle = ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close)
+    }
+    )
+
+    drawerToggle = ActionBarDrawerToggle(
+      this,
+      drawerLayout,
+      R.string.drawer_open,
+      R.string.drawer_close
+    )
     drawerToggle.syncState()
 
-    backend.observeSticky(this, Observer { backendValue ->
+    backend.observeSticky(
+      this, Observer { backendValue ->
       if (backendValue != null) {
         val database = AccountDatabase.Creator.init(this)
         handler.post {
           val accountId = getSharedPreferences(Keys.Status.NAME, Context.MODE_PRIVATE)
-            ?.getLong(Keys.Status.selectedAccount, -1) ?: -1
+                            ?.getLong(Keys.Status.selectedAccount, -1) ?: -1
           if (accountId == -1L) {
             setResult(Activity.RESULT_OK)
             finish()
@@ -118,7 +130,8 @@ class ChatActivity : ServiceBoundActivity() {
           }
         }
       }
-    })
+    }
+    )
 
     buttonSend.setOnClickListener {
       sessionManager { sessionManager ->
@@ -131,7 +144,8 @@ class ChatActivity : ServiceBoundActivity() {
       input.text.clear()
     }
 
-    state.observe(this, Observer {
+    state.observe(
+      this, Observer {
       val status = it ?: ConnectionState.DISCONNECTED
 
       if (status == ConnectionState.CONNECTED) {
@@ -141,19 +155,28 @@ class ChatActivity : ServiceBoundActivity() {
         progressBar.isIndeterminate = status != ConnectionState.INIT
       }
 
-      progressBar.toggle(status != ConnectionState.CONNECTED && status != ConnectionState.DISCONNECTED)
+      progressBar.toggle(
+        status != ConnectionState.CONNECTED && status != ConnectionState.DISCONNECTED
+      )
 
       snackbar?.dismiss()
-      snackbar = Snackbar.make(findViewById(R.id.contentMessages), status.name, Snackbar.LENGTH_SHORT)
+      snackbar = Snackbar.make(
+        findViewById(R.id.contentMessages),
+        status.name,
+        Snackbar.LENGTH_SHORT
+      )
       snackbar?.show()
-    })
+    }
+    )
 
-    initStatus.observe(this, Observer {
+    initStatus.observe(
+      this, Observer {
       val (progress, max) = it ?: 0 to 0
 
       progressBar.max = max
       progressBar.progress = progress
-    })
+    }
+    )
   }
 
   override fun onCreateOptionsMenu(menu: Menu?): Boolean {
@@ -173,7 +196,7 @@ class ChatActivity : ServiceBoundActivity() {
       }
       true
     }
-    else -> super.onOptionsItemSelected(item)
+    else            -> super.onOptionsItemSelected(item)
   }
 
   override fun onDestroy() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/FormattedMessage.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/FormattedMessage.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d245270de23e70a285483bd54df5f52e7f1419bc
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/FormattedMessage.kt
@@ -0,0 +1,7 @@
+package de.kuschku.quasseldroid_ng.ui.chat
+
+class FormattedMessage(
+  val id: Int,
+  val time: CharSequence,
+  val content: CharSequence
+)
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt
index 3cdfd1a86a9c9905f27cb4b68c61870a6a639a7c..28720cc904ed76890846272f347180632bb66b9a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt
@@ -13,7 +13,10 @@ import de.kuschku.libquassel.util.hasFlag
 import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
 import de.kuschku.quasseldroid_ng.util.helper.getOrPut
 
-class MessageAdapter(context: Context) : PagedListAdapter<QuasselDatabase.DatabaseMessage, QuasselMessageViewHolder>(QuasselDatabase.DatabaseMessage.MessageDiffCallback) {
+class MessageAdapter(context: Context) :
+  PagedListAdapter<QuasselDatabase.DatabaseMessage, QuasselMessageViewHolder>(
+    QuasselDatabase.DatabaseMessage.MessageDiffCallback
+  ) {
   private val messageRenderer: MessageRenderer = QuasselMessageRenderer(context)
 
   private val messageCache = LruCache<Int, FormattedMessage>(512)
@@ -23,7 +26,14 @@ class MessageAdapter(context: Context) : PagedListAdapter<QuasselDatabase.Databa
   }
 
   override fun onBindViewHolder(holder: QuasselMessageViewHolder, position: Int) {
-    getItem(position)?.let { messageRenderer.bind(holder, messageCache.getOrPut(it.messageId) { messageRenderer.render(it) }) }
+    getItem(position)?.let {
+      messageRenderer.bind(
+        holder,
+        messageCache.getOrPut(it.messageId) {
+          messageRenderer.render(it)
+        }
+      )
+    }
   }
 
   override fun getItemViewType(position: Int): Int {
@@ -52,11 +62,13 @@ class MessageAdapter(context: Context) : PagedListAdapter<QuasselDatabase.Databa
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QuasselMessageViewHolder {
     val messageType = messageType(viewType)
     val hasHighlight = hasHiglight(viewType)
-    val viewHolder = QuasselMessageViewHolder(LayoutInflater.from(parent.context).inflate(
-      messageRenderer.layout(messageType, hasHighlight),
-      parent,
-      false
-    ))
+    val viewHolder = QuasselMessageViewHolder(
+      LayoutInflater.from(parent.context).inflate(
+        messageRenderer.layout(messageType, hasHighlight),
+        parent,
+        false
+      )
+    )
     messageRenderer.init(viewHolder, messageType, hasHighlight)
     return viewHolder
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt
index cccda2cf38769f9f3e79b4cb10ece2b0cb481160..1e67bdae3bfd85a309b4cb9c2babfb64ea36cb56 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt
@@ -47,13 +47,16 @@ class MessageListFragment : ServiceBoundFragment() {
     setHasOptionsMenu(true)
   }
 
-  override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+  override fun onCreateView(inflater: LayoutInflater,
+                            container: ViewGroup?,
+                            savedInstanceState: Bundle?): View? {
     val view = inflater.inflate(R.layout.fragment_messages, container, false)
     ButterKnife.bind(this, view)
 
     database = QuasselDatabase.Creator.init(context!!.applicationContext)
     val data = buffer.switchMap {
-      database.message().findByBufferIdPaged(it).create(Int.MAX_VALUE,
+      database.message().findByBufferIdPaged(it).create(
+        Int.MAX_VALUE,
         PagedList.Config.Builder()
           .setPageSize(50)
           .setEnablePlaceholders(false)
@@ -64,18 +67,22 @@ class MessageListFragment : ServiceBoundFragment() {
 
     val adapter = MessageAdapter(context!!)
 
-    data.observe(this, Observer { list ->
+    data.observe(
+      this, Observer { list ->
       adapter.setList(list)
-    })
+    }
+    )
 
-    buffer.observe(this, Observer {
+    buffer.observe(
+      this, Observer {
       handler.post {
         // Try loading messages when switching to empty buffer
         if (it != null && database.message().bufferSize(it) == 0) {
           loadMore()
         }
       }
-    })
+    }
+    )
 
     var recyclerViewMeasuredHeight = 0
     val scrollDownListener = object : RecyclerView.OnScrollListener() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageRenderer.kt
index c351e227358d56c3b28c5568490acb279692d098..99403809ee44684b48ba2b2e4554c999cdbc8569 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageRenderer.kt
@@ -10,11 +10,9 @@ interface MessageRenderer {
 
   fun bind(holder: QuasselMessageViewHolder, message: FormattedMessage)
   fun render(message: QuasselDatabase.DatabaseMessage): FormattedMessage
-  fun init(viewHolder: QuasselMessageViewHolder, messageType: Message_Type?, hasHighlight: Boolean) {}
+  fun init(viewHolder: QuasselMessageViewHolder,
+           messageType: Message_Type?,
+           hasHighlight: Boolean) {
+  }
 }
 
-class FormattedMessage(
-  val id: Int,
-  val time: CharSequence,
-  val content: CharSequence
-)
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt
index fe5ed6e93d85e3181130cee177aec1996c153416..2591661c6413dad11f8f276bd788bbb45f15e24a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt
@@ -17,18 +17,22 @@ import org.threeten.bp.format.DateTimeFormatter
 import java.text.SimpleDateFormat
 
 class QuasselMessageRenderer(context: Context) : MessageRenderer {
-  private val timeFormatter = DateTimeFormatter.ofPattern((DateFormat.getTimeFormat(context) as SimpleDateFormat).toLocalizedPattern())
+  private val timeFormatter = DateTimeFormatter.ofPattern(
+    (DateFormat.getTimeFormat(context) as SimpleDateFormat).toLocalizedPattern()
+  )
   private val senderColors: IntArray
 
   private val zoneId = ZoneId.systemDefault()
 
   init {
-    val typedArray = context.obtainStyledAttributes(intArrayOf(
-      R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3,
-      R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7,
-      R.attr.senderColor8, R.attr.senderColor9, R.attr.senderColorA, R.attr.senderColorB,
-      R.attr.senderColorC, R.attr.senderColorD, R.attr.senderColorE, R.attr.senderColorF
-    ))
+    val typedArray = context.obtainStyledAttributes(
+      intArrayOf(
+        R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3,
+        R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7,
+        R.attr.senderColor8, R.attr.senderColor9, R.attr.senderColorA, R.attr.senderColorB,
+        R.attr.senderColorC, R.attr.senderColorD, R.attr.senderColorE, R.attr.senderColorF
+      )
+    )
     senderColors = IntArray(16) {
       typedArray.getColor(it, 0)
     }
@@ -39,13 +43,15 @@ class QuasselMessageRenderer(context: Context) : MessageRenderer {
     = when (type) {
     Nick, Notice, Mode, Join, Part, Quit, Kick, Kill, Server, Info, DayChange, Topic, NetsplitJoin,
     NetsplitQuit, Invite -> R.layout.widget_chatmessage_server
-    Error -> R.layout.widget_chatmessage_error
-    Action -> R.layout.widget_chatmessage_action
-    Plain -> R.layout.widget_chatmessage_plain
-    else -> R.layout.widget_chatmessage_plain
+    Error                -> R.layout.widget_chatmessage_error
+    Action               -> R.layout.widget_chatmessage_action
+    Plain                -> R.layout.widget_chatmessage_plain
+    else                 -> R.layout.widget_chatmessage_plain
   }
 
-  override fun init(viewHolder: QuasselMessageViewHolder, messageType: Message_Type?, hasHighlight: Boolean) {
+  override fun init(viewHolder: QuasselMessageViewHolder,
+                    messageType: Message_Type?,
+                    hasHighlight: Boolean) {
     if (hasHighlight) {
       val attrs = intArrayOf(R.attr.colorBackgroundHighlight)
       val colors = viewHolder.itemView.context.obtainStyledAttributes(attrs)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt
index 9a943d1eb390accff12ecd4d879a870a6e853460..d93c2da7d25e73ed816ea348c47b313430741ea6 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt
@@ -86,7 +86,8 @@ abstract class SetupActivity : AppCompatActivity() {
       else
         viewPager.setCurrentItem(viewPager.currentItem + 1, true)
     }
-    isValid.observeSticky(this, Observer {
+    isValid.observeSticky(
+      this, Observer {
       if (it == true) {
         button.show()
         adapter.lastValidItem = viewPager.currentItem
@@ -94,7 +95,8 @@ abstract class SetupActivity : AppCompatActivity() {
         button.hide()
         adapter.lastValidItem = viewPager.currentItem - 1
       }
-    })
+    }
+    )
     viewPager.addOnPageChangeListener(pageChangeListener)
     pageChanged()
     updateRecentsHeader()
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt
index 8e48236f1e79d00dec7bcc7790205bc4f85223bc..542ce9a8ac32b4f2a88fdbf4f89c5c6134cce702 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt
@@ -108,7 +108,8 @@ class AccountAdapter :
       when (viewType) {
         TYPE_ADD -> R.layout.widget_core_account_add
         else     -> R.layout.widget_core_account
-      }, parent, false)
+      }, parent, false
+    )
     return when (viewType) {
       TYPE_ADD -> AccountViewHolder.Add(view, addListener)
       else     -> AccountViewHolder.Item(view, actionListener, clickListener)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountEditActivity.kt
index 43cfa75c73b155613afa5120f4c7fd5bd1961b58..43880debdd6a3e050eab37709a04903beff6916d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountEditActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountEditActivity.kt
@@ -124,7 +124,7 @@ class AccountEditActivity : AppCompatActivity() {
 
   private val isValid
     get() = nameValidator.isValid && hostValidator.isValid && portValidator.isValid
-      && userValidator.isValid
+            && userValidator.isValid
 
   override fun onCreateOptionsMenu(menu: Menu?): Boolean {
     menuInflater.inflate(R.menu.setup_edit_account, menu)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt
index 86b30513313eeac312f5dece8c2b0ac59ca9fd88..78b14161ace4795196ac12d3a12d95e971471e0e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt
@@ -44,12 +44,15 @@ class AccountSelectionSlide : SlideFragment() {
     val view = inflater.inflate(R.layout.setup_select_account, container, false)
     ButterKnife.bind(this, view)
     val accountViewModel = ViewModelProviders.of(this).get(
-      AccountViewModel::class.java)
+      AccountViewModel::class.java
+    )
     val firstObserver = object : Observer<PagedList<AccountDatabase.Account>?> {
       override fun onChanged(t: PagedList<AccountDatabase.Account>?) {
         if (t?.isEmpty() != false)
-          startActivityForResult(Intent(context, AccountSetupActivity::class.java),
-                                 REQUEST_CREATE_FIRST)
+          startActivityForResult(
+            Intent(context, AccountSetupActivity::class.java),
+            REQUEST_CREATE_FIRST
+          )
         accountViewModel.accounts.removeObserver(this)
       }
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountViewModel.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountViewModel.kt
index 8804e9805f46d6d173859f541b05bcefef76122d..cf2aca05e0afc2a0b2024e8ecc8c3b43fd11dc73 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountViewModel.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountViewModel.kt
@@ -8,7 +8,8 @@ import de.kuschku.quasseldroid_ng.persistence.AccountDatabase
 
 class AccountViewModel(application: Application) : AndroidViewModel(application) {
   private val database: AccountDatabase = AccountDatabase.Creator.init(
-    getApplication())
+    getApplication()
+  )
   val accounts: LiveData<PagedList<AccountDatabase.Account>> = database.accounts().all().create(
     0,
     PagedList.Config.Builder()
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/AndroidHandlerThread.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/AndroidHandlerThread.kt
index 4471116224ca3fb2ecd863c16df9a86a92687ae2..3af062e489e80db670ce0638a13b6b1db30919ab 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/AndroidHandlerThread.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/AndroidHandlerThread.kt
@@ -94,11 +94,13 @@ class AndroidHandlerThread(name: String) : HandlerThread(name) {
 
   fun sendEmptyMessageDelayed(what: Int, delayMillis: Long): Boolean
     = handler?.sendEmptyMessageDelayed(what, delayMillis) ?: throw RuntimeException(
-    "Thread not started")
+    "Thread not started"
+  )
 
   fun sendEmptyMessageAtTime(what: Int, uptimeMillis: Long): Boolean
     = handler?.sendEmptyMessageAtTime(what, uptimeMillis) ?: throw RuntimeException(
-    "Thread not started")
+    "Thread not started"
+  )
 
   fun sendMessageDelayed(msg: Message, delayMillis: Long): Boolean
     = handler?.sendMessageDelayed(msg, delayMillis) ?: throw RuntimeException("Thread not started")
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidCompatibilityUtils.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidCompatibilityUtils.kt
index 15ab06a453c4bfbef0f944314c8318ea6dc97f1d..dcd0ac3f3c0fdc211ec288b42ae87c3bdfee789b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidCompatibilityUtils.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidCompatibilityUtils.kt
@@ -23,8 +23,8 @@ object AndroidCompatibilityUtils {
 
   private fun isChromeBook(): Boolean {
     return Build.MANUFACTURER.toLowerCase(Locale.ENGLISH).contains("chromium") ||
-      Build.MANUFACTURER.toLowerCase(Locale.ENGLISH).contains("chrome") ||
-      Build.BRAND.toLowerCase(Locale.ENGLISH).contains("chromium") ||
-      Build.BRAND.toLowerCase(Locale.ENGLISH).contains("chrome")
+           Build.MANUFACTURER.toLowerCase(Locale.ENGLISH).contains("chrome") ||
+           Build.BRAND.toLowerCase(Locale.ENGLISH).contains("chromium") ||
+           Build.BRAND.toLowerCase(Locale.ENGLISH).contains("chrome")
   }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidLoggingHandler.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidLoggingHandler.kt
index 9208d91ddca67ecbeaa1fb9c4329be3342a18761..7071e9bd2b50c62c22d7863de2ca70114302171f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidLoggingHandler.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/compatibility/AndroidLoggingHandler.kt
@@ -10,7 +10,8 @@ object AndroidLoggingHandler : LoggingHandler() {
 
   override fun log(logLevel: LogLevel, tag: String, message: String?, throwable: Throwable?) {
     val priority = priority(
-      logLevel)
+      logLevel
+    )
     if (message != null)
       Log.println(priority, tag, message)
     if (throwable != null)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ActivityHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ActivityHelper.kt
index 4662c565371c0c5933fe7a3bce6ea1c980bc08ac..2e1d4dc8886f76d7d0320c31979455b79fbb0742 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ActivityHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ActivityHelper.kt
@@ -35,7 +35,8 @@ fun Activity.updateRecentsHeaderIfExisting(
  * @param colorPrimary The color used as background for the header of the recents card - passed as Android
  * Color Resource
  */
-fun Activity.updateRecentsHeaderIfExisting(@StringRes label: Int, @DrawableRes icon: Int, @ColorRes colorPrimary: Int) {
+fun Activity.updateRecentsHeaderIfExisting(@StringRes label: Int, @DrawableRes icon: Int, @ColorRes
+colorPrimary: Int) {
   val labelRaw = resources.getString(label)
   val iconRaw = BitmapFactory.decodeResource(resources, icon)
   val colorPrimaryRaw = resources.getColorBackport(colorPrimary, theme)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt
index ea273739ed50b8f1da6decc00d2f2f1154702489..17c04403f4898ffba463df827343226a05cbbe67 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt
@@ -10,7 +10,8 @@ inline fun <X, Y> LiveData<X?>.switchMap(
   noinline func: (X) -> LiveData<Y>?
 ): LiveData<Y> {
   val result = MediatorLiveData<Y>()
-  result.addSource(this, object : Observer<X?> {
+  result.addSource(
+    this, object : Observer<X?> {
     internal var mSource: LiveData<Y>? = null
 
     override fun onChanged(x: X?) {
@@ -26,7 +27,8 @@ inline fun <X, Y> LiveData<X?>.switchMap(
         result.value = null
       }
     }
-  })
+  }
+  )
   return result
 }
 
@@ -36,7 +38,8 @@ inline fun <X, Y> LiveData<X?>.switchMapRx(
   noinline func: (X) -> Observable<Y>?
 ): LiveData<Y?> {
   val result = MediatorLiveData<Y>()
-  result.addSource(this, object : Observer<X?> {
+  result.addSource(
+    this, object : Observer<X?> {
     internal var mSource: LiveData<Y>? = null
 
     override fun onChanged(x: X?) {
@@ -52,7 +55,8 @@ inline fun <X, Y> LiveData<X?>.switchMapRx(
         result.value = null
       }
     }
-  })
+  }
+  )
   return result
 }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/quassel/IrcUserUtils.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/quassel/IrcUserUtils.kt
index f9a348d9bff80e07ebd5feaf2be9da92bcc0cc06..738f86ef330dd7c837b7051c9981189ec15c8b98 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/quassel/IrcUserUtils.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/quassel/IrcUserUtils.kt
@@ -35,7 +35,9 @@ object IrcUserUtils {
     )
   }
 
-  private fun String.firstIndex(char: Char, startIndex: Int? = null, ignoreCase: Boolean = false): Int? {
+  private fun String.firstIndex(char: Char,
+                                startIndex: Int? = null,
+                                ignoreCase: Boolean = false): Int? {
     val lastIndex = indexOf(char, startIndex ?: 0, ignoreCase)
     if (lastIndex < 0)
       return null
@@ -43,7 +45,9 @@ object IrcUserUtils {
       return lastIndex
   }
 
-  private fun String.lastIndex(char: Char, startIndex: Int? = null, ignoreCase: Boolean = false): Int? {
+  private fun String.lastIndex(char: Char,
+                               startIndex: Int? = null,
+                               ignoreCase: Boolean = false): Int? {
     val lastIndex = lastIndexOf(char, startIndex ?: lastIndex, ignoreCase)
     if (lastIndex < 0)
       return null
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt
index ef9518e587f9c76478494ed742ebefb0943da03d..411cf406d0020f1ee0fd81df6e3862fc633ba78f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt
@@ -11,9 +11,9 @@ import de.kuschku.quasseldroid_ng.util.helper.updateRecentsHeaderIfExisting
 
 abstract class ServiceBoundActivity : AppCompatActivity() {
   @DrawableRes
-  protected val icon: Int = R.mipmap.ic_launcher
+  protected val icon: Int = R.mipmap.ic_launcher_recents
   @ColorRes
-  protected val recentsHeaderColor: Int = R.color.colorPrimaryDark
+  protected val recentsHeaderColor: Int = R.color.colorPrimary
 
   private val connection = BackendServiceConnection()
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/ContextThemeWrapper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/ContextThemeWrapper.kt
index 39996a3caaa0b0d9734cc0c0b59ed4935d58dd6c..1d253a110b44198caacaad0c612fddd373183fdb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/ContextThemeWrapper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/ContextThemeWrapper.kt
@@ -7,8 +7,8 @@ import android.content.res.Configuration
 import android.content.res.Resources
 import android.os.Build
 import android.support.annotation.StyleRes
-import android.support.v7.appcompat.R
 import android.view.LayoutInflater
+import de.kuschku.quasseldroid_ng.R
 
 /**
  * A ContextWrapper that allows you to modify the theme from what is in the
@@ -88,7 +88,8 @@ class ContextThemeWrapper : ContextWrapper {
   fun applyOverrideConfiguration(overrideConfiguration: Configuration) {
     if (mResources != null) {
       throw IllegalStateException(
-        "getResources() or getAssets() has already been called")
+        "getResources() or getAssets() has already been called"
+      )
     }
     if (this.overrideConfiguration != null) {
       throw IllegalStateException("Override configuration has already been set")
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/DrawerRecyclerView.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/DrawerRecyclerView.kt
index 451cb81975253a1d72d8fe59be0cb6f08d9b1900..2d0f6f9483bc2ba55c27caeebbeb5c3d7741f2e9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/DrawerRecyclerView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/DrawerRecyclerView.kt
@@ -20,25 +20,32 @@ class DrawerRecyclerView @JvmOverloads constructor(
   private val maxWidth: Int
 
   init {
-    val a = context.obtainStyledAttributes(attrs,
-                                           R.styleable.ScrimInsetsFrameLayout, defStyleAttr,
-                                           R.style.Widget_Design_ScrimInsetsFrameLayout)
+    val a = context.obtainStyledAttributes(
+      attrs,
+      R.styleable.ScrimInsetsFrameLayout, defStyleAttr,
+      R.style.Widget_Design_ScrimInsetsFrameLayout
+    )
     mInsetForeground = a.getDrawable(R.styleable.ScrimInsetsFrameLayout_insetForeground)
     a.recycle()
     setWillNotDraw(true) // No need to draw until the insets are adjusted
-    ViewCompat.setOnApplyWindowInsetsListener(this
+    ViewCompat.setOnApplyWindowInsetsListener(
+      this
     ) { _, insets ->
       if (null == mInsets) {
         mInsets = Rect()
       }
-      mInsets!!.set(insets.systemWindowInsetLeft,
-                    insets.systemWindowInsetTop,
-                    insets.systemWindowInsetRight,
-                    insets.systemWindowInsetBottom)
-      setPadding(insets.systemWindowInsetLeft,
-                 insets.systemWindowInsetTop,
-                 insets.systemWindowInsetRight,
-                 insets.systemWindowInsetBottom)
+      mInsets!!.set(
+        insets.systemWindowInsetLeft,
+        insets.systemWindowInsetTop,
+        insets.systemWindowInsetRight,
+        insets.systemWindowInsetBottom
+      )
+      setPadding(
+        insets.systemWindowInsetLeft,
+        insets.systemWindowInsetTop,
+        insets.systemWindowInsetRight,
+        insets.systemWindowInsetBottom
+      )
       setWillNotDraw(!insets.hasSystemWindowInsets() || mInsetForeground == null)
       ViewCompat.postInvalidateOnAnimation(this@DrawerRecyclerView)
       insets.consumeSystemWindowInsets()
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/MaterialContentLoadingProgressBar.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/MaterialContentLoadingProgressBar.kt
index bceebb5e097299896b003183cc2eeb543297d0c7..ed521dc57c1b52b7724785f556de5790888bc49c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/MaterialContentLoadingProgressBar.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/MaterialContentLoadingProgressBar.kt
@@ -27,7 +27,9 @@ import me.zhanghai.android.materialprogressbar.MaterialProgressBar
  * a minimum amount of time to avoid "flashes" in the UI when an event could take
  * a largely variable time to complete (from none, to a user perceivable amount)
  */
-class MaterialContentLoadingProgressBar @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : MaterialProgressBar(context, attrs, 0) {
+class MaterialContentLoadingProgressBar @JvmOverloads constructor(context: Context,
+                                                                  attrs: AttributeSet? = null) :
+  MaterialProgressBar(context, attrs, 0) {
   private var mStartTime: Long = -1
   private var mPostedHide = false
   private var mPostedShow = false
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/NavigationDrawerLayout.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/NavigationDrawerLayout.kt
index 1090d6fa2d9f7b2299258c78fa0c8c61ec35a9fe..b42f6d9c7b6b0105146a78e71fd1e8a04c3068c9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/NavigationDrawerLayout.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/NavigationDrawerLayout.kt
@@ -35,25 +35,32 @@ class NavigationDrawerLayout @JvmOverloads constructor(
   private val maxWidth: Int
 
   init {
-    val a = context.obtainStyledAttributes(attrs,
-                                           R.styleable.ScrimInsetsFrameLayout, defStyleAttr,
-                                           R.style.Widget_Design_ScrimInsetsFrameLayout)
+    val a = context.obtainStyledAttributes(
+      attrs,
+      R.styleable.ScrimInsetsFrameLayout, defStyleAttr,
+      R.style.Widget_Design_ScrimInsetsFrameLayout
+    )
     mInsetForeground = a.getDrawable(R.styleable.ScrimInsetsFrameLayout_insetForeground)
     a.recycle()
     setWillNotDraw(true) // No need to draw until the insets are adjusted
-    ViewCompat.setOnApplyWindowInsetsListener(this
+    ViewCompat.setOnApplyWindowInsetsListener(
+      this
     ) { _, insets ->
       if (null == mInsets) {
         mInsets = Rect()
       }
-      mInsets!!.set(insets.systemWindowInsetLeft,
-                    insets.systemWindowInsetTop,
-                    insets.systemWindowInsetRight,
-                    insets.systemWindowInsetBottom)
-      setPadding(insets.systemWindowInsetLeft,
-                 insets.systemWindowInsetTop,
-                 insets.systemWindowInsetRight,
-                 insets.systemWindowInsetBottom)
+      mInsets!!.set(
+        insets.systemWindowInsetLeft,
+        insets.systemWindowInsetTop,
+        insets.systemWindowInsetRight,
+        insets.systemWindowInsetBottom
+      )
+      setPadding(
+        insets.systemWindowInsetLeft,
+        insets.systemWindowInsetTop,
+        insets.systemWindowInsetRight,
+        insets.systemWindowInsetBottom
+      )
       setWillNotDraw(!insets.hasSystemWindowInsets() || mInsetForeground == null)
       ViewCompat.postInvalidateOnAnimation(this@NavigationDrawerLayout)
       insets.consumeSystemWindowInsets()
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/SpanFormatter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/SpanFormatter.java
index 31f342ec75649868892b4b6cc928c25fe3a3e590..fe0e46f91469f793d4991f6d647e81b2b9489882 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/SpanFormatter.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ui/SpanFormatter.java
@@ -53,88 +53,88 @@ import java.util.regex.Pattern;
  * @author George T. Steel
  */
 public class SpanFormatter {
-    private static final Pattern FORMAT_SEQUENCE = Pattern.compile("%([0-9]+\\$|<?)([^a-zA-z%]*)([[a-zA-Z%]&&[^tT]]|[tT][a-zA-Z])");
+  private static final Pattern FORMAT_SEQUENCE = Pattern.compile("%([0-9]+\\$|<?)([^a-zA-z%]*)([[a-zA-Z%]&&[^tT]]|[tT][a-zA-Z])");
+
+  private SpanFormatter() {
+  }
+
+  /**
+   * Version of {@link String#format(String, Object...)} that works on {@link Spanned} strings to preserve rich text formatting.
+   * Both the {@code format} as well as any {@code %s args} can be Spanned and will have their formatting preserved.
+   * Due to the way {@link Spannable}s work, any argument's spans will can only be included <b>once</b> in the result.
+   * Any duplicates will appear as text only.
+   *
+   * @param format the format string (see {@link java.util.Formatter#format})
+   * @param args   the list of arguments passed to the formatter. If there are
+   *               more arguments than required by {@code format},
+   *               additional arguments are ignored.
+   * @return the formatted string (with spans).
+   */
+  @NonNull
+  public static SpannedString format(@NonNull CharSequence format, Object... args) {
+    return format(Locale.getDefault(), format, args);
+  }
+
+  /**
+   * Version of {@link String#format(Locale, String, Object...)} that works on {@link Spanned} strings to preserve rich text formatting.
+   * Both the {@code format} as well as any {@code %s args} can be Spanned and will have their formatting preserved.
+   * Due to the way {@link Spannable}s work, any argument's spans will can only be included <b>once</b> in the result.
+   * Any duplicates will appear as text only.
+   *
+   * @param locale the locale to apply; {@code null} value means no localization.
+   * @param format the format string (see {@link java.util.Formatter#format})
+   * @param args   the list of arguments passed to the formatter.
+   * @return the formatted string (with spans).
+   * @see String#format(Locale, String, Object...)
+   */
+  @NonNull
+  public static SpannedString format(@NonNull Locale locale, @NonNull CharSequence format, Object... args) {
+    SpannableStringBuilder out = new SpannableStringBuilder(format);
+
+    int i = 0;
+    int argAt = -1;
+
+    while (i < out.length()) {
+      Matcher m = FORMAT_SEQUENCE.matcher(out);
+      if (!m.find(i)) break;
+      i = m.start();
+      int exprEnd = m.end();
+
+      String argTerm = m.group(1);
+      String modTerm = m.group(2);
+      String typeTerm = m.group(3);
+
+      CharSequence cookedArg;
+
+      if (typeTerm.equals("%")) {
+        cookedArg = "%";
+      } else {
+        int argIdx;
+        switch (argTerm) {
+          case "":
+            argIdx = ++argAt;
+            break;
+          case "<":
+            argIdx = argAt;
+            break;
+          default:
+            argIdx = Integer.parseInt(argTerm.substring(0, argTerm.length() - 1)) - 1;
+            break;
+        }
 
-    private SpanFormatter() {
-    }
+        Object argItem = args[argIdx];
 
-    /**
-     * Version of {@link String#format(String, Object...)} that works on {@link Spanned} strings to preserve rich text formatting.
-     * Both the {@code format} as well as any {@code %s args} can be Spanned and will have their formatting preserved.
-     * Due to the way {@link Spannable}s work, any argument's spans will can only be included <b>once</b> in the result.
-     * Any duplicates will appear as text only.
-     *
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args   the list of arguments passed to the formatter. If there are
-     *               more arguments than required by {@code format},
-     *               additional arguments are ignored.
-     * @return the formatted string (with spans).
-     */
-    @NonNull
-    public static SpannedString format(@NonNull CharSequence format, Object... args) {
-        return format(Locale.getDefault(), format, args);
-    }
-
-    /**
-     * Version of {@link String#format(Locale, String, Object...)} that works on {@link Spanned} strings to preserve rich text formatting.
-     * Both the {@code format} as well as any {@code %s args} can be Spanned and will have their formatting preserved.
-     * Due to the way {@link Spannable}s work, any argument's spans will can only be included <b>once</b> in the result.
-     * Any duplicates will appear as text only.
-     *
-     * @param locale the locale to apply; {@code null} value means no localization.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args   the list of arguments passed to the formatter.
-     * @return the formatted string (with spans).
-     * @see String#format(Locale, String, Object...)
-     */
-    @NonNull
-    public static SpannedString format(@NonNull Locale locale, @NonNull CharSequence format, Object... args) {
-        SpannableStringBuilder out = new SpannableStringBuilder(format);
-
-        int i = 0;
-        int argAt = -1;
-
-        while (i < out.length()) {
-            Matcher m = FORMAT_SEQUENCE.matcher(out);
-            if (!m.find(i)) break;
-            i = m.start();
-            int exprEnd = m.end();
-
-            String argTerm = m.group(1);
-            String modTerm = m.group(2);
-            String typeTerm = m.group(3);
-
-            CharSequence cookedArg;
-
-            if (typeTerm.equals("%")) {
-                cookedArg = "%";
-            } else {
-                int argIdx;
-                switch (argTerm) {
-                    case "":
-                        argIdx = ++argAt;
-                        break;
-                    case "<":
-                        argIdx = argAt;
-                        break;
-                    default:
-                        argIdx = Integer.parseInt(argTerm.substring(0, argTerm.length() - 1)) - 1;
-                        break;
-                }
-
-                Object argItem = args[argIdx];
-
-                if (typeTerm.equals("s") && argItem instanceof Spanned) {
-                    cookedArg = (Spanned) argItem;
-                } else {
-                    cookedArg = String.format(locale, "%" + modTerm + typeTerm, argItem);
-                }
-            }
-
-            out.replace(i, exprEnd, cookedArg);
-            i += cookedArg.length();
+        if (typeTerm.equals("s") && argItem instanceof Spanned) {
+          cookedArg = (Spanned) argItem;
+        } else {
+          cookedArg = String.format(locale, "%" + modTerm + typeTerm, argItem);
         }
+      }
 
-        return new SpannedString(out);
+      out.replace(i, exprEnd, cookedArg);
+      i += cookedArg.length();
     }
+
+    return new SpannedString(out);
+  }
 }
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index aece9930fabe1b727e6e867cd4e3905debc0bfc5..1094421ed4a5ab09a71f964399c0b2920a4e9037 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,156 +1,156 @@
 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:id="@+id/drawerLayout"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:fitsSystemWindows="true">
+
+  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/drawerLayout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:fitsSystemWindows="true">
+    android:fitsSystemWindows="true"
+    android:orientation="vertical">
 
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
+    <android.support.design.widget.AppBarLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:theme="?attr/actionBarTheme">
+
+      <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:fitsSystemWindows="true"
-        android:orientation="vertical">
-
-        <android.support.design.widget.AppBarLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:theme="?attr/actionBarTheme">
-
-            <FrameLayout
-                android:layout_width="match_parent"
-                android:layout_height="?attr/actionBarSize">
-
-                <android.support.v7.widget.Toolbar
-                    android:id="@+id/toolbar"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    app:contentInsetStartWithNavigation="0dp"
-                    app:popupTheme="@style/Widget.PopupOverlay">
-
-                    <LinearLayout
-                        android:id="@+id/toolbar_action_area"
-                        android:layout_width="fill_parent"
-                        android:layout_height="fill_parent"
-                        android:background="?attr/selectableItemBackgroundBorderless"
-                        android:clickable="true"
-                        android:focusable="true"
-                        android:focusableInTouchMode="false"
-                        android:gravity="center_vertical|start"
-                        android:minHeight="?attr/actionBarSize"
-                        android:orientation="vertical">
-
-                        <LinearLayout
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_gravity="center_vertical"
-                            android:layout_marginTop="-2dp"
-                            android:baselineAligned="false"
-                            android:gravity="center_vertical">
-
-                            <TextView
-                                android:id="@+id/key"
-                                style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
-                                android:layout_width="16dp"
-                                android:layout_height="16dp"
-                                android:layout_marginEnd="2dp"
-                                android:layout_marginRight="2dp"
-                                android:layout_marginTop="2dp"
-                                android:gravity="center"
-                                android:textSize="16sp"
-                                android:visibility="gone" />
-
-                            <TextView
-                                android:id="@+id/toolbar_title"
-                                style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:ellipsize="end"
-                                android:gravity="center_vertical"
-                                android:singleLine="true"
-                                android:text="@string/app_name" />
-
-                        </LinearLayout>
-
-                        <TextView
-                            android:id="@+id/toolbar_subtitle"
-                            style="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginTop="-3dp"
-                            android:ellipsize="end"
-                            android:singleLine="true"
-                            android:visibility="gone" />
-                    </LinearLayout>
-
-                </android.support.v7.widget.Toolbar>
-
-                <de.kuschku.quasseldroid_ng.util.ui.MaterialContentLoadingProgressBar
-                    android:id="@+id/progressBar"
-                    style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal.NoPadding"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="bottom"
-                    app:mpb_progressStyle="horizontal"
-                    app:mpb_setBothDrawables="true"
-                    app:mpb_useIntrinsicPadding="false"
-                    tools:indeterminate="true" />
-            </FrameLayout>
-
-        </android.support.design.widget.AppBarLayout>
-
-        <fragment
-            android:id="@+id/contentMessages"
-            android:name="de.kuschku.quasseldroid_ng.ui.chat.MessageListFragment"
-            android:layout_width="match_parent"
-            android:layout_height="0dip"
-            android:layout_weight="1"
-            tools:layout="@layout/fragment_messages" />
-
-        <android.support.v7.widget.CardView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="?colorBackgroundCard"
-            app:cardElevation="4dp">
+        android:layout_height="?attr/actionBarSize">
+
+        <android.support.v7.widget.Toolbar
+          android:id="@+id/toolbar"
+          android:layout_width="match_parent"
+          android:layout_height="match_parent"
+          app:contentInsetStartWithNavigation="0dp"
+          app:popupTheme="@style/Widget.PopupOverlay">
+
+          <LinearLayout
+            android:id="@+id/toolbar_action_area"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:background="?attr/selectableItemBackgroundBorderless"
+            android:clickable="true"
+            android:focusable="true"
+            android:focusableInTouchMode="false"
+            android:gravity="center_vertical|start"
+            android:minHeight="?attr/actionBarSize"
+            android:orientation="vertical">
 
             <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="?actionBarSize">
-
-                <EditText
-                    android:id="@+id/input"
-                    android:layout_width="0dip"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1" />
-
-                <Button
-                    android:id="@+id/buttonSend"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center_vertical"
-                    android:text="Send" />
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:layout_gravity="center_vertical"
+              android:layout_marginTop="-2dp"
+              android:baselineAligned="false"
+              android:gravity="center_vertical">
+
+              <TextView
+                android:id="@+id/key"
+                style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
+                android:layout_width="16dp"
+                android:layout_height="16dp"
+                android:layout_marginEnd="2dp"
+                android:layout_marginRight="2dp"
+                android:layout_marginTop="2dp"
+                android:gravity="center"
+                android:textSize="16sp"
+                android:visibility="gone" />
+
+              <TextView
+                android:id="@+id/toolbar_title"
+                style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:gravity="center_vertical"
+                android:singleLine="true"
+                android:text="@string/app_name" />
+
             </LinearLayout>
 
-        </android.support.v7.widget.CardView>
+            <TextView
+              android:id="@+id/toolbar_subtitle"
+              style="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:layout_marginTop="-3dp"
+              android:ellipsize="end"
+              android:singleLine="true"
+              android:visibility="gone" />
+          </LinearLayout>
+
+        </android.support.v7.widget.Toolbar>
+
+        <de.kuschku.quasseldroid_ng.util.ui.MaterialContentLoadingProgressBar
+          android:id="@+id/progressBar"
+          style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal.NoPadding"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:layout_gravity="bottom"
+          app:mpb_progressStyle="horizontal"
+          app:mpb_setBothDrawables="true"
+          app:mpb_useIntrinsicPadding="false"
+          tools:indeterminate="true" />
+      </FrameLayout>
+
+    </android.support.design.widget.AppBarLayout>
+
+    <fragment
+      android:id="@+id/contentMessages"
+      android:name="de.kuschku.quasseldroid_ng.ui.chat.MessageListFragment"
+      android:layout_width="match_parent"
+      android:layout_height="0dip"
+      android:layout_weight="1"
+      tools:layout="@layout/fragment_messages" />
+
+    <android.support.v7.widget.CardView
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:background="?colorBackgroundCard"
+      app:cardElevation="4dp">
+
+      <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="?actionBarSize">
 
-    </LinearLayout>
+        <EditText
+          android:id="@+id/input"
+          android:layout_width="0dip"
+          android:layout_height="match_parent"
+          android:layout_weight="1" />
 
-    <include layout="@layout/fragment_nick_list" />
+        <Button
+          android:id="@+id/buttonSend"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:layout_gravity="center_vertical"
+          android:text="Send" />
+      </LinearLayout>
 
-    <de.kuschku.quasseldroid_ng.util.ui.NavigationDrawerLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_gravity="start"
-        android:background="?attr/colorBackground"
-        android:fitsSystemWindows="true"
-        app:insetForeground="?attr/colorPrimaryDark">
-
-        <fragment
-            android:id="@+id/chatListFragment"
-            android:name="de.kuschku.quasseldroid_ng.ui.chat.BufferViewConfigFragment"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            tools:layout="@layout/fragment_chat_list" />
-    </de.kuschku.quasseldroid_ng.util.ui.NavigationDrawerLayout>
+    </android.support.v7.widget.CardView>
+
+  </LinearLayout>
+
+  <include layout="@layout/fragment_nick_list" />
+
+  <de.kuschku.quasseldroid_ng.util.ui.NavigationDrawerLayout
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_gravity="start"
+    android:background="?attr/colorBackground"
+    android:fitsSystemWindows="true"
+    app:insetForeground="?attr/colorPrimaryDark">
+
+    <fragment
+      android:id="@+id/chatListFragment"
+      android:name="de.kuschku.quasseldroid_ng.ui.chat.BufferViewConfigFragment"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      tools:layout="@layout/fragment_chat_list" />
+  </de.kuschku.quasseldroid_ng.util.ui.NavigationDrawerLayout>
 </android.support.v4.widget.DrawerLayout>
diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml
index 57e8d5acd3e80559333e322fa2a3c106650377ec..ac1b5a37ab6ba460467c0377889fa766d695aef3 100644
--- a/app/src/main/res/layout/fragment_messages.xml
+++ b/app/src/main/res/layout/fragment_messages.xml
@@ -1,31 +1,31 @@
 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:background="?attr/colorBackground">
+
+  <android.support.v7.widget.RecyclerView
+    android:id="@+id/messages"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="?attr/colorBackground">
-
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/messages"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        app:stackFromEnd="true"
-        tools:listitem="@layout/widget_chatmessage_plain" />
+    app:stackFromEnd="true"
+    tools:listitem="@layout/widget_chatmessage_plain" />
 
-    <android.support.design.widget.FloatingActionButton
-        android:id="@+id/scrollDown"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="end|bottom"
-        android:layout_marginBottom="12dp"
-        android:layout_marginEnd="12dp"
-        android:layout_marginRight="12dp"
-        android:tint="@color/colorFillDark"
-        app:backgroundTint="#8A808080"
-        app:elevation="0dip"
-        app:fabSize="mini"
-        app:pressedTranslationZ="0dip"
-        app:srcCompat="@drawable/ic_scroll_down" />
+  <android.support.design.widget.FloatingActionButton
+    android:id="@+id/scrollDown"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="end|bottom"
+    android:layout_marginBottom="12dp"
+    android:layout_marginEnd="12dp"
+    android:layout_marginRight="12dp"
+    android:tint="@color/colorFillDark"
+    app:backgroundTint="#8A808080"
+    app:elevation="0dip"
+    app:fabSize="mini"
+    app:pressedTranslationZ="0dip"
+    app:srcCompat="@drawable/ic_scroll_down" />
 
 </FrameLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_chatmessage_action.xml b/app/src/main/res/layout/widget_chatmessage_action.xml
index b4271dd33221a05181e3973922f9022c1a81fab3..754adfd98959ad4f6d8aa43c3aab72cb91bf5bc3 100644
--- a/app/src/main/res/layout/widget_chatmessage_action.xml
+++ b/app/src/main/res/layout/widget_chatmessage_action.xml
@@ -20,35 +20,35 @@
   -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:clickable="true"
-    android:focusable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:clickable="true"
+  android:focusable="true"
+  android:gravity="top"
+  android:orientation="horizontal"
+  android:paddingBottom="@dimen/message_vertical"
+  android:paddingEnd="@dimen/message_horizontal"
+  android:paddingLeft="@dimen/message_horizontal"
+  android:paddingRight="@dimen/message_horizontal"
+  android:paddingStart="@dimen/message_horizontal"
+  android:paddingTop="@dimen/message_vertical"
+  android:textAppearance="?android:attr/textAppearanceListItemSmall">
 
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace" />
+  <TextView
+    android:id="@+id/time"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginEnd="@dimen/message_horizontal"
+    android:layout_marginRight="@dimen/message_horizontal"
+    android:textColor="?attr/colorForegroundSecondary"
+    android:typeface="monospace" />
 
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:textColor="?attr/colorForegroundAction"
-        android:textIsSelectable="true"
-        android:textStyle="italic" />
+  <TextView
+    android:id="@+id/content"
+    android:layout_width="0dip"
+    android:layout_height="wrap_content"
+    android:layout_weight="1"
+    android:textColor="?attr/colorForegroundAction"
+    android:textIsSelectable="true"
+    android:textStyle="italic" />
 </LinearLayout>
diff --git a/app/src/main/res/layout/widget_chatmessage_error.xml b/app/src/main/res/layout/widget_chatmessage_error.xml
index 44e42f1cdb0b6377b64c206663f679b84e05e92c..a19b7e87ff2463a9b6ce8b211887badfe93ca970 100644
--- a/app/src/main/res/layout/widget_chatmessage_error.xml
+++ b/app/src/main/res/layout/widget_chatmessage_error.xml
@@ -1,35 +1,35 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?attr/colorBackgroundSecondary"
-    android:clickable="true"
-    android:focusable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:background="?attr/colorBackgroundSecondary"
+  android:clickable="true"
+  android:focusable="true"
+  android:gravity="top"
+  android:orientation="horizontal"
+  android:paddingBottom="@dimen/message_vertical"
+  android:paddingEnd="@dimen/message_horizontal"
+  android:paddingLeft="@dimen/message_horizontal"
+  android:paddingRight="@dimen/message_horizontal"
+  android:paddingStart="@dimen/message_horizontal"
+  android:paddingTop="@dimen/message_vertical"
+  android:textAppearance="?android:attr/textAppearanceListItemSmall">
 
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace" />
+  <TextView
+    android:id="@+id/time"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginEnd="@dimen/message_horizontal"
+    android:layout_marginRight="@dimen/message_horizontal"
+    android:textColor="?attr/colorForegroundSecondary"
+    android:typeface="monospace" />
 
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:textColor="?attr/colorForegroundError"
-        android:textIsSelectable="true"
-        android:textStyle="italic" />
+  <TextView
+    android:id="@+id/content"
+    android:layout_width="0dip"
+    android:layout_height="wrap_content"
+    android:layout_weight="1"
+    android:textColor="?attr/colorForegroundError"
+    android:textIsSelectable="true"
+    android:textStyle="italic" />
 </LinearLayout>
diff --git a/app/src/main/res/layout/widget_chatmessage_plain.xml b/app/src/main/res/layout/widget_chatmessage_plain.xml
index 75105c7d9a43893d09f4bba5a6a08fa46e7e8609..7055344824e5c47b51fef655909bae740c9b6ff4 100644
--- a/app/src/main/res/layout/widget_chatmessage_plain.xml
+++ b/app/src/main/res/layout/widget_chatmessage_plain.xml
@@ -1,36 +1,36 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:clickable="true"
-    android:focusable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
+  xmlns:tools="http://schemas.android.com/tools"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:clickable="true"
+  android:focusable="true"
+  android:gravity="top"
+  android:orientation="horizontal"
+  android:paddingBottom="@dimen/message_vertical"
+  android:paddingEnd="@dimen/message_horizontal"
+  android:paddingLeft="@dimen/message_horizontal"
+  android:paddingRight="@dimen/message_horizontal"
+  android:paddingStart="@dimen/message_horizontal"
+  android:paddingTop="@dimen/message_vertical"
+  android:textAppearance="?android:attr/textAppearanceListItemSmall">
 
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace"
-        tools:text="[15:55]" />
+  <TextView
+    android:id="@+id/time"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginEnd="@dimen/message_horizontal"
+    android:layout_marginRight="@dimen/message_horizontal"
+    android:textColor="?attr/colorForegroundSecondary"
+    android:typeface="monospace"
+    tools:text="[15:55]" />
 
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:textColor="?attr/colorForeground"
-        android:textIsSelectable="true"
-        tools:text="justJanne: hiii" />
+  <TextView
+    android:id="@+id/content"
+    android:layout_width="0dip"
+    android:layout_height="wrap_content"
+    android:layout_weight="1"
+    android:textColor="?attr/colorForeground"
+    android:textIsSelectable="true"
+    tools:text="justJanne: hiii" />
 </LinearLayout>
diff --git a/app/src/main/res/layout/widget_chatmessage_server.xml b/app/src/main/res/layout/widget_chatmessage_server.xml
index 40613e00c91fb0cb192e2d0ea4c613ad70c6ed30..a9ac1112f85b8a877125e6bec76e422c385d559f 100644
--- a/app/src/main/res/layout/widget_chatmessage_server.xml
+++ b/app/src/main/res/layout/widget_chatmessage_server.xml
@@ -1,35 +1,35 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?attr/colorBackgroundSecondary"
-    android:clickable="true"
-    android:focusable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:background="?attr/colorBackgroundSecondary"
+  android:clickable="true"
+  android:focusable="true"
+  android:gravity="top"
+  android:orientation="horizontal"
+  android:paddingBottom="@dimen/message_vertical"
+  android:paddingEnd="@dimen/message_horizontal"
+  android:paddingLeft="@dimen/message_horizontal"
+  android:paddingRight="@dimen/message_horizontal"
+  android:paddingStart="@dimen/message_horizontal"
+  android:paddingTop="@dimen/message_vertical"
+  android:textAppearance="?android:attr/textAppearanceListItemSmall">
 
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace" />
+  <TextView
+    android:id="@+id/time"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginEnd="@dimen/message_horizontal"
+    android:layout_marginRight="@dimen/message_horizontal"
+    android:textColor="?attr/colorForegroundSecondary"
+    android:typeface="monospace" />
 
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:textIsSelectable="true"
-        android:textStyle="italic" />
+  <TextView
+    android:id="@+id/content"
+    android:layout_width="0dip"
+    android:layout_height="wrap_content"
+    android:layout_weight="1"
+    android:textColor="?attr/colorForegroundSecondary"
+    android:textIsSelectable="true"
+    android:textStyle="italic" />
 </LinearLayout>
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_recents.png b/app/src/main/res/mipmap-hdpi/ic_launcher_recents.png
new file mode 100644
index 0000000000000000000000000000000000000000..704b703466300312afef5183f4815c87b853a6a8
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_recents.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_recents.png b/app/src/main/res/mipmap-mdpi/ic_launcher_recents.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa6768589fdc17dc9615ccd9d9a72202a63ed2f6
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_recents.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_recents.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_recents.png
new file mode 100644
index 0000000000000000000000000000000000000000..b602349062aab9c0f7b44b347d9400177b0da5f3
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_recents.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_recents.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_recents.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4b4622fcf9b571ce307740c5f9335daed3f99c6
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_recents.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_recents.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_recents.png
new file mode 100644
index 0000000000000000000000000000000000000000..aada01932a343ad3cf2e5afe2767c22f21dddbb1
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_recents.png differ
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index dd9f8a6b1b62f1f62373afc32a44a902a4490c33..03012d411fcd296c628d15b39d772f616ddb282a 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -1,6 +1,6 @@
 <resources>
-    <dimen name="navigation_drawer_max_width">320dp</dimen>
+  <dimen name="navigation_drawer_max_width">320dp</dimen>
 
-    <dimen name="message_horizontal">8dp</dimen>
-    <dimen name="message_vertical">2dp</dimen>
+  <dimen name="message_horizontal">8dp</dimen>
+  <dimen name="message_vertical">2dp</dimen>
 </resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8e98b5f952d8bd0b2d674847b0d3a17084c8087a..7771d68ff8bcf33b558189658cf98c63c3f88d81 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5,6 +5,6 @@
   <string name="connection_service_description">Keeps a connection to your core to allow for notifications, and to transmit messages.</string>
 
   <string name="crash_text">QD-NG has crashed</string>
-    <string name="drawer_open">Open</string>
-    <string name="drawer_close">Close</string>
+  <string name="drawer_open">Open</string>
+  <string name="drawer_close">Close</string>
 </resources>
diff --git a/app/src/main/res/values/themes_quassel.xml b/app/src/main/res/values/themes_quassel.xml
index 1b8cee6ecd49928b8efa16177620d3b0f0da148b..d9cbff96d621ae3a1b278248396c2435c78f80b7 100644
--- a/app/src/main/res/values/themes_quassel.xml
+++ b/app/src/main/res/values/themes_quassel.xml
@@ -1,83 +1,83 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <resources>
-    <string name="themeQuasselLightName">Quasselâ„¢ (Light)</string>
-    <string name="themeQuasselLightId">QUASSEL_LIGHT</string>
+  <string name="themeQuasselLightName">Quasselâ„¢ (Light)</string>
+  <string name="themeQuasselLightId">QUASSEL_LIGHT</string>
 
-    <style name="Theme.ChatTheme.Quassel_Light" parent="Theme.ChatTheme.Light">
-        <item name="senderColor0">#cc0000</item>
-        <item name="senderColor1">#006cad</item>
-        <item name="senderColor2">#4d9900</item>
-        <item name="senderColor3">#6600cc</item>
-        <item name="senderColor4">#a67d00</item>
-        <item name="senderColor5">#009927</item>
-        <item name="senderColor6">#0030c0</item>
-        <item name="senderColor7">#cc009a</item>
-        <item name="senderColor8">#b94600</item>
-        <item name="senderColor9">#869900</item>
-        <item name="senderColorA">#149900</item>
-        <item name="senderColorB">#009960</item>
-        <item name="senderColorC">#006cad</item>
-        <item name="senderColorD">#0099cc</item>
-        <item name="senderColorE">#b300cc</item>
-        <item name="senderColorF">#cc004d</item>
+  <style name="Theme.ChatTheme.Quassel_Light" parent="Theme.ChatTheme.Light">
+    <item name="senderColor0">#cc0000</item>
+    <item name="senderColor1">#006cad</item>
+    <item name="senderColor2">#4d9900</item>
+    <item name="senderColor3">#6600cc</item>
+    <item name="senderColor4">#a67d00</item>
+    <item name="senderColor5">#009927</item>
+    <item name="senderColor6">#0030c0</item>
+    <item name="senderColor7">#cc009a</item>
+    <item name="senderColor8">#b94600</item>
+    <item name="senderColor9">#869900</item>
+    <item name="senderColorA">#149900</item>
+    <item name="senderColorB">#009960</item>
+    <item name="senderColorC">#006cad</item>
+    <item name="senderColorD">#0099cc</item>
+    <item name="senderColorE">#b300cc</item>
+    <item name="senderColorF">#cc004d</item>
 
-        <item name="colorForeground">#DE000000</item>
-        <item name="colorForegroundHighlight">#DE000000</item>
-        <item name="colorForegroundSecondary">#8A000000</item>
-        <item name="colorForegroundAction">#1a237e</item>
-        <item name="colorForegroundError">#800000</item>
+    <item name="colorForeground">#DE000000</item>
+    <item name="colorForegroundHighlight">#DE000000</item>
+    <item name="colorForegroundSecondary">#8A000000</item>
+    <item name="colorForegroundAction">#1a237e</item>
+    <item name="colorForegroundError">#800000</item>
 
-        <item name="colorForegroundMirc">0x1</item>
+    <item name="colorForegroundMirc">0x1</item>
 
-        <item name="colorBackground">#FAFAFA</item>
-        <item name="colorBackgroundHighlight">#ff8811</item>
-        <item name="colorBackgroundSecondary">@null</item>
-        <item name="colorBackgroundCard">#FFFFFF</item>
-        <item name="colorBackgroundDialog">#FAFAFA</item>
+    <item name="colorBackground">#FAFAFA</item>
+    <item name="colorBackgroundHighlight">#ff8811</item>
+    <item name="colorBackgroundSecondary">@null</item>
+    <item name="colorBackgroundCard">#FFFFFF</item>
+    <item name="colorBackgroundDialog">#FAFAFA</item>
 
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
+    <item name="colorTintActivity">#88cc33</item>
+    <item name="colorTintMessage">#2277dd</item>
+    <item name="colorTintHighlight">#ff8811</item>
+  </style>
 
-    <string name="themeQuasselDarkName">Quasselâ„¢ (Dark)</string>
-    <string name="themeQuasselDarkId">QUASSEL_DARK</string>
+  <string name="themeQuasselDarkName">Quasselâ„¢ (Dark)</string>
+  <string name="themeQuasselDarkId">QUASSEL_DARK</string>
 
-    <style name="Theme.ChatTheme.Quassel_Dark" parent="Theme.ChatTheme">
-        <item name="senderColor0">#cc0000</item>
-        <item name="senderColor1">#006cad</item>
-        <item name="senderColor2">#4d9900</item>
-        <item name="senderColor3">#6600cc</item>
-        <item name="senderColor4">#a67d00</item>
-        <item name="senderColor5">#009927</item>
-        <item name="senderColor6">#0030c0</item>
-        <item name="senderColor7">#cc009a</item>
-        <item name="senderColor8">#b94600</item>
-        <item name="senderColor9">#869900</item>
-        <item name="senderColorA">#149900</item>
-        <item name="senderColorB">#009960</item>
-        <item name="senderColorC">#006cad</item>
-        <item name="senderColorD">#0099cc</item>
-        <item name="senderColorE">#b300cc</item>
-        <item name="senderColorF">#cc004d</item>
+  <style name="Theme.ChatTheme.Quassel_Dark" parent="Theme.ChatTheme">
+    <item name="senderColor0">#cc0000</item>
+    <item name="senderColor1">#006cad</item>
+    <item name="senderColor2">#4d9900</item>
+    <item name="senderColor3">#6600cc</item>
+    <item name="senderColor4">#a67d00</item>
+    <item name="senderColor5">#009927</item>
+    <item name="senderColor6">#0030c0</item>
+    <item name="senderColor7">#cc009a</item>
+    <item name="senderColor8">#b94600</item>
+    <item name="senderColor9">#869900</item>
+    <item name="senderColorA">#149900</item>
+    <item name="senderColorB">#009960</item>
+    <item name="senderColorC">#006cad</item>
+    <item name="senderColorD">#0099cc</item>
+    <item name="senderColorE">#b300cc</item>
+    <item name="senderColorF">#cc004d</item>
 
-        <item name="colorForeground">#FFFFFF</item>
-        <item name="colorForegroundHighlight">#FFFFFF</item>
-        <item name="colorForegroundSecondary">#B3FFFFFF</item>
-        <item name="colorForegroundAction">#7986cb</item>
-        <item name="colorForegroundError">#800000</item>
+    <item name="colorForeground">#FFFFFF</item>
+    <item name="colorForegroundHighlight">#FFFFFF</item>
+    <item name="colorForegroundSecondary">#B3FFFFFF</item>
+    <item name="colorForegroundAction">#7986cb</item>
+    <item name="colorForegroundError">#800000</item>
 
-        <item name="colorForegroundMirc">0x0</item>
+    <item name="colorForegroundMirc">0x0</item>
 
-        <item name="colorBackground">#303030</item>
-        <item name="colorBackgroundHighlight">#ff8811</item>
-        <item name="colorBackgroundSecondary">@null</item>
-        <item name="colorBackgroundCard">#424242</item>
-        <item name="colorBackgroundDialog">#303030</item>
+    <item name="colorBackground">#303030</item>
+    <item name="colorBackgroundHighlight">#ff8811</item>
+    <item name="colorBackgroundSecondary">@null</item>
+    <item name="colorBackgroundCard">#424242</item>
+    <item name="colorBackgroundDialog">#303030</item>
 
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
+    <item name="colorTintActivity">#88cc33</item>
+    <item name="colorTintMessage">#2277dd</item>
+    <item name="colorTintHighlight">#ff8811</item>
+  </style>
 </resources>
diff --git a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java
index e09a0bc39876c857ecefaf3cc560ddf88c4d79f3..4630dc7267465e7a81c6e541e59209b8dec17b96 100644
--- a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java
+++ b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java
@@ -9,5 +9,5 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.SOURCE)
 @Target(value = ElementType.METHOD)
 public @interface Slot {
-    String value() default "";
+  String value() default "";
 }
diff --git a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java
index 77367a2967bf65f6c9f850248822eb65c3ac8a61..163e0c1e50daeb86b4648c8379cc4fcf43ba48f5 100644
--- a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java
+++ b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java
@@ -9,5 +9,5 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.RUNTIME)
 @Target(value = ElementType.TYPE)
 public @interface Syncable {
-    String name();
+  String name();
 }
diff --git a/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java b/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java
index 133a671437cc533ec06fcc2d80c5d156618706ce..0a3a15456f6f3e0bfe45a2c0717a6bdd22c85cd4 100644
--- a/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java
+++ b/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java
@@ -38,202 +38,202 @@ import javax.lang.model.type.TypeMirror;
 @SupportedSourceVersion(SourceVersion.RELEASE_8)
 public class InvokerProcessor extends AbstractProcessor {
 
-    private Filer filer;
-
-    @Override
-    public synchronized void init(ProcessingEnvironment processingEnv) {
-        filer = processingEnv.getFiler();
-    }
-
-    @Override
-    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
-        List<SyncableElement> syncableElements = new ArrayList<>();
-        for (Element element : roundEnv.getElementsAnnotatedWith(Syncable.class)) {
-            if (element.getKind() == ElementKind.INTERFACE) {
-                List<SlotElement> slotElements = new ArrayList<>();
-                for (Element element1 : element.getEnclosedElements()) {
-                    if (element1.getKind() == ElementKind.METHOD) {
-                        ExecutableElement it = (ExecutableElement) element1;
-                        ExecutableType methodType = (ExecutableType) it.asType();
-
-                        Slot slotAnnotation = element1.getAnnotation(Slot.class);
-                        if (slotAnnotation != null) {
-                            String slotName = slotAnnotation.value().isEmpty() ? it.getSimpleName().toString() : slotAnnotation.value();
-                            slotElements.add(new SlotElement(it, methodType, slotName, slotAnnotation));
-                        }
-                    }
-                }
-
-                PackageElement packageElement = (PackageElement) element.getEnclosingElement();
-                TypeElement typeElement = (TypeElement) element;
-                Syncable annotation = typeElement.getAnnotation(Syncable.class);
-
-                syncableElements.add(new SyncableElement(packageElement, typeElement, annotation, slotElements));
+  private Filer filer;
+
+  @Override
+  public synchronized void init(ProcessingEnvironment processingEnv) {
+    filer = processingEnv.getFiler();
+  }
+
+  @Override
+  public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+    List<SyncableElement> syncableElements = new ArrayList<>();
+    for (Element element : roundEnv.getElementsAnnotatedWith(Syncable.class)) {
+      if (element.getKind() == ElementKind.INTERFACE) {
+        List<SlotElement> slotElements = new ArrayList<>();
+        for (Element element1 : element.getEnclosedElements()) {
+          if (element1.getKind() == ElementKind.METHOD) {
+            ExecutableElement it = (ExecutableElement) element1;
+            ExecutableType methodType = (ExecutableType) it.asType();
+
+            Slot slotAnnotation = element1.getAnnotation(Slot.class);
+            if (slotAnnotation != null) {
+              String slotName = slotAnnotation.value().isEmpty() ? it.getSimpleName().toString() : slotAnnotation.value();
+              slotElements.add(new SlotElement(it, methodType, slotName, slotAnnotation));
             }
+          }
         }
 
-        try {
-            for (SyncableElement syncableElement : syncableElements) {
-                generateInvoker(syncableElement);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return true;
-    }
+        PackageElement packageElement = (PackageElement) element.getEnclosingElement();
+        TypeElement typeElement = (TypeElement) element;
+        Syncable annotation = typeElement.getAnnotation(Syncable.class);
 
-    private void generateInvoker(SyncableElement element) throws IOException {
-        String packageName = element.packageElement.getQualifiedName().toString() + ".invokers";
-        String invokerName = element.annotation.name() + "Invoker";
-
-        ClassName type = ClassName.get(packageName, invokerName);
-        ClassName wrongObjectTypeException = ClassName.get("de.kuschku.libquassel.quassel.exceptions", "WrongObjectTypeException");
-        ClassName unknownMethodException = ClassName.get("de.kuschku.libquassel.quassel.exceptions", "UnknownMethodException");
-        ClassName nonNullAnnotation = ClassName.get("android.support.annotation", "NonNull");
-
-        MethodSpec methodSpecConstructor = MethodSpec
-                .constructorBuilder()
-                .addModifiers(Modifier.PRIVATE)
-                .build();
-
-        FieldSpec fieldSpecInstance = FieldSpec
-                .builder(type, "INSTANCE", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
-                .initializer("new $T()", type)
-                .build();
-
-        MethodSpec methodSpecClassName = MethodSpec
-                .methodBuilder("getClassName")
-                .addModifiers(Modifier.PUBLIC)
-                .addAnnotation(nonNullAnnotation)
-                .addAnnotation(Override.class)
-                .returns(String.class)
-                .addStatement("return $S", element.annotation.name())
-                .build();
-
-        ParameterSpec parameterSpecOn = ParameterSpec
-                .builder(
-                        Object.class,
-                        "on"
-                )
-                .addAnnotation(nonNullAnnotation)
-                .build();
-
-        ParameterSpec parameterSpecMethod = ParameterSpec
-                .builder(
-                        String.class,
-                        "method"
-                )
-                .addAnnotation(nonNullAnnotation).build();
-
-        ParameterSpec parameterSpecParams = ParameterSpec
-                .builder(
-                        ParameterizedTypeName.get(
-                                ClassName.get(List.class),
-                                ParameterizedTypeName.get(
-                                        ClassName.get("de.kuschku.libquassel.protocol", "QVariant"),
-                                        TypeName.get(Object.class)
-                                )
-                        ),
-                        "params"
-                )
-                .addAnnotation(nonNullAnnotation)
-                .build();
-
-        MethodSpec.Builder invokeSpec = MethodSpec
-                .methodBuilder("invoke")
-                .addModifiers(Modifier.PUBLIC)
-                .addAnnotation(Override.class)
-                .addException(wrongObjectTypeException)
-                .addException(unknownMethodException)
-                .addParameter(parameterSpecOn)
-                .addParameter(parameterSpecMethod)
-                .addParameter(parameterSpecParams)
-                .beginControlFlow("if (on instanceof $T)", element.typeElement)
-                .addStatement("$T it = ($T) $N", element.typeElement, element.typeElement, parameterSpecOn)
-                .beginControlFlow("switch ($N)", parameterSpecMethod);
-
-        for (SlotElement slot : element.slots) {
-            invokeSpec = invokeSpec.beginControlFlow("case $S:", slot.slotName);
-            invokeSpec = invokeSpec.addCode("it.$N(\n$>", slot.element.getSimpleName());
-            for (int i = 0; i < slot.type.getParameterTypes().size(); i++) {
-                TypeMirror parameterType = slot.type.getParameterTypes().get(i);
-                boolean isLast = i + 1 == slot.type.getParameterTypes().size();
-
-                invokeSpec = invokeSpec.addCode("($T) $N.get($L).getData()", parameterType, parameterSpecParams, i);
-                if (!isLast)
-                    invokeSpec = invokeSpec.addCode(",");
-                invokeSpec = invokeSpec.addCode("\n");
-            }
-            invokeSpec = invokeSpec.addCode("$<);\n");
-            invokeSpec = invokeSpec.endControlFlow("return");
-        }
-
-        invokeSpec = invokeSpec
-                .beginControlFlow("default:")
-                .addStatement("throw new $T($N(), $N)",
-                        unknownMethodException,
-                        methodSpecClassName,
-                        parameterSpecMethod
-                )
-                .endControlFlow()
-                .endControlFlow()
-                .addCode("$<} else{\n$>")
-                .addStatement("throw new $T($N, $N())",
-                        wrongObjectTypeException,
-                        parameterSpecOn,
-                        methodSpecClassName
-                )
-                .endControlFlow();
-
-        TypeSpec typeSpec = TypeSpec
-                .classBuilder(type)
-                .addSuperinterface(ParameterizedTypeName.get(
-                        ClassName.get(packageName, "Invoker"),
-                        TypeName.get(element.typeElement.asType())
-                ))
-                .addModifiers(Modifier.PUBLIC)
-                .addField(fieldSpecInstance)
-                .addMethod(methodSpecConstructor)
-                .addMethod(methodSpecClassName)
-                .addMethod(invokeSpec.build())
-                .build();
-
-        JavaFile javaFile = JavaFile
-                .builder(packageName, typeSpec)
-                .build();
-
-        javaFile.writeTo(filer);
+        syncableElements.add(new SyncableElement(packageElement, typeElement, annotation, slotElements));
+      }
     }
 
-    private class SlotElement {
-        final ExecutableElement element;
-        final ExecutableType type;
-
-        final String slotName;
-
-        final Slot slot;
+    try {
+      for (SyncableElement syncableElement : syncableElements) {
+        generateInvoker(syncableElement);
+      }
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+    return true;
+  }
+
+  private void generateInvoker(SyncableElement element) throws IOException {
+    String packageName = element.packageElement.getQualifiedName().toString() + ".invokers";
+    String invokerName = element.annotation.name() + "Invoker";
+
+    ClassName type = ClassName.get(packageName, invokerName);
+    ClassName wrongObjectTypeException = ClassName.get("de.kuschku.libquassel.quassel.exceptions", "WrongObjectTypeException");
+    ClassName unknownMethodException = ClassName.get("de.kuschku.libquassel.quassel.exceptions", "UnknownMethodException");
+    ClassName nonNullAnnotation = ClassName.get("android.support.annotation", "NonNull");
+
+    MethodSpec methodSpecConstructor = MethodSpec
+      .constructorBuilder()
+      .addModifiers(Modifier.PRIVATE)
+      .build();
+
+    FieldSpec fieldSpecInstance = FieldSpec
+      .builder(type, "INSTANCE", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
+      .initializer("new $T()", type)
+      .build();
+
+    MethodSpec methodSpecClassName = MethodSpec
+      .methodBuilder("getClassName")
+      .addModifiers(Modifier.PUBLIC)
+      .addAnnotation(nonNullAnnotation)
+      .addAnnotation(Override.class)
+      .returns(String.class)
+      .addStatement("return $S", element.annotation.name())
+      .build();
+
+    ParameterSpec parameterSpecOn = ParameterSpec
+      .builder(
+        Object.class,
+        "on"
+      )
+      .addAnnotation(nonNullAnnotation)
+      .build();
+
+    ParameterSpec parameterSpecMethod = ParameterSpec
+      .builder(
+        String.class,
+        "method"
+      )
+      .addAnnotation(nonNullAnnotation).build();
+
+    ParameterSpec parameterSpecParams = ParameterSpec
+      .builder(
+        ParameterizedTypeName.get(
+          ClassName.get(List.class),
+          ParameterizedTypeName.get(
+            ClassName.get("de.kuschku.libquassel.protocol", "QVariant"),
+            TypeName.get(Object.class)
+          )
+        ),
+        "params"
+      )
+      .addAnnotation(nonNullAnnotation)
+      .build();
+
+    MethodSpec.Builder invokeSpec = MethodSpec
+      .methodBuilder("invoke")
+      .addModifiers(Modifier.PUBLIC)
+      .addAnnotation(Override.class)
+      .addException(wrongObjectTypeException)
+      .addException(unknownMethodException)
+      .addParameter(parameterSpecOn)
+      .addParameter(parameterSpecMethod)
+      .addParameter(parameterSpecParams)
+      .beginControlFlow("if (on instanceof $T)", element.typeElement)
+      .addStatement("$T it = ($T) $N", element.typeElement, element.typeElement, parameterSpecOn)
+      .beginControlFlow("switch ($N)", parameterSpecMethod);
+
+    for (SlotElement slot : element.slots) {
+      invokeSpec = invokeSpec.beginControlFlow("case $S:", slot.slotName);
+      invokeSpec = invokeSpec.addCode("it.$N(\n$>", slot.element.getSimpleName());
+      for (int i = 0; i < slot.type.getParameterTypes().size(); i++) {
+        TypeMirror parameterType = slot.type.getParameterTypes().get(i);
+        boolean isLast = i + 1 == slot.type.getParameterTypes().size();
+
+        invokeSpec = invokeSpec.addCode("($T) $N.get($L).getData()", parameterType, parameterSpecParams, i);
+        if (!isLast)
+          invokeSpec = invokeSpec.addCode(",");
+        invokeSpec = invokeSpec.addCode("\n");
+      }
+      invokeSpec = invokeSpec.addCode("$<);\n");
+      invokeSpec = invokeSpec.endControlFlow("return");
+    }
 
-        public SlotElement(ExecutableElement element, ExecutableType type, String slotName, Slot slot) {
-            this.element = element;
-            this.type = type;
-            this.slotName = slotName;
-            this.slot = slot;
-        }
+    invokeSpec = invokeSpec
+      .beginControlFlow("default:")
+      .addStatement("throw new $T($N(), $N)",
+        unknownMethodException,
+        methodSpecClassName,
+        parameterSpecMethod
+      )
+      .endControlFlow()
+      .endControlFlow()
+      .addCode("$<} else{\n$>")
+      .addStatement("throw new $T($N, $N())",
+        wrongObjectTypeException,
+        parameterSpecOn,
+        methodSpecClassName
+      )
+      .endControlFlow();
+
+    TypeSpec typeSpec = TypeSpec
+      .classBuilder(type)
+      .addSuperinterface(ParameterizedTypeName.get(
+        ClassName.get(packageName, "Invoker"),
+        TypeName.get(element.typeElement.asType())
+      ))
+      .addModifiers(Modifier.PUBLIC)
+      .addField(fieldSpecInstance)
+      .addMethod(methodSpecConstructor)
+      .addMethod(methodSpecClassName)
+      .addMethod(invokeSpec.build())
+      .build();
+
+    JavaFile javaFile = JavaFile
+      .builder(packageName, typeSpec)
+      .build();
+
+    javaFile.writeTo(filer);
+  }
+
+  private class SlotElement {
+    final ExecutableElement element;
+    final ExecutableType type;
+
+    final String slotName;
+
+    final Slot slot;
+
+    public SlotElement(ExecutableElement element, ExecutableType type, String slotName, Slot slot) {
+      this.element = element;
+      this.type = type;
+      this.slotName = slotName;
+      this.slot = slot;
     }
+  }
 
-    private class SyncableElement {
-        final PackageElement packageElement;
-        final TypeElement typeElement;
+  private class SyncableElement {
+    final PackageElement packageElement;
+    final TypeElement typeElement;
 
-        final Syncable annotation;
+    final Syncable annotation;
 
-        final List<SlotElement> slots;
+    final List<SlotElement> slots;
 
-        public SyncableElement(PackageElement packageElement, TypeElement typeElement, Syncable annotation, List<SlotElement> slots) {
-            this.packageElement = packageElement;
-            this.typeElement = typeElement;
-            this.annotation = annotation;
-            this.slots = slots;
-        }
+    public SyncableElement(PackageElement packageElement, TypeElement typeElement, Syncable annotation, List<SlotElement> slots) {
+      this.packageElement = packageElement;
+      this.typeElement = typeElement;
+      this.annotation = annotation;
+      this.slots = slots;
     }
+  }
 }
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/MetaType.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/MetaType.kt
index 79cd1d31cd549e0e69461d2d67d4ac81f39dcae4..fee50680bdf28f8f3615163c9eb3115799d80441 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/MetaType.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/MetaType.kt
@@ -53,8 +53,10 @@ data class MetaType<T>(val klass: Class<T>, val type: Type, val serializer: Seri
       addType(Type.UserType, QType.BufferId, IntSerializer)
       addType(Type.UserType, QType.BufferInfo, BufferInfoSerializer)
       addType(Type.UserType, QType.DccConfig_IpDetectionMode, DccConfig_IpDetectionModeSerializer)
-      addType(Type.UserType, QType.DccConfig_PortSelectionMode,
-              DccConfig_PortSelectionModeSerializer)
+      addType(
+        Type.UserType, QType.DccConfig_PortSelectionMode,
+        DccConfig_PortSelectionModeSerializer
+      )
       addType(Type.UserType, QType.IrcUser, VariantMapSerializer)
       addType(Type.UserType, QType.IrcChannel, VariantMapSerializer)
       addType(Type.UserType, QType.Identity, VariantMapSerializer)
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/message/CoreSetupDataSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/message/CoreSetupDataSerializer.kt
index 33fbc4cd84ba60be81d7f6424e78e258e57f62a6..47462bb78b543ec80c0847e3eadaaa6996133c99 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/message/CoreSetupDataSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/message/CoreSetupDataSerializer.kt
@@ -8,14 +8,16 @@ import de.kuschku.libquassel.protocol.value
 object CoreSetupDataSerializer : HandshakeMessageSerializer<HandshakeMessage.CoreSetupData> {
   override fun serialize(data: HandshakeMessage.CoreSetupData) = mapOf(
     "MsgType" to QVariant_("CoreSetupData", Type.QString),
-    "SetupData" to QVariant_(mapOf(
-      "AdminUser" to QVariant_(data.adminUser, Type.QString),
-      "AdminPasswd" to QVariant_(data.adminPassword, Type.QString),
-      "Backend" to QVariant_(data.backend, Type.QString),
-      "ConnectionProperties" to QVariant_(data.setupData, Type.QVariantMap),
-      "Authenticator" to QVariant_(data.authenticator, Type.QString),
-      "AuthProperties" to QVariant_(data.authSetupData, Type.QVariantMap)
-    ), Type.QVariantMap)
+    "SetupData" to QVariant_(
+      mapOf(
+        "AdminUser" to QVariant_(data.adminUser, Type.QString),
+        "AdminPasswd" to QVariant_(data.adminPassword, Type.QString),
+        "Backend" to QVariant_(data.backend, Type.QString),
+        "ConnectionProperties" to QVariant_(data.setupData, Type.QVariantMap),
+        "Authenticator" to QVariant_(data.authenticator, Type.QString),
+        "AuthProperties" to QVariant_(data.authSetupData, Type.QVariantMap)
+      ), Type.QVariantMap
+    )
   )
 
   override fun deserialize(data: QVariantMap): HandshakeMessage.CoreSetupData {
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/message/RequestType.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/message/RequestType.kt
index 3fcc834c292cbe1b36f941a5beed0bddb430fb3a..957b99ab3603c54704f2556ea5ac7215deead964 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/message/RequestType.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/message/RequestType.kt
@@ -11,7 +11,8 @@ enum class RequestType(val value: Int) {
 
   companion object {
     private val byId = enumValues<RequestType>().associateBy(
-      RequestType::value)
+      RequestType::value
+    )
 
     fun of(value: Int) = byId[value] ?: Invalid
   }
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/message/SessionInitSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/message/SessionInitSerializer.kt
index fd2981f5db642ef13d425fcaa47f80d909ca6f05..fb18d67484020b02d1e29f7874e964d404cdd24d 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/message/SessionInitSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/message/SessionInitSerializer.kt
@@ -8,11 +8,13 @@ import de.kuschku.libquassel.protocol.value
 object SessionInitSerializer : HandshakeMessageSerializer<HandshakeMessage.SessionInit> {
   override fun serialize(data: HandshakeMessage.SessionInit) = mapOf(
     "MsgType" to QVariant_("SessionInit", Type.QString),
-    "SessionState" to QVariant_(mapOf(
-      "BufferInfos" to QVariant_(data.bufferInfos, Type.QVariantList),
-      "NetworkIds" to QVariant_(data.networkIds, Type.QVariantList),
-      "Identities" to QVariant_(data.identities, Type.QVariantList)
-    ), Type.QVariantMap)
+    "SessionState" to QVariant_(
+      mapOf(
+        "BufferInfos" to QVariant_(data.bufferInfos, Type.QVariantList),
+        "NetworkIds" to QVariant_(data.networkIds, Type.QVariantList),
+        "Identities" to QVariant_(data.identities, Type.QVariantList)
+      ), Type.QVariantMap
+    )
   )
 
   override fun deserialize(data: QVariantMap): HandshakeMessage.SessionInit {
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/BoolSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/BoolSerializer.kt
index 582234af744c6f193a3ab84fcb8a25aff7d85162..85785e8dbbda7d2b0d78768fd2500929c5abe808 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/BoolSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/BoolSerializer.kt
@@ -6,11 +6,13 @@ import java.nio.ByteBuffer
 
 object BoolSerializer : Serializer<Boolean> {
   override fun serialize(buffer: ChainedByteBuffer, data: Boolean,
-                         features: Quassel_Features) = buffer.put(if (data) {
-    0x01
-  } else {
-    0x00
-  }.toByte())
+                         features: Quassel_Features) = buffer.put(
+    if (data) {
+      0x01
+    } else {
+      0x00
+    }.toByte()
+  )
 
   override fun deserialize(buffer: ByteBuffer, features: Quassel_Features)
     = buffer.get() != 0x00.toByte()
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt
index 41fd63f5bbb76d5e5bb6e902d914c8489e2b1dc3..1c7c300951572a93efd11f9ddb3508e183917827 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt
@@ -48,7 +48,8 @@ object DateTimeSerializer : Serializer<Temporal> {
       }
       else              ->
         throw IllegalArgumentException(
-          "Unsupported Format: ${data::class.java.canonicalName}")
+          "Unsupported Format: ${data::class.java.canonicalName}"
+        )
     }
   }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/HostAddressSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/HostAddressSerializer.kt
index d2a8cce1d24d729fd5d06b645e26a452cfe4102d..ab1bc9a1f9262fc8c59304274625fdcd9df659f1 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/HostAddressSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/HostAddressSerializer.kt
@@ -20,8 +20,10 @@ object HostAddressSerializer : Serializer<InetAddress> {
         buffer.put(data.address)
       }
       else            -> {
-        ByteSerializer.serialize(buffer, NetworkLayerProtocol.UnknownNetworkLayerProtocol.value,
-                                 features)
+        ByteSerializer.serialize(
+          buffer, NetworkLayerProtocol.UnknownNetworkLayerProtocol.value,
+          features
+        )
         throw IllegalArgumentException("Invalid network protocol ${data.javaClass.canonicalName}")
       }
     }
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/MessageSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/MessageSerializer.kt
index a8fc39d9b96390bba4a6ad4ba1054235ba865e7a..2dd02f8cbf007ad05d3c3914c2e38cc69da30d3c 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/MessageSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/MessageSerializer.kt
@@ -29,7 +29,8 @@ object MessageSerializer : Serializer<Message> {
       time = Instant.ofEpochSecond(IntSerializer.deserialize(buffer, features).toLong()),
       type = Message.MessageType.of(IntSerializer.deserialize(buffer, features)),
       flag = Message.MessageFlag.of(
-        ByteSerializer.deserialize(buffer, features).toInt()),
+        ByteSerializer.deserialize(buffer, features).toInt()
+      ),
       bufferInfo = BufferInfoSerializer.deserialize(buffer, features),
       sender = StringSerializer.UTF8.deserialize(buffer, features) ?: "",
       senderPrefixes = if (features.hasFlag(QuasselFeature.SenderPrefixes))
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/VariantMapSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/VariantMapSerializer.kt
index 21e9f5b965c436a438888f8565a26ff031c8554d..916448afecee06a1919d0c2b402a01649712bdb3 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/VariantMapSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/VariantMapSerializer.kt
@@ -15,12 +15,14 @@ object VariantMapSerializer : Serializer<QVariantMap> {
   }
 
   override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): QVariantMap {
-    return mutableMapOf(*(0 until IntSerializer.deserialize(buffer, features)).map {
-      Pair(
-        StringSerializer.UTF16.deserialize(buffer, features) ?: "",
-        VariantSerializer.deserialize(buffer, features)
-      )
-    }.toTypedArray())
+    return mutableMapOf(
+      *(0 until IntSerializer.deserialize(buffer, features)).map {
+        Pair(
+          StringSerializer.UTF16.deserialize(buffer, features) ?: "",
+          VariantSerializer.deserialize(buffer, features)
+        )
+      }.toTypedArray()
+    )
   }
 
 }
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt
index 1ee3e161682f98495d1edf392d6dbadc8e3a02ed..33ac5d95ecd3671a4627864b4c9592a3f50927d4 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt
@@ -34,7 +34,8 @@ class AliasManager constructor(
 
     if (names.size != expansions.size)
       throw IllegalArgumentException(
-        "Sizes do not match: names=${names.size}, expansions=${expansions.size}")
+        "Sizes do not match: names=${names.size}, expansions=${expansions.size}"
+      )
 
     _aliases.clear()
     _aliases.addAll(names.zip(expansions, ::Alias))
@@ -79,7 +80,7 @@ class AliasManager constructor(
     val secondSlashPos = msg.indexOf('/', 1)
     val firstSpacePos = msg.indexOf(' ')
     if (!msg.startsWith('/') || firstSpacePos == 1 ||
-      (secondSlashPos != -1 && (secondSlashPos < firstSpacePos || firstSpacePos == -1))) {
+        (secondSlashPos != -1 && (secondSlashPos < firstSpacePos || firstSpacePos == -1))) {
       if (msg.startsWith("//"))
         msg = msg.substring(1)  // "//asdf" is transformed to "/asdf"
       else if (msg.startsWith("/ "))
@@ -89,9 +90,9 @@ class AliasManager constructor(
       // check for aliases
       val split = msg.split(' ', ignoreCase = true, limit = 2)
       val search: String = split.firstOrNull()
-        ?: return
+                           ?: return
       val found = _aliases.firstOrNull { it.name.equals(search, true) }
-        ?: return
+                  ?: return
       expand(found.expansion, info, split.getOrNull(1) ?: "", previousCommands)
     }
 
@@ -104,9 +105,11 @@ class AliasManager constructor(
 
     val paramRange = Pattern.compile("""\$(\d+)\.\.(\d*)""")
     val commands = Arrays.asList(
-      *expansion.split("; ?").dropLastWhile { it.isEmpty() }.toTypedArray())
+      *expansion.split("; ?").dropLastWhile { it.isEmpty() }.toTypedArray()
+    )
     val params = Arrays.asList<String>(
-      *msg.split(' ').dropLastWhile({ it.isEmpty() }).toTypedArray())
+      *msg.split(' ').dropLastWhile({ it.isEmpty() }).toTypedArray()
+    )
     val expandedCommands = LinkedList<String>()
 
     for (i in commands.indices) {
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BacklogManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BacklogManager.kt
index dd915014177d08388eba5bde97940435014a9cae..d24621833df896e373c6ab5dd31f70e33545b628 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BacklogManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BacklogManager.kt
@@ -16,16 +16,13 @@ class BacklogManager(
 
   private var loading = AtomicInteger(-1)
 
-  override fun requestBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int, additional: Int) {
+  override fun requestBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int,
+                              additional: Int) {
     if (loading.getAndSet(bufferId) != bufferId) {
       super.requestBacklog(bufferId, first, last, limit, additional)
     }
   }
 
-  override fun requestBacklogAll(first: MsgId, last: MsgId, limit: Int, additional: Int) {
-    super.requestBacklogAll(first, last, limit, additional)
-  }
-
   override fun receiveBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int,
                               additional: Int, messages: QVariantList) {
     loading.compareAndSet(bufferId, -1)
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt
index 2ed66474cf78211ba3089cb39fb58f4884cb4083..949af19cfdd2de4bf09ccca0e839195a09384f29 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt
@@ -72,7 +72,8 @@ class BufferViewConfig constructor(
     setBufferViewName(properties["bufferViewName"].valueOr(this::bufferViewName))
     setNetworkId(properties["networkId"].valueOr(this::networkId))
     setAddNewBuffersAutomatically(
-      properties["addNewBuffersAutomatically"].valueOr(this::addNewBuffersAutomatically))
+      properties["addNewBuffersAutomatically"].valueOr(this::addNewBuffersAutomatically)
+    )
     setSortAlphabetically(properties["sortAlphabetically"].valueOr(this::sortAlphabetically))
     setHideInactiveBuffers(properties["hideInactiveBuffers"].valueOr(this::hideInactiveBuffers))
     setHideInactiveNetworks(properties["hideInactiveNetworks"].valueOr(this::hideInactiveNetworks))
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt
index 0acd3e3351729d6564c55c6003ce669c709d4624..a45e245015312c50eef07ef30dd427d39cbee1bb 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt
@@ -51,11 +51,13 @@ class Identity constructor(
     setAutoAwayTime(properties["autoAwayTime"].valueOr(this::autoAwayTime))
     setAutoAwayReason(properties["autoAwayReason"].valueOr(this::autoAwayReason))
     setAutoAwayReasonEnabled(
-      properties["autoAwayReasonEnabled"].valueOr(this::autoAwayReasonEnabled))
+      properties["autoAwayReasonEnabled"].valueOr(this::autoAwayReasonEnabled)
+    )
     setDetachAwayEnabled(properties["detachAwayEnabled"].valueOr(this::detachAwayEnabled))
     setDetachAwayReason(properties["detachAwayReason"].valueOr(this::detachAwayReason))
     setDetachAwayReasonEnabled(
-      properties["detachAwayReasonEnabled"].valueOr(this::detachAwayReasonEnabled))
+      properties["detachAwayReasonEnabled"].valueOr(this::detachAwayReasonEnabled)
+    )
     setIdent(properties["ident"].valueOr(this::ident))
     setKickReason(properties["kickReason"].valueOr(this::kickReason))
     setPartReason(properties["partReason"].valueOr(this::partReason))
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt
index 6db909a986b4e2449a3c462e3e23a20426a498f0..9d4a65d466c4fb4732b87c0a18228a46168a2de1 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt
@@ -29,15 +29,21 @@ class IrcChannel(
   }
 
   override fun initChanModes(): QVariantMap = mapOf(
-    "A" to QVariant_(_A_channelModes.entries.map { (key, value) ->
-      key to QVariant_(value.toList(), Type.QStringList)
-    }, Type.QVariantMap),
-    "B" to QVariant_(_B_channelModes.entries.map { (key, value) ->
-      key to QVariant_(value, Type.QString)
-    }, Type.QVariantMap),
-    "C" to QVariant_(_C_channelModes.entries.map { (key, value) ->
-      key to QVariant_(value, Type.QString)
-    }, Type.QVariantMap),
+    "A" to QVariant_(
+      _A_channelModes.entries.map { (key, value) ->
+        key to QVariant_(value.toList(), Type.QStringList)
+      }, Type.QVariantMap
+    ),
+    "B" to QVariant_(
+      _B_channelModes.entries.map { (key, value) ->
+        key to QVariant_(value, Type.QString)
+      }, Type.QVariantMap
+    ),
+    "C" to QVariant_(
+      _C_channelModes.entries.map { (key, value) ->
+        key to QVariant_(value, Type.QString)
+      }, Type.QVariantMap
+    ),
     "D" to QVariant_(_D_channelModes.joinToString(), Type.QString)
   )
 
@@ -67,9 +73,11 @@ class IrcChannel(
   }
 
   override fun initSetUserModes(usermodes: QVariantMap) {
-    _userModes.putAll(usermodes.entries.map { (key, value) ->
-      network().newIrcUser(key) to value.value("")
-    }.toMap())
+    _userModes.putAll(
+      usermodes.entries.map { (key, value) ->
+        network().newIrcUser(key) to value.value("")
+      }.toMap()
+    )
   }
 
   override fun initSetProperties(properties: QVariantMap) {
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 f9a51c952dc6d102e6ecaf2a74f285aae5106617..cc0d9d2c8226c936ae846037cbd18a0259b955d3 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
@@ -240,8 +240,9 @@ class IrcUser(
   }
 
   override fun partChannel(channelname: String) {
-    val channel = network().ircChannel(channelname)
-      ?: throw IllegalArgumentException("Received part for unknown channel : $channelname")
+    val channel = network().ircChannel(channelname) ?: throw IllegalArgumentException(
+      "Received part for unknown channel : $channelname"
+    )
     partChannel(channel)
   }
 
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 ae5584314b762aaaba1f6a636c71059283fda980..146d0760589e75a72e00d61b4c90a36749dbbd37 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
@@ -80,9 +80,9 @@ class Network constructor(
     if (_channelModes == null)
       determineChannelModeTypes()
     return _channelModes?.entries
-      ?.filter { (_, chars) -> chars.contains(mode) }
-      ?.map(Map.Entry<ChannelModeType, Set<Char>>::key)
-      ?.firstOrNull() ?: ChannelModeType.NOT_A_CHANMODE
+             ?.filter { (_, chars) -> chars.contains(mode) }
+             ?.map(Map.Entry<ChannelModeType, Set<Char>>::key)
+             ?.firstOrNull() ?: ChannelModeType.NOT_A_CHANMODE
   }
 
   private fun determineChannelModeTypes() {
@@ -675,12 +675,16 @@ class Network constructor(
 
   override fun initIrcUsersAndChannels(): QVariantMap {
     return mapOf(
-      "Users" to QVariant_(_ircUsers.values.map { it.toVariantMap() }.transpose().map {
-        QVariant_(it, Type.QVariantList)
-      }, Type.QVariantMap),
-      "Channels" to QVariant_(_ircChannels.values.map { it.toVariantMap() }.transpose().map {
-        QVariant_(it, Type.QVariantList)
-      }, Type.QVariantMap)
+      "Users" to QVariant_(
+        _ircUsers.values.map { it.toVariantMap() }.transpose().map {
+          QVariant_(it, Type.QVariantList)
+        }, Type.QVariantMap
+      ),
+      "Channels" to QVariant_(
+        _ircChannels.values.map { it.toVariantMap() }.transpose().map {
+          QVariant_(it, Type.QVariantList)
+        }, Type.QVariantMap
+      )
     )
   }
 
@@ -689,12 +693,18 @@ class Network constructor(
     "currentServer" to QVariant_(currentServer(), Type.QString),
     "myNick" to QVariant_(myNick(), Type.QString),
     "latency" to QVariant_(latency(), Type.Int),
-    "codecForServer" to QVariant_(codecForServer().serializeString(StringSerializer.UTF8),
-                                  Type.QByteArray),
-    "codecForEncoding" to QVariant_(codecForEncoding().serializeString(StringSerializer.UTF8),
-                                    Type.QByteArray),
-    "codecForDecoding" to QVariant_(codecForDecoding().serializeString(StringSerializer.UTF8),
-                                    Type.QByteArray),
+    "codecForServer" to QVariant_(
+      codecForServer().serializeString(StringSerializer.UTF8),
+      Type.QByteArray
+    ),
+    "codecForEncoding" to QVariant_(
+      codecForEncoding().serializeString(StringSerializer.UTF8),
+      Type.QByteArray
+    ),
+    "codecForDecoding" to QVariant_(
+      codecForDecoding().serializeString(StringSerializer.UTF8),
+      Type.QByteArray
+    ),
     "identityId" to QVariant_(identity(), QType.IdentityId),
     "isConnected" to QVariant_(isConnected(), Type.Bool),
     "connectionState" to QVariant_(connectionState(), Type.Int),
@@ -731,7 +741,8 @@ class Network constructor(
 
   override fun initSetServerList(serverList: QVariantList) {
     _serverList = serverList.mapNotNull { it.value<QVariantMap?>() }.map(
-      Server.Companion::fromVariantMap).toMutableList()
+      Server.Companion::fromVariantMap
+    ).toMutableList()
   }
 
   override fun initSetIrcUsersAndChannels(usersAndChannels: QVariantMap) {
@@ -770,11 +781,15 @@ class Network constructor(
     setCodecForServer(
       properties["codecForServer"].value(codecForServer().serializeString(StringSerializer.UTF8))
     )
-    setCodecForEncoding(properties["codecForEncoding"].value(
-      codecForEncoding().serializeString(StringSerializer.UTF8))
+    setCodecForEncoding(
+      properties["codecForEncoding"].value(
+        codecForEncoding().serializeString(StringSerializer.UTF8)
+      )
     )
-    setCodecForDecoding(properties["codecForDecoding"].value(
-      codecForDecoding().serializeString(StringSerializer.UTF8))
+    setCodecForDecoding(
+      properties["codecForDecoding"].value(
+        codecForDecoding().serializeString(StringSerializer.UTF8)
+      )
     )
     setIdentity(properties["identityId"].valueOr(this::identity))
     setConnected(properties["isConnected"].valueOr(this::isConnected))
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt
index 2cf9c21908e101794b7a88224dc1542cbf4bbadc..e7ad6859a9a73c30c801d1d4ab9102c17ba9b3d5 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt
@@ -68,8 +68,10 @@ class RpcHandler(
   }
 
   override fun sendInput(bufferInfo: BufferInfo, message: String) {
-    RPC("2sendInput(BufferInfo,QString)", ARG(bufferInfo, QType.BufferInfo),
-        ARG(message, Type.QString))
+    RPC(
+      "2sendInput(BufferInfo,QString)", ARG(bufferInfo, QType.BufferInfo),
+      ARG(message, Type.QString)
+    )
   }
 
   inline fun RPC(function: String, vararg arg: QVariant_) {
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBacklogManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBacklogManager.kt
index f142ef4818bc4b79d8ae3b60bc06fd2ad003926b..86d8c0682abe5f4a2b344f0f3344a491a5671b99 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBacklogManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBacklogManager.kt
@@ -10,15 +10,19 @@ interface IBacklogManager : ISyncableObject {
   @Slot
   fun requestBacklog(bufferId: BufferId, first: MsgId = -1, last: MsgId = -1, limit: Int = -1,
                      additional: Int = 0) {
-    REQUEST("requestBacklog", ARG(bufferId, QType.BufferId), ARG(first, QType.MsgId),
-            ARG(last, QType.MsgId), ARG(limit, Type.Int), ARG(additional, Type.Int))
+    REQUEST(
+      "requestBacklog", ARG(bufferId, QType.BufferId), ARG(first, QType.MsgId),
+      ARG(last, QType.MsgId), ARG(limit, Type.Int), ARG(additional, Type.Int)
+    )
   }
 
   @Slot
   fun requestBacklogAll(first: MsgId = -1, last: MsgId = -1, limit: Int = -1,
                         additional: Int = 0) {
-    REQUEST("requestBacklogAll", ARG(first, QType.MsgId), ARG(last, QType.MsgId),
-            ARG(limit, Type.Int), ARG(additional, Type.Int))
+    REQUEST(
+      "requestBacklogAll", ARG(first, QType.MsgId), ARG(last, QType.MsgId),
+      ARG(limit, Type.Int), ARG(additional, Type.Int)
+    )
   }
 
   @Slot
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBufferSyncer.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBufferSyncer.kt
index b0adef439a8780bc5ab5ebc61940bc5f3dd070d7..26d51044506dd9e467c21a38c1e840ee85cd2cec 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBufferSyncer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IBufferSyncer.kt
@@ -35,8 +35,10 @@ interface IBufferSyncer : ISyncableObject {
 
   @Slot
   fun requestMergeBuffersPermanently(buffer1: BufferId, buffer2: BufferId) {
-    REQUEST("requestMergeBuffersPermanently", ARG(buffer1, QType.BufferId),
-            ARG(buffer2, QType.BufferId))
+    REQUEST(
+      "requestMergeBuffersPermanently", ARG(buffer1, QType.BufferId),
+      ARG(buffer2, QType.BufferId)
+    )
   }
 
   @Slot
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIgnoreListManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIgnoreListManager.kt
index f28a4dc26d33b7f2b84415295d105a12432719a0..26dec34a67921945e27b9063dfd7058f5ab44b91 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIgnoreListManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIgnoreListManager.kt
@@ -20,10 +20,12 @@ interface IIgnoreListManager : ISyncableObject {
   @Slot
   fun requestAddIgnoreListItem(type: Int, ignoreRule: String, isRegEx: Boolean, strictness: Int,
                                scope: Int, scopeRule: String, isActive: Boolean) {
-    REQUEST("requestAddIgnoreListItem", ARG(type, Type.Int), ARG(ignoreRule, Type.QString),
-            ARG(isRegEx, Type.Bool),
-            ARG(strictness, Type.Int), ARG(scope, Type.Int), ARG(scopeRule, Type.QString),
-            ARG(isActive, Type.Bool))
+    REQUEST(
+      "requestAddIgnoreListItem", ARG(type, Type.Int), ARG(ignoreRule, Type.QString),
+      ARG(isRegEx, Type.Bool),
+      ARG(strictness, Type.Int), ARG(scope, Type.Int), ARG(scopeRule, Type.QString),
+      ARG(isActive, Type.Bool)
+    )
   }
 
   @Slot
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIrcListHelper.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIrcListHelper.kt
index 8b8788e9e068fc189efa84f6ed3922d43ed8e43b..fe2faef1a94dce098c49084c2382e91ae896918c 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIrcListHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IIrcListHelper.kt
@@ -9,8 +9,10 @@ import de.kuschku.libquassel.protocol.Type
 interface IIrcListHelper : ISyncableObject {
   @Slot
   fun requestChannelList(netId: NetworkId, channelFilters: QStringList): QVariantList {
-    REQUEST("requestChannelList", ARG(netId, QType.NetworkId),
-            ARG(channelFilters, Type.QStringList))
+    REQUEST(
+      "requestChannelList", ARG(netId, QType.NetworkId),
+      ARG(channelFilters, Type.QStringList)
+    )
     return emptyList()
   }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/INetwork.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/INetwork.kt
index 6953f88cff2c43f3c91baf44ed0d88b7f324bbb3..02c7d6de8902423d4cadf28a40a516b78b4a1863 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/INetwork.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/INetwork.kt
@@ -45,8 +45,10 @@ interface INetwork : ISyncableObject {
 
   @Slot
   fun addSupport(param: String, value: String = String()) {
-    SYNC("addSupport(param: String, value: String = String", ARG(param, Type.QString),
-         ARG(value, Type.QString))
+    SYNC(
+      "addSupport(param: String, value: String = String", ARG(param, Type.QString),
+      ARG(value, Type.QString)
+    )
   }
 
   @Slot
@@ -242,7 +244,8 @@ interface INetwork : ISyncableObject {
 
     companion object {
       private val byId = enumValues<ConnectionState>().associateBy(
-        ConnectionState::value)
+        ConnectionState::value
+      )
 
       fun of(value: Int) = byId[value] ?: Disconnected
     }
@@ -336,7 +339,8 @@ interface INetwork : ISyncableObject {
 
     companion object {
       private val byId = enumValues<ProxyType>().associateBy(
-        ProxyType::value)
+        ProxyType::value
+      )
 
       fun of(value: Int) = byId[value] ?: DefaultProxy
     }
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IRpcHandler.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IRpcHandler.kt
index 59538665759585f4b4f482c950931223c53d9286..4d2949eefb2fcf8e509af58cdcfe0f4116193026 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IRpcHandler.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IRpcHandler.kt
@@ -7,9 +7,7 @@ import de.kuschku.libquassel.protocol.Message
 import de.kuschku.libquassel.protocol.NetworkId
 import de.kuschku.libquassel.protocol.QVariantMap
 import de.kuschku.libquassel.quassel.BufferInfo
-import de.kuschku.libquassel.session.ISession
 import de.kuschku.libquassel.session.Session
-import de.kuschku.libquassel.session.SignalProxy
 import java.nio.ByteBuffer
 
 @Syncable(name = "RpcHandler")
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/invokers/Invokers.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/invokers/Invokers.kt
index 203884d8e37aa8f6166a048b8ac3c4667ec0fca7..f9aad6605da866be1f42ca374e39a7529d638783 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/invokers/Invokers.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/invokers/Invokers.kt
@@ -44,8 +44,10 @@ object Invokers {
   private fun <T> getInvoker(type: Class<T>): Invoker<T>? {
     val syncable: Syncable? = type.getAnnotation(Syncable::class.java)
     if (syncable == null) {
-      log(WARN, "Invokers",
-          "Invoker not annotated: ${type.canonicalName}")
+      log(
+        WARN, "Invokers",
+        "Invoker not annotated: ${type.canonicalName}"
+      )
       return null
     }
 
@@ -54,8 +56,10 @@ object Invokers {
     val klass = Class.forName("$packageName.$className")
     val invoker = klass.getDeclaredField("INSTANCE").get(null)
     if (invoker !is Invoker<*>) {
-      log(WARN, "Invokers",
-          "Invoker not of proper type: ${type.canonicalName} != ${invoker.javaClass.canonicalName}")
+      log(
+        WARN, "Invokers",
+        "Invoker not of proper type: ${type.canonicalName} != ${invoker.javaClass.canonicalName}"
+      )
       return null
     }
 
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 f5776b8c9e241f6dd517ebe892c14994947340f3..2c17144a380622f2465b893ebcc9b185b0859607 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
@@ -44,7 +44,8 @@ class CoreConnection(
   private val chainedBuffer = ChainedByteBuffer(direct = true)
 
   val state: BehaviorSubject<ConnectionState> = BehaviorSubject.createDefault(
-    ConnectionState.DISCONNECTED)
+    ConnectionState.DISCONNECTED
+  )
 
   private var channel: WrappedChannel? = null
 
@@ -66,9 +67,11 @@ class CoreConnection(
   private fun sendHandshake() {
     setState(ConnectionState.HANDSHAKE)
 
-    IntSerializer.serialize(chainedBuffer,
-                            0x42b33f00 or session.clientData.protocolFeatures.toInt(),
-                            session.coreFeatures)
+    IntSerializer.serialize(
+      chainedBuffer,
+      0x42b33f00 or session.clientData.protocolFeatures.toInt(),
+      session.coreFeatures
+    )
     for (supportedProtocol in session.clientData.supportedProtocols) {
       IntSerializer.serialize(chainedBuffer, supportedProtocol.toInt(), session.coreFeatures)
     }
@@ -99,12 +102,14 @@ class CoreConnection(
     when (protocol.version.toInt()) {
       0x02 -> {
         // Send client clientData to core
-        dispatch(HandshakeMessage.ClientInit(
-          clientVersion = session.clientData.identifier,
-          buildDate = DateTimeFormatter.ofPattern("MMM dd yyyy HH:mm:ss")
-            .format(session.clientData.buildDate.atOffset(ZoneOffset.UTC)),
-          clientFeatures = Quassel_Features.of(*Quassel_Feature.values())
-        ))
+        dispatch(
+          HandshakeMessage.ClientInit(
+            clientVersion = session.clientData.identifier,
+            buildDate = DateTimeFormatter.ofPattern("MMM dd yyyy HH:mm:ss")
+              .format(session.clientData.buildDate.atOffset(ZoneOffset.UTC)),
+            clientFeatures = Quassel_Features.of(*Quassel_Feature.values())
+          )
+        )
       }
       else -> {
         throw IllegalArgumentException("Invalid Protocol Version: $protocol")
@@ -127,8 +132,10 @@ class CoreConnection(
       try {
         val data = HandshakeMessage.serialize(message)
         handlerService.write(
-          MessageRunnable(data, HandshakeVariantMapSerializer, chainedBuffer, channel,
-                          session.coreFeatures)
+          MessageRunnable(
+            data, HandshakeVariantMapSerializer, chainedBuffer, channel,
+            session.coreFeatures
+          )
         )
       } catch (e: Throwable) {
         log(WARN, TAG, "Error encountered while serializing handshake message", e)
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
index 0a1bd77151a0fef351f7c735c94db1f392eb45e1..c1ad35b6827792e23063cb0d41107e5e4c3dd469 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
@@ -23,10 +23,13 @@ class ObjectStorage(private val proxy: SignalProxy) {
     objectTree.put("${obj.className}:$new", obj)
     objectTree.remove("${obj.className}:$old")
     proxy.dispatch(
-      SignalProxyMessage.RpcCall("__objectRenamed__", listOf(
+      SignalProxyMessage.RpcCall(
+        "__objectRenamed__", listOf(
         QVariant_(obj.className, Type.QString), QVariant_(new, Type.QString),
-        QVariant_(old, Type.QString))
-      ))
+        QVariant_(old, Type.QString)
+      )
+      )
+    )
   }
 
   fun get(className: QType, objectName: String) = get(className.typeName, objectName)
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 07a5916867f0eef3a819a00f9d288dd9da84dd01..89165784d64da725d5f018b2709e8889f2e3abd3 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt
@@ -57,7 +57,7 @@ abstract class ProtocolHandler : SignalProxy, AuthHandler, Closeable {
   override fun handle(f: SignalProxyMessage.InitData): Boolean {
     log(DEBUG, "ProtocolHandler", "< $f")
     val obj: ISyncableObject = objectStorage.get(f.className, f.objectName)
-      ?: throw ObjectNotFoundException(f.className, f.objectName)
+                               ?: throw ObjectNotFoundException(f.className, f.objectName)
 
     obj.fromVariantMap(f.initData)
     obj.initialized = true
@@ -103,7 +103,7 @@ abstract class ProtocolHandler : SignalProxy, AuthHandler, Closeable {
     log(DEBUG, "ProtocolHandler", f.toString())
 
     val invoker = Invokers.get(f.className)
-      ?: throw IllegalArgumentException("Invalid classname: ${f.className}")
+                  ?: throw IllegalArgumentException("Invalid classname: ${f.className}")
     currentCallClass = f.className
     currentCallInstance = f.objectName
     currentCallSlot = f.slotName
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 1faddcd315a5fd675535496e436cfd50d939b546..6039586c855ffbc0d1850057026d96b882ac4035 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/Session.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/Session.kt
@@ -50,10 +50,12 @@ class Session(
 
   override fun handle(f: HandshakeMessage.ClientInitAck): Boolean {
     coreFeatures = f.coreFeatures ?: Quassel_Feature.NONE
-    dispatch(HandshakeMessage.ClientLogin(
-      user = userData.first,
-      password = userData.second
-    ))
+    dispatch(
+      HandshakeMessage.ClientLogin(
+        user = userData.first,
+        password = userData.second
+      )
+    )
     return true
   }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt b/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt
index 4de216bde6f6406d2530a6b9b584f851700e04fb..98f166bbd6793368ecf98d68e425f3e749556f05 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt
@@ -71,7 +71,16 @@ class SessionManager(offlineSession: ISession, val backlogStorage: BacklogStorag
     lastHandlerService = handlerService
     lastUserData = userData
     lastShouldReconnect = shouldReconnect
-    inProgressSession.onNext(Session(clientData, trustManager, address, handlerService(), backlogStorage, userData))
+    inProgressSession.onNext(
+      Session(
+        clientData,
+        trustManager,
+        address,
+        handlerService(),
+        backlogStorage,
+        userData
+      )
+    )
   }
 
   private var lastClientData: ClientData? = null
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/Flag.kt b/lib/src/main/java/de/kuschku/libquassel/util/Flag.kt
index b0863fb295101362c648366011dfbfac30e24c7b..aff3f65f342612701237557f4331021b9718e78c 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/Flag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/Flag.kt
@@ -58,7 +58,8 @@ infix fun <T> Flags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : Flag<T>
 }
 
 infix fun <T> Flags<T>.or(other: Flag<T>): Flags<T> where T : kotlin.Enum<T>, T : Flag<T> = Flags(
-  value or other.bit)
+  value or other.bit
+)
 
 operator infix fun <T> Flags<T>.plus(
   other: Flags<T>): Flags<T>  where T : Enum<T>, T : Flag<T> = Flags(value or other.value)
@@ -67,4 +68,5 @@ operator infix fun <T> Flags<T>.plus(
   other: Flag<T>): Flags<T>  where T : Enum<T>, T : Flag<T> = Flags(value or other.bit)
 
 infix fun <T> Flags<T>.unset(which: T): Flags<T>  where T : Enum<T>, T : Flag<T> = Flags(
-  value xor which.bit)
+  value xor which.bit
+)
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/LongFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/LongFlag.kt
index 48ca720b8bdfd3d23aec556e8dd199057e7e7dde..6617ff22597b743e00c7dafdea553a146e13719b 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/LongFlag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/LongFlag.kt
@@ -59,16 +59,20 @@ infix fun <T> LongFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : Lon
 
 infix fun <T> LongFlags<T>.or(
   other: LongFlag<T>): LongFlags<T> where T : kotlin.Enum<T>, T : LongFlag<T> = LongFlags(
-  value or other.bit)
+  value or other.bit
+)
 
 operator infix fun <T> LongFlags<T>.plus(
   other: LongFlags<T>): LongFlags<T>  where T : Enum<T>, T : LongFlag<T> = LongFlags(
-  value or other.value)
+  value or other.value
+)
 
 operator infix fun <T> LongFlags<T>.plus(
   other: LongFlag<T>): LongFlags<T>  where T : Enum<T>, T : LongFlag<T> = LongFlags(
-  value or other.bit)
+  value or other.bit
+)
 
 infix fun <T> LongFlags<T>.unset(
   which: T): LongFlags<T>  where T : Enum<T>, T : LongFlag<T> = LongFlags(
-  value xor which.bit)
+  value xor which.bit
+)
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/ShortFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/ShortFlag.kt
index 5107f60ea2d1278ddd2d9bc5829f88330d77addd..ec88fd70e9c99eec1bc0417f35091a815378a7e9 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/ShortFlag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/ShortFlag.kt
@@ -63,16 +63,20 @@ infix fun <T> ShortFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : Sh
 
 infix fun <T> ShortFlags<T>.or(
   other: ShortFlag<T>): ShortFlags<T> where T : kotlin.Enum<T>, T : ShortFlag<T> = ShortFlags(
-  value or other.bit)
+  value or other.bit
+)
 
 operator infix fun <T> ShortFlags<T>.plus(
   other: ShortFlags<T>): ShortFlags<T>  where T : Enum<T>, T : ShortFlag<T> = ShortFlags(
-  value or other.value)
+  value or other.value
+)
 
 operator infix fun <T> ShortFlags<T>.plus(
   other: ShortFlag<T>): ShortFlags<T>  where T : Enum<T>, T : ShortFlag<T> = ShortFlags(
-  value or other.bit)
+  value or other.bit
+)
 
 infix fun <T> ShortFlags<T>.unset(
   which: T): ShortFlags<T>  where T : Enum<T>, T : ShortFlag<T> = ShortFlags(
-  value xor which.bit)
+  value xor which.bit
+)
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/reference/JavaLoggingHandler.kt b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/reference/JavaLoggingHandler.kt
index 668d869593894048be0fbb43c887c8dd268a2655..0a83d806b8166eb2950c929c0c0bac4963cf4ac8 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/compatibility/reference/JavaLoggingHandler.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/compatibility/reference/JavaLoggingHandler.kt
@@ -7,12 +7,14 @@ import java.util.logging.Logger
 object JavaLoggingHandler : LoggingHandler() {
   override fun isLoggable(logLevel: LogLevel, tag: String): Boolean {
     return Logger.getLogger(tag).isLoggable(
-      priority(logLevel))
+      priority(logLevel)
+    )
   }
 
   override fun log(logLevel: LogLevel, tag: String, message: String?, throwable: Throwable?) {
     val priority = priority(
-      logLevel)
+      logLevel
+    )
     val logger = Logger.getLogger(tag)
     if (message != null)
       logger.log(priority, message)
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ArrayHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ArrayHelper.kt
index 0acd30bec89225b35892adfff98b5087161782b6..279bb3f85ae752a35a5b476d8d585a132a9139ef 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ArrayHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ArrayHelper.kt
@@ -5,10 +5,11 @@ import de.kuschku.libquassel.util.compatibility.log
 
 fun ByteArray.hexDump() {
   for (i in 0 until this.size step 33) {
-    log(WARN, "HexDump",
-        (0 until 33).map { it + i }.filter { it < this.size }.joinToString(" ") {
-          String.format("%02x", this[it])
-        }
+    log(
+      WARN, "HexDump",
+      (0 until 33).map { it + i }.filter { it < this.size }.joinToString(" ") {
+        String.format("%02x", this[it])
+      }
     )
   }
 }
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 1170202b27c27cb0b2dd7b15878eaba14eb26401..e6465fa893d19ee4224220b1880974ec400fbc04 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
@@ -42,15 +42,18 @@ class WrappedChannel(
 
   companion object {
     fun ofSocket(s: Socket): WrappedChannel {
-      return WrappedChannel(s, s.getInputStream(),
-                            s.getOutputStream())
+      return WrappedChannel(
+        s, s.getInputStream(),
+        s.getOutputStream()
+      )
     }
   }
 
   fun withCompression(): WrappedChannel {
     val deflaterOutputStream = CompatibilityUtils.createDeflaterOutputStream(rawOutStream)
-    return WrappedChannel(socket, InflaterInputStream(rawInStream), deflaterOutputStream,
-                          deflaterOutputStream::flush
+    return WrappedChannel(
+      socket, InflaterInputStream(rawInStream), deflaterOutputStream,
+      deflaterOutputStream::flush
     )
   }
 
diff --git a/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt b/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt
index abe501dcca217616d16e43e2eb56ab0bede097d7..1bdc88b9221e2feb614838bfcf4542076a05cd05 100644
--- a/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt
+++ b/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt
@@ -30,13 +30,14 @@ class ConnectionUnitTest {
   }
 
   private fun runTest(host: String, port: Int, user: String, pass: String) {
-    val session = Session(ClientData(
-      identifier = "libquassel test",
-      buildDate = Instant.EPOCH,
-      clientFeatures = Quassel_Feature.of(*QuasselFeature.validValues),
-      protocolFeatures = Protocol_Feature.of(ProtocolFeature.TLS, ProtocolFeature.Compression),
-      supportedProtocols = listOf(Protocol.Datastream)
-    ), object : X509TrustManager {
+    val session = Session(
+      ClientData(
+        identifier = "libquassel test",
+        buildDate = Instant.EPOCH,
+        clientFeatures = Quassel_Feature.of(*QuasselFeature.validValues),
+        protocolFeatures = Protocol_Feature.of(ProtocolFeature.TLS, ProtocolFeature.Compression),
+        supportedProtocols = listOf(Protocol.Datastream)
+      ), object : X509TrustManager {
       override fun checkClientTrusted(p0: Array<out X509Certificate>?, p1: String?) {
       }
 
@@ -50,7 +51,8 @@ class ConnectionUnitTest {
       override fun clearMessages(bufferId: BufferId, idRange: IntRange) = Unit
       override fun clearMessages(bufferId: BufferId) = Unit
       override fun clearMessages() = Unit
-    }, user to pass)
+    }, user to pass
+    )
     session.join()
   }
 }
diff --git a/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt b/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt
index 40ec0c0478c8b8fff98fb03ba5395860b24a6f71..d097fa660e970959d76c03a1f4a1172beaa74830 100644
--- a/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt
+++ b/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt
@@ -48,11 +48,15 @@ class SerializerUnitTest {
     assertEquals(now, roundTrip(DateTimeSerializer, now))
 
     val value1 = Instant.EPOCH.atOffset(ZoneOffset.ofTotalSeconds(1234))
-    assertEquals(value1.atZoneSimilarLocal(ZoneOffset.UTC).toInstant(),
-                 roundTrip(DateTimeSerializer, value1))
+    assertEquals(
+      value1.atZoneSimilarLocal(ZoneOffset.UTC).toInstant(),
+      roundTrip(DateTimeSerializer, value1)
+    )
     val value2 = Instant.now().atOffset(ZoneOffset.ofTotalSeconds(1234))
-    assertEquals(value2.atZoneSimilarLocal(ZoneOffset.UTC).toInstant(),
-                 roundTrip(DateTimeSerializer, value2))
+    assertEquals(
+      value2.atZoneSimilarLocal(ZoneOffset.UTC).toInstant(),
+      roundTrip(DateTimeSerializer, value2)
+    )
 
     val value3 = LocalDateTime.of(1970, 1, 1, 0, 0)
       .atZone(ZoneOffset.systemDefault()).toInstant()
@@ -97,7 +101,8 @@ class SerializerUnitTest {
     fun <T> roundTrip(serializer: Serializer<T>, value: T,
                       features: Quassel_Features = Quassel_Feature.NONE): T {
       val chainedBuffer = ChainedByteBuffer(
-        direct = false)
+        direct = false
+      )
       serializer.serialize(chainedBuffer, value, features)
       val buffer = chainedBuffer.toBuffer()
       return serializer.deserialize(buffer, features)
diff --git a/malheur/build.gradle.kts b/malheur/build.gradle.kts
index 81022a43859114ff9e0881304404944d8fd1a309..95578183e06c7445e57ebdb4ff33c74103e1f3e7 100644
--- a/malheur/build.gradle.kts
+++ b/malheur/build.gradle.kts
@@ -19,5 +19,5 @@ android {
 dependencies {
   implementation(kotlin("stdlib", "1.2.0"))
 
-  implementation("com.google.code.gson", "gson", "2.2.4")
+  implementation("com.google.code.gson", "gson", "2.8.0")
 }
diff --git a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
index a371e6648fc67789f0ee9a1d8cabc4faecd0d699..3e67a36a3f2e5015f62d8aeef73e5e8bf066b9f9 100644
--- a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt
@@ -24,16 +24,20 @@ object CrashHandler {
       val stackTraces = Thread.getAllStackTraces()
       Thread {
         try {
-          val json = gson.toJson(reportCollector.collect(CrashContext(
-            application = application,
-            config = config,
-            crashingThread = activeThread,
-            throwable = throwable,
-            startTime = startTime,
-            crashTime = crashTime,
-            buildConfig = buildConfig,
-            stackTraces = stackTraces
-          ), config))
+          val json = gson.toJson(
+            reportCollector.collect(
+              CrashContext(
+                application = application,
+                config = config,
+                crashingThread = activeThread,
+                throwable = throwable,
+                startTime = startTime,
+                crashTime = crashTime,
+                buildConfig = buildConfig,
+                stackTraces = stackTraces
+              ), config
+            )
+          )
           // FIXME STOPSHIP Implement crash handling
         } catch (e: Throwable) {
           e.printStackTrace()
diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt
index c00c076102a930ba8be2e5798461cdb96cc23945..eda35c684020b91ce9a65653ab7587f7e10da2c6 100644
--- a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt
@@ -15,7 +15,8 @@ import java.lang.reflect.Modifier
 class DisplayCollector(application: Application) :
   Collector<DisplayInfo, Boolean> {
   private val windowManager = application.getSystemService(
-    Context.WINDOW_SERVICE) as WindowManager
+    Context.WINDOW_SERVICE
+  ) as WindowManager
 
   @Suppress("DEPRECATION")
   override fun collect(context: CrashContext, config: Boolean): DisplayInfo? {
diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/EnvCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/EnvCollector.kt
index 5cb6e7d952f1cbcf4ec3526a48664f74893632ea..3adcb27f5167f6c2dc3d8deaf1c53aeca58cdb44 100644
--- a/malheur/src/main/java/de/kuschku/malheur/collectors/EnvCollector.kt
+++ b/malheur/src/main/java/de/kuschku/malheur/collectors/EnvCollector.kt
@@ -16,7 +16,8 @@ class EnvCollector(application: Application) : Collector<EnvInfo, EnvConfig> {
   override fun collect(context: CrashContext, config: EnvConfig) = EnvInfo(
     paths = collectIf(config.paths) {
       reflectionCollectGetters(
-        Environment::class.java)?.map { (key, value) ->
+        Environment::class.java
+      )?.map { (key, value) ->
         key to if (value is File) {
           value.canonicalPath
         } else {