diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt
index 8176eec97277ab36c15c22874129e038477f4eb2..1814b07b30ab1a819d5c3e5d70de670e650ba8f2 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt
@@ -19,26 +19,20 @@ class HighlightRuleManager(
   ) : Serializable
 
   override fun toVariantMap(): QVariantMap = mapOf(
-    "HighlightRuleList" to QVariant.of(initHighlightRuleList(), Type.QVariantMap),
-    "HighlightNick" to QVariant.of(_highlightNick.value, Type.Int),
-    "NicksCaseSensitive" to QVariant.of(_nicksCaseSensitive, Type.Bool)
+    "HighlightRuleList" to QVariant.of(initHighlightRuleList(), Type.QVariantMap)
   )
 
   override fun fromVariantMap(properties: QVariantMap) {
     initSetHighlightRuleList(properties["HighlightRuleList"].valueOr(::emptyMap))
-    _highlightNick = properties["HighlightNick"].value<Int>()?.let {
-      IHighlightRuleManager.HighlightNickType.of(it)
-    } ?: _highlightNick
-    _nicksCaseSensitive = properties["NicksCaseSensitive"].value(_nicksCaseSensitive)
   }
 
   override fun initHighlightRuleList(): QVariantMap = mapOf(
     "name" to QVariant.of(_highlightRuleList.map {
-      QVariant.of(it.name, Type.QString)
-    }, Type.QVariantList),
+      it.name
+    }, Type.QStringList),
     "isRegEx" to QVariant.of(_highlightRuleList.map {
       QVariant.of(it.isRegEx, Type.Bool)
-    }, Type.QStringList),
+    }, Type.QVariantList),
     "isCaseSensitive" to QVariant.of(_highlightRuleList.map {
       QVariant.of(it.isCaseSensitive, Type.Bool)
     }, Type.QVariantList),
@@ -49,11 +43,13 @@ class HighlightRuleManager(
       QVariant.of(it.isInverse, Type.Bool)
     }, Type.QVariantList),
     "sender" to QVariant.of(_highlightRuleList.map {
-      QVariant.of(it.sender, Type.QString)
+      it.sender
     }, Type.QStringList),
     "channel" to QVariant.of(_highlightRuleList.map {
-      QVariant.of(it.channel, Type.QString)
-    }, Type.QVariantList)
+      it.channel
+    }, Type.QStringList),
+    "highlightNick" to QVariant.of(_highlightNick.value, Type.Int),
+    "nicksCaseSensitive" to QVariant.of(_nicksCaseSensitive, Type.Bool)
   )
 
   override fun initSetHighlightRuleList(highlightRuleList: QVariantMap) {
@@ -81,6 +77,10 @@ class HighlightRuleManager(
         channel = channelList[it] ?: ""
       )
     })
+    _highlightNick = highlightRuleList["highlightNick"].value<Int>()?.let {
+      IHighlightRuleManager.HighlightNickType.of(it)
+    } ?: _highlightNick
+    _nicksCaseSensitive = highlightRuleList["nicksCaseSensitive"].value(_nicksCaseSensitive)
   }
 
   override fun removeHighlightRule(highlightRule: String) = removeAt(indexOf(highlightRule))
@@ -101,10 +101,13 @@ class HighlightRuleManager(
     )
   }
 
+
+  fun highlightNick() = _highlightNick
   override fun setHighlightNick(highlightNick: Int) {
     _highlightNick = IHighlightRuleManager.HighlightNickType.of(highlightNick) ?: _highlightNick
   }
 
+  fun nicksCaseSensitive() = _nicksCaseSensitive
   override fun setNicksCaseSensitive(nicksCaseSensitive: Boolean) {
     _nicksCaseSensitive = nicksCaseSensitive
   }
@@ -124,6 +127,10 @@ class HighlightRuleManager(
     _highlightRuleList = list
   }
 
+  fun copy() = HighlightRuleManager(proxy).also {
+    it.fromVariantMap(toVariantMap())
+  }
+
   private var _highlightRuleList = emptyList<HighlightRule>()
   private var _highlightNick = IHighlightRuleManager.HighlightNickType.CurrentNick
   private var _nicksCaseSensitive = false
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
index d0434bd8f62862a248e4b2a99675160e294a024b..8e8e54401aa8408f4c55d2db367f5bdea573977f 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -74,6 +74,8 @@ class QuasselViewModel : ViewModel() {
 
   val ignoreListManager = session.mapMapNullable(ISession::ignoreListManager)
 
+  val highlightRuleManager = session.mapMapNullable(ISession::highlightRuleManager)
+
   val networks = session.switchMap {
     it.map(ISession::liveNetworks).orElse(Observable.just(emptyMap()))
   }