diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt
index a7ffa4f1abc6ce3b47d85b478012fe4e3ef651e2..601e6cfe77d97578265d5194d6cf777bd32d0170 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt
@@ -69,4 +69,4 @@ class InfoPropertyAdapter :
       iconFrame.visibleIf(item.icon != null)
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
index ad20d238d9eb13a083425082e696210da7ed4946..02ebfaae3c2637af325e6d84d28c95f76fe16a6b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
@@ -12,8 +12,13 @@ class RipplePassthroughTextView : TextView {
   constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) :
     super(context, attrs, defStyleAttr)
 
-  override fun onTouchEvent(event: MotionEvent?): Boolean {
+  // The goal is to provide all normal interaction to the parent view, unless a link is touched
+  // But additionally, we want to provide all normal textview interactions as well
+  override fun onTouchEvent(event: MotionEvent): Boolean {
+    val movementMethod = this.movementMethod
+    this.movementMethod = null
     super.onTouchEvent(event)
+    this.movementMethod = movementMethod
     return movementMethod?.onTouchEvent(this, text as? Spannable, event) == true
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
index bccc403ae2ea96ef7977b045630d660c2dc4dff2..a98089d8892b393997f5c9dd4fcd13da4b408aa2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
@@ -19,7 +19,10 @@ import de.kuschku.libquassel.session.Backend
 import de.kuschku.libquassel.util.Optional
 import de.kuschku.quasseldroid.Keys
 import de.kuschku.quasseldroid.R
-import de.kuschku.quasseldroid.settings.*
+import de.kuschku.quasseldroid.settings.AppearanceSettings
+import de.kuschku.quasseldroid.settings.AutoCompleteSettings
+import de.kuschku.quasseldroid.settings.ConnectionSettings
+import de.kuschku.quasseldroid.settings.Settings
 import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActivity
 import de.kuschku.quasseldroid.util.helper.sharedPreferences
 import de.kuschku.quasseldroid.util.helper.updateRecentsHeaderIfExisting
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt
index d5635f39dd6bd7ebbca8838959e519750f2748a4..003cf1c4be6a67bdcbe8aa28e2fcde004fd1c3dd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt
@@ -131,6 +131,7 @@ class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener {
   override fun onStopTrackingTouch(seekBar: SeekBar) = notifyChanged()
   override fun onGetDefaultValue(ta: TypedArray, index: Int) = ta.getInt(index,
                                                                          DEFAULT_VALUE)
+
   override fun onSetInitialValue(restoreValue: Boolean, defaultValue: Any?) {
     if (restoreValue) {
       currentValue = getPersistedInt(currentValue)
@@ -165,4 +166,4 @@ class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener {
     private const val NAMESPACE_ROBOBUNNY = "http://robobunny.com"
     private const val DEFAULT_VALUE = 50
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/layout/settings_item.xml b/app/src/main/res/layout/settings_item.xml
index 8d3b0db1f844dc82aed79b78a1a4d232b0592596..5b4f851adb2021a5192a2897d1a02682d34eafc7 100644
--- a/app/src/main/res/layout/settings_item.xml
+++ b/app/src/main/res/layout/settings_item.xml
@@ -26,8 +26,8 @@
       android:layout_height="wrap_content"
       android:ellipsize="marquee"
       android:singleLine="true"
-      android:textColor="?colorTextPrimary"
       android:textAppearance="?android:textAppearanceMedium"
+      android:textColor="?colorTextPrimary"
       android:textSize="16sp"
       tools:text="IRC Config" />
 
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 d0ad84789721b88c56931717dd4f270a045e3c44..d9ac6984b1abacd91445c66c353c71e45bf17734 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
@@ -174,12 +174,22 @@ class IrcChannel(
 
   fun codecForEncoding() = _codecForEncoding
   fun codecForDecoding() = _codecForDecoding
-  fun setCodecForEncoding(codecName: String) = setCodecForEncoding(Charset.forName(codecName))
+  fun setCodecForEncoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForEncoding(charset)
+    }
+  }
   fun setCodecForEncoding(codec: Charset) {
     _codecForEncoding = codec
   }
 
-  fun setCodecForDecoding(codecName: String) = setCodecForDecoding(Charset.forName(codecName))
+  fun setCodecForDecoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForDecoding(charset)
+    }
+  }
   fun setCodecForDecoding(codec: Charset) {
     _codecForDecoding = codec
   }
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 ebda98119e7e4b0aff25a92023b6f9ee05cd83b8..9de86de9592dec263b92dd8c022d7233adf6d1ba 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
@@ -11,7 +11,6 @@ import io.reactivex.Observable
 import io.reactivex.subjects.BehaviorSubject
 import org.threeten.bp.Instant
 import java.nio.charset.Charset
-
 class IrcUser(
   hostmask: String,
   network: Network,
@@ -96,12 +95,22 @@ class IrcUser(
   fun channels() = _channels.map(IrcChannel::name)
   fun codecForEncoding() = _codecForEncoding
   fun codecForDecoding() = _codecForDecoding
-  fun setCodecForEncoding(codecName: String) = setCodecForEncoding(Charset.forName(codecName))
+  fun setCodecForEncoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForEncoding(charset)
+    }
+  }
   fun setCodecForEncoding(codec: Charset) {
     _codecForEncoding = codec
   }
 
-  fun setCodecForDecoding(codecName: String) = setCodecForDecoding(Charset.forName(codecName))
+  fun setCodecForDecoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForDecoding(charset)
+    }
+  }
   fun setCodecForDecoding(codec: Charset) {
     _codecForDecoding = codec
   }
@@ -374,4 +383,5 @@ class IrcUser(
   companion object {
     val NULL = IrcUser("", Network.NULL, SignalProxy.NULL)
   }
-}
\ No newline at end of file
+}
+
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 adbf785f6df75cd1745ee8348c61228ef35ea146..b51e0e863b5e2d80a454a6529240d5a667783a31 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
@@ -625,15 +625,24 @@ class Network constructor(
   }
 
   fun setCodecForDecoding(codecName: String) {
-    setCodecForDecoding(Charset.forName(codecName))
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForDecoding(charset)
+    }
   }
 
   fun setCodecForEncoding(codecName: String) {
-    setCodecForDecoding(Charset.forName(codecName))
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForEncoding(charset)
+    }
   }
 
   fun setCodecForServer(codecName: String) {
-    setCodecForDecoding(Charset.forName(codecName))
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForServer(charset)
+    }
   }
 
   override fun addSupport(param: String, value: String?) {
@@ -1045,4 +1054,4 @@ class Network constructor(
   companion object {
     val NULL = Network(-1, SignalProxy.NULL)
   }
-}
\ No newline at end of file
+}
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
index d088b89fd3c32376743000051b4cf80d3a8fb94e..2a946f9fc595a346641e7a97557b172f94d519bc 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
@@ -2,10 +2,9 @@ package de.kuschku.quasseldroid.viewmodel.data
 
 import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.quassel.syncables.Network
-import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
 
 data class BufferData(
   val info: BufferInfo? = null,
   val network: Network? = null,
   val description: String? = null
-)
\ No newline at end of file
+)