diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt
index 25fdaaa019da177c28f06d232eb753854108f1e8..238ed903201bfc28822562516675df2bdbc63db0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragment.kt
@@ -18,6 +18,7 @@ import de.kuschku.libquassel.quassel.syncables.Network
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.ui.coresettings.chatlist.ChatlistCreateActivity
 import de.kuschku.quasseldroid.ui.coresettings.chatlist.ChatlistEditActivity
+import de.kuschku.quasseldroid.ui.coresettings.highlightlist.HighlightListActivity
 import de.kuschku.quasseldroid.ui.coresettings.identity.IdentityCreateActivity
 import de.kuschku.quasseldroid.ui.coresettings.identity.IdentityEditActivity
 import de.kuschku.quasseldroid.ui.coresettings.ignorelist.IgnoreListActivity
@@ -131,6 +132,10 @@ class CoreSettingsFragment : ServiceBoundFragment() {
       IgnoreListActivity.launch(requireContext())
     }
 
+    highlightlist.setOnClickListener {
+      HighlightListActivity.launch(requireContext())
+    }
+
     newNetwork.setOnClickListener {
       NetworkCreateActivity.launch(requireContext())
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/DragSortItemTouchHelperCallback.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/DragSortItemTouchHelperCallback.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e6547650ecd3edd1ac56d8c4f6056f4f1293aed3
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/DragSortItemTouchHelperCallback.kt
@@ -0,0 +1,28 @@
+package de.kuschku.quasseldroid.ui.coresettings.highlightlist
+
+import android.support.v7.widget.RecyclerView
+import android.support.v7.widget.helper.ItemTouchHelper
+
+class DragSortItemTouchHelperCallback(private val adapter: HighlightRuleAdapter) :
+  ItemTouchHelper.Callback() {
+  override fun isLongPressDragEnabled() = true
+
+  override fun isItemViewSwipeEnabled() = true
+
+  override fun getMovementFlags(recyclerView: RecyclerView,
+                                viewHolder: RecyclerView.ViewHolder): Int {
+    val dragFlags = ItemTouchHelper.UP or ItemTouchHelper.DOWN
+    val swipeFlags = ItemTouchHelper.START or ItemTouchHelper.END
+    return makeMovementFlags(dragFlags, swipeFlags)
+  }
+
+  override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder,
+                      target: RecyclerView.ViewHolder): Boolean {
+    adapter.move(viewHolder.adapterPosition, target.adapterPosition)
+    return true
+  }
+
+  override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
+    adapter.remove(viewHolder.adapterPosition)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt
index 8e2cf3a10fc0cbfe8edda5d3232b80d69aa4e181..f94e0cf52a0eb2fc9b076532a70cf0d4c4cc740c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragment.kt
@@ -1,23 +1,209 @@
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
+import android.app.Activity
+import android.arch.lifecycle.Observer
+import android.content.Intent
 import android.os.Bundle
+import android.support.v7.widget.DefaultItemAnimator
+import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.support.v7.widget.SwitchCompat
+import android.support.v7.widget.helper.ItemTouchHelper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.Button
+import android.widget.Spinner
+import butterknife.BindView
+import butterknife.ButterKnife
+import de.kuschku.libquassel.quassel.syncables.HighlightRuleManager
+import de.kuschku.libquassel.quassel.syncables.interfaces.IHighlightRuleManager
+import de.kuschku.libquassel.util.Optional
+import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.ui.coresettings.SettingsFragment
+import de.kuschku.quasseldroid.ui.coresettings.highlightrule.HighlightRuleActivity
+import de.kuschku.quasseldroid.util.helper.toLiveData
 
 class HighlightListFragment : SettingsFragment(), SettingsFragment.Savable,
                               SettingsFragment.Changeable {
+  @BindView(R.id.highlight_nick_type)
+  lateinit var highlightNickType: Spinner
+
+  @BindView(R.id.is_case_sensitive)
+  lateinit var isCaseSensitive: SwitchCompat
+
+  @BindView(R.id.highlight_rules)
+  lateinit var rules: RecyclerView
+
+  @BindView(R.id.new_highlight_rule)
+  lateinit var newHighlightRule: Button
+
+  @BindView(R.id.highlight_ignore_rules)
+  lateinit var ignoreRules: RecyclerView
+
+  @BindView(R.id.new_highlight_ignore_rule)
+  lateinit var newHighlightIgnoreRule: Button
+
+  private var ruleManager: Pair<HighlightRuleManager, HighlightRuleManager>? = null
+
+  private lateinit var rulesHelper: ItemTouchHelper
+
+  private lateinit var ignoreRulesHelper: ItemTouchHelper
+
+  private val rulesAdapter = HighlightRuleAdapter(::ruleClick, ::startRuleDrag)
+
+  private val ignoreRulesAdapter = HighlightRuleAdapter(::ignoreRuleClick, ::startIgnoreRuleDrag)
+
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                             savedInstanceState: Bundle?): View? {
-    return super.onCreateView(inflater, container, savedInstanceState)
+    val view = inflater.inflate(R.layout.settings_highlightlist, container, false)
+    ButterKnife.bind(this, view)
+
+    rules.adapter = rulesAdapter
+    rules.layoutManager = LinearLayoutManager(requireContext())
+    rules.itemAnimator = DefaultItemAnimator()
+
+    rulesHelper = ItemTouchHelper(DragSortItemTouchHelperCallback(rulesAdapter))
+    rulesHelper.attachToRecyclerView(rules)
+
+    ignoreRules.adapter = ignoreRulesAdapter
+    ignoreRules.layoutManager = LinearLayoutManager(requireContext())
+    ignoreRules.itemAnimator = DefaultItemAnimator()
+
+    ignoreRulesHelper = ItemTouchHelper(DragSortItemTouchHelperCallback(ignoreRulesAdapter))
+    ignoreRulesHelper.attachToRecyclerView(ignoreRules)
+
+    newHighlightRule.setOnClickListener {
+      startActivityForResult(
+        HighlightRuleActivity.intent(requireContext(), ignore = false),
+        REQUEST_CREATE_RULE
+      )
+    }
+
+    newHighlightIgnoreRule.setOnClickListener {
+      startActivityForResult(
+        HighlightRuleActivity.intent(requireContext(), ignore = true),
+        REQUEST_CREATE_RULE
+      )
+    }
+
+    val highlightNickTypeAdapter = HighlightNickTypeAdapter(listOf(
+      HighlightNickTypeItem(
+        value = IHighlightRuleManager.HighlightNickType.AllNicks,
+        name = R.string.settings_highlightlist_highlight_nick_all_nicks
+      ),
+      HighlightNickTypeItem(
+        value = IHighlightRuleManager.HighlightNickType.CurrentNick,
+        name = R.string.settings_highlightlist_highlight_nick_current_nick
+      ),
+      HighlightNickTypeItem(
+        value = IHighlightRuleManager.HighlightNickType.NoNick,
+        name = R.string.settings_highlightlist_highlight_nick_none
+      )
+    ))
+    highlightNickType.adapter = highlightNickTypeAdapter
+
+    viewModel.highlightRuleManager
+      .filter(Optional<HighlightRuleManager>::isPresent)
+      .map(Optional<HighlightRuleManager>::get)
+      .toLiveData().observe(this, Observer {
+        if (it != null) {
+          if (this.ruleManager == null) {
+            this.ruleManager = Pair(it, it.copy())
+            this.ruleManager?.let { (_, data) ->
+              rulesAdapter.list = data.highlightRuleList().filter { it.isInverse == false }
+              ignoreRulesAdapter.list = data.highlightRuleList().filter { it.isInverse == true }
+              highlightNickType.setSelection(highlightNickTypeAdapter.indexOf(data.highlightNick())
+                                             ?: 0)
+              isCaseSensitive.isChecked = data.nicksCaseSensitive()
+            }
+          }
+        }
+      })
+
+    return view
+  }
+
+  private fun ruleClick(rule: HighlightRuleManager.HighlightRule) {
+    startActivityForResult(
+      HighlightRuleActivity.intent(requireContext(), rule),
+      REQUEST_UPDATE_RULE
+    )
   }
 
-  override fun hasChanged(): Boolean {
-    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+  private fun startRuleDrag(holder: HighlightRuleAdapter.HighlightRuleViewHolder) =
+    rulesHelper.startDrag(holder)
+
+  private fun ignoreRuleClick(rule: HighlightRuleManager.HighlightRule) {
+    startActivityForResult(
+      HighlightRuleActivity.intent(requireContext(), rule),
+      REQUEST_UPDATE_IGNORE_RULE
+    )
+  }
+
+  private fun startIgnoreRuleDrag(holder: HighlightRuleAdapter.HighlightRuleViewHolder) =
+    ignoreRulesHelper.startDrag(holder)
+
+  override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+    if (resultCode == Activity.RESULT_OK && data != null) {
+      when (requestCode) {
+        REQUEST_UPDATE_RULE        -> {
+          val oldRule = data.getSerializableExtra("old") as? HighlightRuleManager.HighlightRule
+          val newRule = data.getSerializableExtra("new") as? HighlightRuleManager.HighlightRule
+
+          if (oldRule != null && newRule != null) {
+            rulesAdapter.replace(rulesAdapter.indexOf(oldRule.name), newRule)
+          }
+        }
+        REQUEST_CREATE_RULE        -> {
+          val newRule = data.getSerializableExtra("new") as? HighlightRuleManager.HighlightRule
+
+          if (newRule != null) {
+            rulesAdapter.add(newRule)
+          }
+        }
+        REQUEST_UPDATE_IGNORE_RULE -> {
+          val oldRule = data.getSerializableExtra("old") as? HighlightRuleManager.HighlightRule
+          val newRule = data.getSerializableExtra("new") as? HighlightRuleManager.HighlightRule
+
+          if (oldRule != null && newRule != null) {
+            ignoreRulesAdapter.replace(ignoreRulesAdapter.indexOf(oldRule.name), newRule)
+          }
+        }
+        REQUEST_CREATE_IGNORE_RULE -> {
+          val newRule = data.getSerializableExtra("new") as? HighlightRuleManager.HighlightRule
+
+          if (newRule != null) {
+            ignoreRulesAdapter.add(newRule)
+          }
+        }
+      }
+    }
+  }
+
+  override fun onSave() = ruleManager?.let { (it, data) ->
+    applyChanges(data)
+    it.requestUpdate(data.toVariantMap())
+    true
+  } ?: false
+
+  override fun hasChanged() = ruleManager?.let { (it, data) ->
+    applyChanges(data)
+    data.highlightNick() != it.highlightNick() ||
+    data.nicksCaseSensitive() != it.nicksCaseSensitive() ||
+    data.highlightRuleList() != it.highlightRuleList()
+  } ?: false
+
+  private fun applyChanges(data: HighlightRuleManager) {
+    data.setHighlightNick(highlightNickType.selectedItemId.toInt())
+    data.setNicksCaseSensitive(isCaseSensitive.isChecked)
+    data.setHighlightRuleList(rulesAdapter.list + ignoreRulesAdapter.list)
   }
 
-  override fun onSave(): Boolean {
-    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+  companion object {
+    private const val REQUEST_UPDATE_RULE = 1
+    private const val REQUEST_CREATE_RULE = 2
+    private const val REQUEST_UPDATE_IGNORE_RULE = 3
+    private const val REQUEST_CREATE_IGNORE_RULE = 4
   }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8a2802d55d8ffe1ebeab542f728ebf493798af0c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeAdapter.kt
@@ -0,0 +1,70 @@
+package de.kuschku.quasseldroid.ui.coresettings.highlightlist
+
+import android.support.v7.widget.RecyclerView
+import android.support.v7.widget.ThemedSpinnerAdapter
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import butterknife.BindView
+import butterknife.ButterKnife
+import de.kuschku.libquassel.quassel.syncables.interfaces.IHighlightRuleManager
+import de.kuschku.quasseldroid.R
+import de.kuschku.quasseldroid.util.ui.ContextThemeWrapper
+import de.kuschku.quasseldroid.util.ui.RecyclerSpinnerAdapter
+
+class HighlightNickTypeAdapter(val data: List<HighlightNickTypeItem>) :
+  RecyclerSpinnerAdapter<HighlightNickTypeAdapter.HighlightNickTypeViewHolder>(),
+  ThemedSpinnerAdapter {
+
+  override fun isEmpty() = data.isEmpty()
+
+  override fun onBindViewHolder(holder: HighlightNickTypeViewHolder, position: Int) =
+    holder.bind(getItem(position))
+
+  override fun onCreateViewHolder(parent: ViewGroup, dropDown: Boolean)
+    : HighlightNickTypeViewHolder {
+    val inflater = LayoutInflater.from(
+      if (dropDown)
+        ContextThemeWrapper(parent.context, dropDownViewTheme)
+      else
+        parent.context
+    )
+    val view = inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false)
+    return HighlightNickTypeViewHolder(
+      view
+    )
+  }
+
+  override fun getItem(position: Int) = data[position]
+
+  override fun getItemId(position: Int) = getItem(position).value.value.toLong()
+
+  override fun hasStableIds() = true
+
+  override fun getCount() = data.size
+
+  fun indexOf(value: IHighlightRuleManager.HighlightNickType): Int? {
+    for ((key, item) in data.withIndex()) {
+      if (item.value.value == value.value) {
+        return key
+      }
+    }
+    return null
+  }
+
+  class HighlightNickTypeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+    @BindView(android.R.id.text1)
+    lateinit var text: TextView
+
+    init {
+      ButterKnife.bind(this, itemView)
+    }
+
+    fun bind(activity: HighlightNickTypeItem?) {
+      activity?.let {
+        text.setText(it.name)
+      }
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeItem.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f34fa9e2014226d0f5b588124632b24d5db68dbc
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightNickTypeItem.kt
@@ -0,0 +1,9 @@
+package de.kuschku.quasseldroid.ui.coresettings.highlightlist
+
+import android.support.annotation.StringRes
+import de.kuschku.libquassel.quassel.syncables.interfaces.IHighlightRuleManager
+
+data class HighlightNickTypeItem(
+  val value: IHighlightRuleManager.HighlightNickType,
+  @StringRes val name: Int
+)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..970e903c711f192ae8e7e63c446a2a3c0393cc6c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightRuleAdapter.kt
@@ -0,0 +1,127 @@
+package de.kuschku.quasseldroid.ui.coresettings.highlightlist
+
+import android.support.v7.widget.RecyclerView
+import android.support.v7.widget.SwitchCompat
+import android.view.LayoutInflater
+import android.view.MotionEvent
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import butterknife.BindView
+import butterknife.ButterKnife
+import de.kuschku.libquassel.quassel.syncables.HighlightRuleManager
+import de.kuschku.quasseldroid.R
+import de.kuschku.quasseldroid.util.helper.visibleIf
+import java.util.*
+
+class HighlightRuleAdapter(
+  private val clickListener: (HighlightRuleManager.HighlightRule) -> Unit,
+  private val dragListener: (HighlightRuleViewHolder) -> Unit
+) : RecyclerView.Adapter<HighlightRuleAdapter.HighlightRuleViewHolder>() {
+  private val data = mutableListOf<HighlightRuleManager.HighlightRule>()
+  var list: List<HighlightRuleManager.HighlightRule>
+    get() = data
+    set(value) {
+      val length = data.size
+      data.clear()
+      notifyItemRangeRemoved(0, length)
+      data.addAll(value)
+      notifyItemRangeInserted(0, list.size)
+    }
+
+  fun add(item: HighlightRuleManager.HighlightRule) {
+    val index = data.size
+    data.add(item)
+    notifyItemInserted(index)
+  }
+
+  fun replace(index: Int, item: HighlightRuleManager.HighlightRule) {
+    data[index] = item
+    notifyItemChanged(index)
+  }
+
+  fun indexOf(rule: String) = data.map(HighlightRuleManager.HighlightRule::name).indexOf(rule)
+
+  fun remove(index: Int) {
+    data.removeAt(index)
+    notifyItemRemoved(index)
+  }
+
+  fun move(from: Int, to: Int) {
+    Collections.swap(data, from, to)
+    notifyItemMoved(from, to)
+  }
+
+  fun toggle(item: HighlightRuleManager.HighlightRule, isEnabled: Boolean) {
+    val index = indexOf(item.name)
+    data[index] = data[index].copy(isEnabled = isEnabled)
+  }
+
+  override fun getItemCount() = data.size
+
+  override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = HighlightRuleViewHolder(
+    LayoutInflater.from(parent.context)
+      .inflate(R.layout.settings_highlightlist_rule, parent, false),
+    clickListener,
+    ::toggle,
+    dragListener
+  )
+
+  override fun onBindViewHolder(holder: HighlightRuleViewHolder, position: Int) {
+    holder.bind(data[position])
+  }
+
+  class HighlightRuleViewHolder(
+    itemView: View,
+    clickListener: (HighlightRuleManager.HighlightRule) -> Unit,
+    toggleListener: (HighlightRuleManager.HighlightRule, Boolean) -> Unit,
+    dragListener: (HighlightRuleViewHolder) -> Unit
+  ) : RecyclerView.ViewHolder(itemView) {
+    @BindView(R.id.name)
+    lateinit var name: TextView
+
+    @BindView(R.id.sender)
+    lateinit var sender: TextView
+
+    @BindView(R.id.channel)
+    lateinit var channel: TextView
+
+    @BindView(R.id.toggle)
+    lateinit var toggle: SwitchCompat
+
+    @BindView(R.id.handle)
+    lateinit var handle: View
+
+    private var item: HighlightRuleManager.HighlightRule? = null
+
+    init {
+      ButterKnife.bind(this, itemView)
+      itemView.setOnClickListener {
+        item?.let {
+          clickListener(it)
+        }
+      }
+      toggle.setOnCheckedChangeListener { _, isChecked ->
+        item?.let {
+          toggleListener.invoke(it, isChecked)
+        }
+      }
+      handle.setOnTouchListener { _, event ->
+        if (event.action == MotionEvent.ACTION_DOWN) {
+          dragListener.invoke(this)
+        }
+        false
+      }
+    }
+
+    fun bind(item: HighlightRuleManager.HighlightRule) {
+      this.item = item
+      name.text = item.name
+      sender.text = item.sender
+      sender.visibleIf(item.sender.isNotBlank())
+      channel.text = item.channel
+      channel.visibleIf(item.channel.isNotBlank())
+      toggle.isChecked = item.isEnabled
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt
index b2136afa5309ae57a897a4dde12c184e34cbec4c..91d3792c5e2fc339b5886a77458e7d7d7e3470f0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleActivity.kt
@@ -9,16 +9,19 @@ class HighlightRuleActivity : SettingsActivity(HighlightRuleFragment()) {
   companion object {
     fun launch(
       context: Context,
-      rule: HighlightRuleManager.HighlightRule? = null
-    ) = context.startActivity(intent(context, rule))
+      rule: HighlightRuleManager.HighlightRule? = null,
+      ignore: Boolean = false
+    ) = context.startActivity(intent(context, rule, ignore))
 
     fun intent(
       context: Context,
-      rule: HighlightRuleManager.HighlightRule? = null
+      rule: HighlightRuleManager.HighlightRule? = null,
+      ignore: Boolean = false
     ) = Intent(context, HighlightRuleActivity::class.java).apply {
       if (rule != null) {
         putExtra("item", rule)
       }
+      putExtra("ignore", ignore)
     }
   }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt
index 4c3229b719d8f524796c777f851819b598d5efaa..7b158bb37b288178f3826f3306d442981b9f6cde 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragment.kt
@@ -1,23 +1,86 @@
 package de.kuschku.quasseldroid.ui.coresettings.highlightrule
 
+import android.app.Activity
+import android.content.Intent
 import android.os.Bundle
+import android.support.v7.widget.SwitchCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.EditText
+import butterknife.BindView
+import butterknife.ButterKnife
+import de.kuschku.libquassel.quassel.syncables.HighlightRuleManager
+import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.ui.coresettings.SettingsFragment
 
 class HighlightRuleFragment : SettingsFragment(), SettingsFragment.Savable,
                               SettingsFragment.Changeable {
+  @BindView(R.id.enabled)
+  lateinit var enabled: SwitchCompat
+
+  @BindView(R.id.name)
+  lateinit var name: EditText
+
+  @BindView(R.id.is_regex)
+  lateinit var isRegex: SwitchCompat
+
+  @BindView(R.id.is_case_sensitive)
+  lateinit var isCaseSensitive: SwitchCompat
+
+  @BindView(R.id.sender)
+  lateinit var sender: EditText
+
+  @BindView(R.id.channel)
+  lateinit var channel: EditText
+
+  private var rule: HighlightRuleManager.HighlightRule? = null
+
+  private var isInverse: Boolean? = null
+
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                             savedInstanceState: Bundle?): View? {
-    return super.onCreateView(inflater, container, savedInstanceState)
-  }
 
-  override fun hasChanged(): Boolean {
-    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    val view = inflater.inflate(R.layout.settings_highlightrule, container, false)
+    ButterKnife.bind(this, view)
+
+    isInverse = arguments?.getBoolean("inverse")
+    (arguments?.getSerializable("item") as? HighlightRuleManager.HighlightRule)?.let {
+      rule = it
+    }
+
+    rule?.let { data ->
+      enabled.isChecked = data.isEnabled
+      name.setText(data.name)
+      isRegex.isChecked = data.isRegEx
+      isCaseSensitive.isChecked = data.isCaseSensitive
+      sender.setText(data.sender)
+      channel.setText(data.channel)
+    }
+
+    return view
   }
 
-  override fun onSave(): Boolean {
-    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+  private fun applyChanges() = HighlightRuleManager.HighlightRule(
+    isInverse = rule?.isInverse ?: isInverse ?: false,
+    isEnabled = enabled.isChecked,
+    name = name.text.toString(),
+    isRegEx = isRegex.isChecked,
+    isCaseSensitive = isCaseSensitive.isChecked,
+    sender = sender.text.toString(),
+    channel = channel.text.toString()
+  )
+
+  override fun onSave() = rule.let { data ->
+    requireActivity().setResult(
+      Activity.RESULT_OK,
+      Intent().also {
+        it.putExtra("old", data)
+        it.putExtra("new", applyChanges())
+      }
+    )
+    true
   }
+
+  override fun hasChanged() = rule != applyChanges()
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt
index 3ac7edbb74b82733f1f5466845d0d30116c52d49..5bc78d5b53a6f367b2242665ebe43a75014b73b9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragment.kt
@@ -22,7 +22,7 @@ class IgnoreItemFragment : SettingsFragment(), SettingsFragment.Savable,
   @BindView(R.id.enabled)
   lateinit var enabled: SwitchCompat
 
-  @BindView(R.id.ignorerule)
+  @BindView(R.id.ignore_rule)
   lateinit var ignoreRule: EditText
 
   @BindView(R.id.isregex)
@@ -37,7 +37,7 @@ class IgnoreItemFragment : SettingsFragment(), SettingsFragment.Savable,
   @BindView(R.id.scope)
   lateinit var scope: Spinner
 
-  @BindView(R.id.scoperule)
+  @BindView(R.id.scope_rule)
   lateinit var scopeRule: EditText
 
   @BindView(R.id.scopegroup)
@@ -125,24 +125,7 @@ class IgnoreItemFragment : SettingsFragment(), SettingsFragment.Savable,
     return view
   }
 
-  override fun onSave() = item.let { data ->
-    val intent = Intent()
-    intent.putExtra("old", data)
-    val new = IgnoreListManager.IgnoreListItem(
-      isActive = enabled.isChecked,
-      ignoreRule = ignoreRule.text.toString(),
-      isRegEx = isRegEx.isChecked,
-      type = type.selectedItemId.toInt(),
-      strictness = strictness.selectedItemId.toInt(),
-      scope = scope.selectedItemId.toInt(),
-      scopeRule = scopeRule.text.toString()
-    )
-    intent.putExtra("new", new)
-    requireActivity().setResult(Activity.RESULT_OK, intent)
-    true
-  }
-
-  override fun hasChanged() = item != IgnoreListManager.IgnoreListItem(
+  private fun applyChanges() = IgnoreListManager.IgnoreListItem(
     isActive = enabled.isChecked,
     ignoreRule = ignoreRule.text.toString(),
     isRegEx = isRegEx.isChecked,
@@ -151,4 +134,17 @@ class IgnoreItemFragment : SettingsFragment(), SettingsFragment.Savable,
     scope = scope.selectedItemId.toInt(),
     scopeRule = scopeRule.text.toString()
   )
+
+  override fun onSave() = item.let { data ->
+    requireActivity().setResult(
+      Activity.RESULT_OK,
+      Intent().also {
+        it.putExtra("old", data)
+        it.putExtra("new", applyChanges())
+      }
+    )
+    true
+  }
+
+  override fun hasChanged() = item != applyChanges()
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt
index 2c204b8713511efce0243d05fa3f515c1a6b75e4..e190fbdba273ee6c99d907c41b0c2400ea75cbf0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListAdapter.kt
@@ -11,6 +11,7 @@ import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.libquassel.quassel.syncables.IgnoreListManager
 import de.kuschku.quasseldroid.R
+import de.kuschku.quasseldroid.util.helper.visibleIf
 import java.util.*
 
 class IgnoreListAdapter(
@@ -75,8 +76,11 @@ class IgnoreListAdapter(
     toggleListener: (IgnoreListManager.IgnoreListItem, Boolean) -> Unit,
     dragListener: (IgnoreItemViewHolder) -> Unit
   ) : RecyclerView.ViewHolder(itemView) {
-    @BindView(R.id.title)
-    lateinit var title: TextView
+    @BindView(R.id.ignore_rule)
+    lateinit var ignoreRule: TextView
+
+    @BindView(R.id.scope_rule)
+    lateinit var scopeRule: TextView
 
     @BindView(R.id.toggle)
     lateinit var toggle: SwitchCompat
@@ -108,7 +112,9 @@ class IgnoreListAdapter(
 
     fun bind(item: IgnoreListManager.IgnoreListItem) {
       this.item = item
-      title.text = item.ignoreRule
+      ignoreRule.text = item.ignoreRule
+      scopeRule.text = item.scopeRule
+      scopeRule.visibleIf(item.scopeRule.isNotBlank() && item.scope != IgnoreListManager.ScopeType.GlobalScope)
       toggle.isChecked = item.isActive
     }
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt
index 967ab67c638e7ef95e331ae375b8f6381f0bc68f..b1bf65b5f02af85f3697c208a289cd39e33cd1f6 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragment.kt
@@ -31,7 +31,7 @@ class IgnoreListFragment : SettingsFragment(), SettingsFragment.Savable,
 
   private var ignoreListManager: Pair<IgnoreListManager, IgnoreListManager>? = null
 
-  lateinit var helper: ItemTouchHelper
+  private lateinit var helper: ItemTouchHelper
 
   private val adapter = IgnoreListAdapter(::itemClick, ::startDrag)
 
@@ -83,8 +83,7 @@ class IgnoreListFragment : SettingsFragment(), SettingsFragment.Savable,
           val newRule = data.getSerializableExtra("new") as? IgnoreListManager.IgnoreListItem
 
           if (oldRule != null && newRule != null) {
-            val index = adapter.indexOf(oldRule.ignoreRule)
-            adapter.replace(index, newRule)
+            adapter.replace(adapter.indexOf(oldRule.ignoreRule), newRule)
           }
         }
         REQUEST_CREATE_RULE -> {
diff --git a/app/src/main/res/layout/settings_highlightlist.xml b/app/src/main/res/layout/settings_highlightlist.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0a5096f6a473ef023f0eb52dbfb265e93c02e917
--- /dev/null
+++ b/app/src/main/res/layout/settings_highlightlist.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.v4.widget.NestedScrollView 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:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:scrollbars="vertical">
+
+  <LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:gravity="center_vertical"
+      android:minHeight="?listPreferredItemHeightSmall"
+      android:paddingEnd="?listPreferredItemPaddingRight"
+      android:paddingLeft="?listPreferredItemPaddingLeft"
+      android:paddingRight="?listPreferredItemPaddingRight"
+      android:paddingStart="?listPreferredItemPaddingLeft">
+
+      <android.support.v7.widget.AppCompatImageView
+        style="@style/Widget.CoreSettings.PrimaryItemIcon"
+        app:srcCompat="@drawable/ic_server_network" />
+
+      <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:paddingBottom="16dp"
+        android:paddingTop="16dp">
+
+        <TextView
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:text="@string/settings_highlightlist_highlight_nick"
+          android:textColor="?colorTextPrimary"
+          android:textSize="16sp" />
+      </LinearLayout>
+    </LinearLayout>
+
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_marginLeft="72dp"
+      android:layout_marginStart="72dp"
+      android:orientation="vertical">
+
+      <Spinner
+        android:id="@+id/highlight_nick_type"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        tools:listitem="@layout/widget_spinner_item_toolbar" />
+
+      <android.support.v7.widget.SwitchCompat
+        android:id="@+id/is_case_sensitive"
+        style="@style/Widget.CoreSettings.PrimaryItemSwitch"
+        android:text="@string/settings_highlightlist_nicks_case_sensitive" />
+    </LinearLayout>
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:gravity="center_vertical"
+      android:minHeight="?listPreferredItemHeightSmall"
+      android:paddingEnd="?listPreferredItemPaddingRight"
+      android:paddingLeft="?listPreferredItemPaddingLeft"
+      android:paddingRight="?listPreferredItemPaddingRight"
+      android:paddingStart="?listPreferredItemPaddingLeft">
+
+      <android.support.v7.widget.AppCompatImageView
+        style="@style/Widget.CoreSettings.PrimaryItemIcon"
+        app:srcCompat="@drawable/ic_server_network" />
+
+      <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:paddingBottom="16dp"
+        android:paddingTop="16dp">
+
+        <TextView
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:text="@string/settings_highlightlist_rules"
+          android:textColor="?colorTextPrimary"
+          android:textSize="16sp" />
+      </LinearLayout>
+    </LinearLayout>
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_marginLeft="72dp"
+      android:layout_marginStart="72dp"
+      android:orientation="vertical">
+
+      <android.support.v7.widget.RecyclerView
+        android:id="@+id/highlight_rules"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        tools:itemCount="2"
+        tools:listitem="@layout/settings_highlightlist_rule" />
+
+      <LinearLayout
+        style="@style/Widget.CoreSettings.EditTextLayout"
+        android:orientation="horizontal">
+
+        <Button
+          android:id="@+id/new_highlight_rule"
+          style="@style/Widget.Button.Borderless.Colored"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/label_new_highlight_rule" />
+      </LinearLayout>
+    </LinearLayout>
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:gravity="center_vertical"
+      android:minHeight="?listPreferredItemHeightSmall"
+      android:paddingEnd="?listPreferredItemPaddingRight"
+      android:paddingLeft="?listPreferredItemPaddingLeft"
+      android:paddingRight="?listPreferredItemPaddingRight"
+      android:paddingStart="?listPreferredItemPaddingLeft">
+
+      <android.support.v7.widget.AppCompatImageView
+        style="@style/Widget.CoreSettings.PrimaryItemIcon"
+        app:srcCompat="@drawable/ic_server_network" />
+
+      <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:paddingBottom="16dp"
+        android:paddingTop="16dp">
+
+        <TextView
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:text="@string/settings_highlightlist_ignore_rules"
+          android:textColor="?colorTextPrimary"
+          android:textSize="16sp" />
+      </LinearLayout>
+    </LinearLayout>
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_marginLeft="72dp"
+      android:layout_marginStart="72dp"
+      android:orientation="vertical">
+
+      <android.support.v7.widget.RecyclerView
+        android:id="@+id/highlight_ignore_rules"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        tools:itemCount="2"
+        tools:listitem="@layout/settings_highlightlist_rule" />
+
+      <LinearLayout
+        style="@style/Widget.CoreSettings.EditTextLayout"
+        android:orientation="horizontal">
+
+        <Button
+          android:id="@+id/new_highlight_ignore_rule"
+          style="@style/Widget.Button.Borderless.Colored"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/label_new_highlight_ignore_rule" />
+      </LinearLayout>
+    </LinearLayout>
+  </LinearLayout>
+</android.support.v4.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_highlightlist_rule.xml b/app/src/main/res/layout/settings_highlightlist_rule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9bf0ae7f5252f19e8fb998f0d49464f54efde743
--- /dev/null
+++ b/app/src/main/res/layout/settings_highlightlist_rule.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.v7.widget.CardView 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:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:layout_margin="2dp"
+  app:cardBackgroundColor="?colorBackgroundCard"
+  app:cardElevation="2dp">
+
+  <LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="?selectableItemBackground"
+    android:focusable="true"
+    android:gravity="center_vertical"
+    android:minHeight="?listPreferredItemHeightSmall">
+
+    <android.support.v7.widget.AppCompatImageView
+      android:id="@+id/handle"
+      android:layout_width="wrap_content"
+      android:layout_height="match_parent"
+      android:layout_gravity="center_vertical"
+      android:paddingEnd="32dp"
+      android:paddingLeft="?listPreferredItemPaddingRight"
+      android:paddingRight="32dp"
+      android:paddingStart="?listPreferredItemPaddingRight"
+      app:srcCompat="@drawable/ic_reorder"
+      app:tint="?colorTextSecondary" />
+
+    <LinearLayout
+      android:layout_width="0dip"
+      android:layout_height="wrap_content"
+      android:layout_weight="1"
+      android:orientation="vertical"
+      android:paddingBottom="16dp"
+      android:paddingTop="16dp">
+
+      <TextView
+        android:id="@+id/name"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:ellipsize="marquee"
+        android:orientation="vertical"
+        android:singleLine="true"
+        android:textAppearance="?android:textAppearanceMedium"
+        android:textColor="?colorTextPrimary"
+        android:textSize="16sp"
+        tools:text="(janne): " />
+
+      <TextView
+        android:id="@+id/sender"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:ellipsize="marquee"
+        android:singleLine="true"
+        android:textAppearance="?textAppearanceListItemSecondary"
+        android:textColor="?colorTextSecondary"
+        tools:text="TARS" />
+
+      <TextView
+        android:id="@+id/channel"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:ellipsize="marquee"
+        android:singleLine="true"
+        android:textAppearance="?textAppearanceListItemSecondary"
+        android:textColor="?colorTextSecondary"
+        tools:text="#yepityha" />
+
+    </LinearLayout>
+
+    <android.support.v7.widget.SwitchCompat
+      android:id="@+id/toggle"
+      android:layout_width="wrap_content"
+      android:layout_height="match_parent"
+      android:paddingEnd="?listPreferredItemPaddingRight"
+      android:paddingLeft="?listPreferredItemPaddingLeft"
+      android:paddingRight="?listPreferredItemPaddingRight"
+      android:paddingStart="?listPreferredItemPaddingLeft" />
+  </LinearLayout>
+</android.support.v7.widget.CardView>
diff --git a/app/src/main/res/layout/settings_highlightrule.xml b/app/src/main/res/layout/settings_highlightrule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c0b248ffb6c714c452e92c5d479c06caebb7a039
--- /dev/null
+++ b/app/src/main/res/layout/settings_highlightrule.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.v4.widget.NestedScrollView 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:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:scrollbars="vertical">
+
+  <LinearLayout style="@style/Widget.CoreSettings.Wrapper">
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:minHeight="48dp">
+
+      <android.support.v7.widget.AppCompatImageView
+        style="@style/Widget.CoreSettings.PrimaryItemIcon"
+        app:srcCompat="@drawable/ic_filter" />
+
+      <android.support.v7.widget.SwitchCompat
+        android:id="@+id/enabled"
+        style="@style/Widget.CoreSettings.PrimaryItemSwitch"
+        android:text="@string/settings_highlightrule_enabled" />
+    </LinearLayout>
+
+    <LinearLayout
+      style="@style/Widget.CoreSettings.DependentGroup"
+      android:visibility="visible">
+
+      <android.support.design.widget.TextInputLayout
+        style="@style/Widget.CoreSettings.EditTextLayout"
+        android:hint="@string/settings_highlightrule_name">
+
+        <android.support.design.widget.TextInputEditText
+          android:id="@+id/name"
+          style="@style/Widget.CoreSettings.EditText"
+          tools:text="https://clbin.com/*.jpg*" />
+      </android.support.design.widget.TextInputLayout>
+
+      <android.support.v7.widget.SwitchCompat
+        android:id="@+id/is_regex"
+        style="@style/Widget.CoreSettings.PrimaryItemSwitch"
+        android:text="@string/settings_highlightrule_regular_expression" />
+
+      <android.support.v7.widget.SwitchCompat
+        android:id="@+id/is_case_sensitive"
+        style="@style/Widget.CoreSettings.PrimaryItemSwitch"
+        android:text="@string/settings_highlightrule_case_sensitive" />
+
+      <android.support.design.widget.TextInputLayout
+        style="@style/Widget.CoreSettings.EditTextLayout"
+        android:hint="@string/settings_highlightrule_sender">
+
+        <android.support.design.widget.TextInputEditText
+          android:id="@+id/sender"
+          style="@style/Widget.CoreSettings.EditText"
+          tools:text="TARS" />
+      </android.support.design.widget.TextInputLayout>
+
+      <android.support.design.widget.TextInputLayout
+        style="@style/Widget.CoreSettings.EditTextLayout"
+        android:hint="@string/settings_highlightrule_channel">
+
+        <android.support.design.widget.TextInputEditText
+          android:id="@+id/channel"
+          style="@style/Widget.CoreSettings.EditText"
+          tools:text="#yepityha" />
+      </android.support.design.widget.TextInputLayout>
+    </LinearLayout>
+  </LinearLayout>
+</android.support.v4.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/settings_ignoreitem.xml b/app/src/main/res/layout/settings_ignoreitem.xml
index cec671aa911302572777610c7523a1d8e19de2d0..49e81f1dd2ca436c7c75322c86f90f9c3a9d476b 100644
--- a/app/src/main/res/layout/settings_ignoreitem.xml
+++ b/app/src/main/res/layout/settings_ignoreitem.xml
@@ -32,7 +32,7 @@
         android:hint="@string/settings_ignoreitem_ignorerule">
 
         <android.support.design.widget.TextInputEditText
-          android:id="@+id/ignorerule"
+          android:id="@+id/ignore_rule"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="https://clbin.com/*.jpg*" />
       </android.support.design.widget.TextInputLayout>
@@ -98,7 +98,7 @@
         android:hint="@string/settings_ignoreitem_scoperule">
 
         <android.support.design.widget.TextInputEditText
-          android:id="@+id/scoperule"
+          android:id="@+id/scope_rule"
           style="@style/Widget.CoreSettings.EditText"
           tools:text="https://clbin.com/*.jpg*" />
       </android.support.design.widget.TextInputLayout>
diff --git a/app/src/main/res/layout/settings_ignorelist_item.xml b/app/src/main/res/layout/settings_ignorelist_item.xml
index 0f716b7f8a0ffa063fc125c2237f866e592f6077..c1cc3a59b9cc524c75e03d05bdb6e406f45cd0ff 100644
--- a/app/src/main/res/layout/settings_ignorelist_item.xml
+++ b/app/src/main/res/layout/settings_ignorelist_item.xml
@@ -29,6 +29,38 @@
       app:srcCompat="@drawable/ic_reorder"
       app:tint="?colorTextSecondary" />
 
+    <LinearLayout
+      android:layout_width="0dip"
+      android:layout_height="wrap_content"
+      android:layout_weight="1"
+      android:orientation="vertical"
+      android:paddingBottom="16dp"
+      android:paddingTop="16dp">
+
+      <TextView
+        android:id="@+id/ignore_rule"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:ellipsize="marquee"
+        android:orientation="vertical"
+        android:singleLine="true"
+        android:textAppearance="?android:textAppearanceMedium"
+        android:textColor="?colorTextPrimary"
+        android:textSize="16sp"
+        tools:text="SoniEx2" />
+
+      <TextView
+        android:id="@+id/scope_rule"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:ellipsize="marquee"
+        android:singleLine="true"
+        android:textAppearance="?textAppearanceListItemSecondary"
+        android:textColor="?colorTextSecondary"
+        tools:text="#quasseldroid" />
+
+    </LinearLayout>
+
     <TextView
       android:id="@+id/title"
       android:layout_width="0dip"
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 3024c896eee54e59cdc19a904fd218b6b54be7da..09415fbd4f1ecf703c3bb234999e35868dc6fc62 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -42,6 +42,8 @@
   <string name="label_mention_long">Kopiert den Nutzernamen in die Eingabezeile</string>
   <string name="label_new_account">Account hinzufügen</string>
   <string name="label_new_chatlist">Chatliste hinzufügen</string>
+  <string name="label_new_highlight_rule">Neue Hervorhebungsregel</string>
+  <string name="label_new_highlight_ignore_rule">Neue Hervorhebungsignorierregel</string>
   <string name="label_new_identity">Identität hinzufügen</string>
   <string name="label_new_network">Netzwerk hinzufügen</string>
   <string name="label_new_nick">Spitzname hinzufügen</string>
diff --git a/app/src/main/res/values-de/strings_settings.xml b/app/src/main/res/values-de/strings_settings.xml
index af48a964e92b0ce1f031d44a9c2a41f3be8723f0..0e748aa91da1af77cec29c80a1c907a2361f00a9 100644
--- a/app/src/main/res/values-de/strings_settings.xml
+++ b/app/src/main/res/values-de/strings_settings.xml
@@ -96,8 +96,21 @@
   <string name="settings_ignoreitem_scoperule">Gültigkeitsregel</string>
 
   <string name="settings_highlightlist_title">Hervorhebungen</string>
+  <string name="settings_highlightlist_highlight_nick">Hervorgehobene Spitznamen</string>
+  <string name="settings_highlightlist_highlight_nick_all_nicks">Alle Spitznamen aus Identität</string>
+  <string name="settings_highlightlist_highlight_nick_current_nick">Aktueller Spitzname</string>
+  <string name="settings_highlightlist_highlight_nick_none">Keine</string>
+  <string name="settings_highlightlist_nicks_case_sensitive">Groß-/Kleinschreibung beachten</string>
+  <string name="settings_highlightlist_rules">Hervorhebungsregeln</string>
+  <string name="settings_highlightlist_ignore_rules">Hervorhebungsignorierregeln</string>
 
   <string name="settings_highlightrule_title">Hervorhebungsregel</string>
+  <string name="settings_highlightrule_enabled">Aktiviert</string>
+  <string name="settings_highlightrule_name">Name</string>
+  <string name="settings_highlightrule_regular_expression">Regulärer Ausdruck</string>
+  <string name="settings_highlightrule_case_sensitive">Groß-/Kleinschreibung beachten</string>
+  <string name="settings_highlightrule_sender">Absender</string>
+  <string name="settings_highlightrule_channel">Raum</string>
 
   <string name="settings_aliaslist_title">Aliase</string>
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 74d3af40c78606f2baa143f456f3f6bb064836a7..cb8bdcf668c6f6d60056545a12551e643f324abc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -42,6 +42,8 @@
   <string name="label_mention_long">Copy username into input line</string>
   <string name="label_new_account">New Account</string>
   <string name="label_new_chatlist">New Chatlist</string>
+  <string name="label_new_highlight_rule">New Highlight Rule</string>
+  <string name="label_new_highlight_ignore_rule">New Highlight Ignore Rule</string>
   <string name="label_new_identity">New Identity</string>
   <string name="label_new_network">New Network</string>
   <string name="label_new_nick">New Nick</string>
diff --git a/app/src/main/res/values/strings_settings.xml b/app/src/main/res/values/strings_settings.xml
index be879b38addf3850d5dd1b699941fc153ecc3bc3..11a0943a3aa2d325f26d3d93c379f24c0eb2ccaa 100644
--- a/app/src/main/res/values/strings_settings.xml
+++ b/app/src/main/res/values/strings_settings.xml
@@ -96,8 +96,21 @@
   <string name="settings_ignoreitem_scoperule">Scope Rule</string>
 
   <string name="settings_highlightlist_title">Highlights</string>
+  <string name="settings_highlightlist_highlight_nick">Highlight Nick</string>
+  <string name="settings_highlightlist_highlight_nick_all_nicks">All Nicks from Identity</string>
+  <string name="settings_highlightlist_highlight_nick_current_nick">Current Nick</string>
+  <string name="settings_highlightlist_highlight_nick_none">None</string>
+  <string name="settings_highlightlist_nicks_case_sensitive">Case Sensitive</string>
+  <string name="settings_highlightlist_rules">Highlight Rules</string>
+  <string name="settings_highlightlist_ignore_rules">Highlight Ignore Rules</string>
 
   <string name="settings_highlightrule_title">Highlight Rule</string>
+  <string name="settings_highlightrule_enabled">Enabled</string>
+  <string name="settings_highlightrule_name">Name</string>
+  <string name="settings_highlightrule_regular_expression">Regular Expression</string>
+  <string name="settings_highlightrule_case_sensitive">Case Sensitive</string>
+  <string name="settings_highlightrule_sender">Sender</string>
+  <string name="settings_highlightrule_channel">Channel</string>
 
   <string name="settings_aliaslist_title">Aliases</string>
 
diff --git a/app/src/main/res/values/styles_widgets.xml b/app/src/main/res/values/styles_widgets.xml
index 3aa0809a331df320e200e7fe8de2654c2a004d05..6d8a4743f7bf16134da2a95087d91996537abe19 100644
--- a/app/src/main/res/values/styles_widgets.xml
+++ b/app/src/main/res/values/styles_widgets.xml
@@ -39,6 +39,14 @@
     <item name="android:textColorSecondary">?colorTextSecondary</item>
   </style>
 
+  <style name="Widget.TabLayout.Auto" parent="Widget.Design.TabLayout">
+    <item name="tabIndicatorColor">?colorAccent</item>
+    <item name="tabIndicatorHeight">3dp</item>
+    <item name="tabBackground">?backgroundMenuItem</item>
+    <item name="tabSelectedTextColor">?colorAccent</item>
+    <item name="android:textColor">?colorTextPrimary</item>
+  </style>
+
   <style name="Widget.DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
     <item name="color">?attr/colorControlNormal</item>
   </style>