diff --git a/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt b/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt
index 1eabb869f96f2ac800b9a7bccea3eff0de76d84d..dae870cd4367beb1be3a6640c9a1b923eeed424a 100644
--- a/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt
+++ b/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt
@@ -4,6 +4,7 @@ import de.kuschku.libquassel.protocol.connection.ProtocolInfoSerializer
 import de.kuschku.libquassel.protocol.features.FeatureSet
 import de.kuschku.libquassel.protocol.io.ChainedByteBuffer
 import de.kuschku.libquassel.protocol.messages.handshake.ClientInit
+import de.kuschku.libquassel.protocol.serializers.HandshakeSerializers
 import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitAckSerializer
 import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitRejectSerializer
 import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitSerializer
@@ -111,10 +112,9 @@ class ExampleUnitTest {
       read {
         val data = HandshakeMapSerializer.deserialize(it, connectionFeatureSet)
         println(data)
-        when (data["MsgType"].into<String>()) {
-          "ClientInitAck" -> println(ClientInitAckSerializer.deserialize(data))
-          "ClientInitReject" -> println(ClientInitRejectSerializer.deserialize(data))
-        }
+        val msgType: String = data["MsgType"].into("")
+        val message: Any? = HandshakeSerializers[msgType]?.deserialize(data)
+        println(message)
       }
     }
   }
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt
index e11430ae86c2011b2ef4ee17bc76a13b22b11a5d..c2a9dba5593ffc0016af90cdc04d477263dad529 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt
@@ -33,12 +33,11 @@ object HandshakeSerializers {
     ClientInitRejectSerializer,
   ).associateBy(HandshakeSerializer<*>::type)
 
-  @PublishedApi
-  internal fun find(type: String) = serializers[type]
+  operator fun get(type: String) = serializers[type]
 
   @Suppress("UNCHECKED_CAST")
-  inline operator fun <reified T> get(type: String): HandshakeSerializer<T> {
-    val serializer = find(type)
+  inline fun <reified T> find(type: String): HandshakeSerializer<T> {
+    val serializer = get(type)
       ?: throw NoSerializerForTypeException.Handshake(type, T::class.java)
     if (serializer.javaType == T::class.java) {
       return serializer as HandshakeSerializer<T>
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt
index 6cb668042b135917dd0bcf51c503f2dcc22d3ee1..d03d777dcfecaec40d93b3ae1acf78163abeccb6 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt
@@ -54,12 +54,11 @@ object QtSerializers {
     QVariantMapSerializer,
   ).associateBy(QtSerializer<*>::qtType)
 
-  @PublishedApi
-  internal fun find(type: QtType) = serializers[type]
+  operator fun get(type: QtType) = serializers[type]
 
   @Suppress("UNCHECKED_CAST")
-  inline operator fun <reified T> get(type: QtType): QtSerializer<T> {
-    val serializer = find(type)
+  inline fun <reified T> find(type: QtType): QtSerializer<T> {
+    val serializer = get(type)
       ?: throw NoSerializerForTypeException.Qt(type, T::class.java)
     if (serializer.javaType == T::class.java) {
       return serializer as QtSerializer<T>
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt
index 0d201e7acba9bee560ec663c6332ffeb474a5778..59c3d014ddd2f5fd17d63ede0474c0ebf50f1f19 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt
@@ -42,12 +42,11 @@ object QuasselSerializers {
     PeerPtrSerializer,
   ).associateBy(QuasselSerializer<*>::quasselType)
 
-  @PublishedApi
-  internal fun find(type: QuasselType) = serializers[type]
+  operator fun get(type: QuasselType) = serializers[type]
 
   @Suppress("UNCHECKED_CAST")
-  inline operator fun <reified T> get(type: QuasselType): QuasselSerializer<T> {
-    val serializer = find(type)
+  inline fun <reified T> find(type: QuasselType): QuasselSerializer<T> {
+    val serializer = get(type)
       ?: throw NoSerializerForTypeException.Quassel(type, T::class.java)
     if (serializer.javaType == T::class.java) {
       return serializer as QuasselSerializer<T>
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt
index 0d1348698d1650398a914bb6887bb716d540c82a..831feaf554856be7a6475d3e4c3094969cd2b3d8 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt
@@ -34,6 +34,7 @@ object ClientInitSerializer : HandshakeSerializer<ClientInit> {
   override val javaType: Class<out ClientInit> = ClientInit::class.java
 
   override fun serialize(data: ClientInit) = mapOf(
+    "MsgType" to qVariant(type, QtType.QString),
     "ClientVersion" to qVariant(data.clientVersion, QtType.QString),
     "ClientDate" to qVariant(data.buildDate, QtType.QString),
     "Features" to qVariant(data.clientFeatures.toBits(), QtType.UInt),
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt
index 8deb400fd4264eff1de2b28cb7919e256ca15d8a..19dd1b435c802fe0b266e58e0b6ed662d52741c2 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt
@@ -62,7 +62,7 @@ object QVariantSerializer : QtSerializer<QVariant_> {
 
   @Suppress("UNCHECKED_CAST")
   private fun deserialize(type: QtType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ {
-    val serializer = QtSerializers.find(type)
+    val serializer = QtSerializers[type]
       ?: throw NoSerializerForTypeException.Qt(type)
     val value = serializer.deserialize(buffer, featureSet)
     return QVariant.of(value, serializer as QtSerializer<Any?>)
@@ -70,7 +70,7 @@ object QVariantSerializer : QtSerializer<QVariant_> {
 
   @Suppress("UNCHECKED_CAST")
   private fun deserialize(type: QuasselType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ {
-    val serializer = QuasselSerializers.find(type)
+    val serializer = QuasselSerializers[type]
       ?: throw NoSerializerForTypeException.Quassel(type)
     val value = serializer.deserialize(buffer, featureSet)
     return QVariant.of(value, serializer as QuasselSerializer<Any?>)
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt
index 8747eeb4e2aef164a2ec50f5e5c24bf667aaef59..c4bf2986cf242df87588da9bc57741359a82dba2 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt
@@ -72,10 +72,10 @@ sealed class QVariant<T> constructor(
 }
 
 inline fun <reified T> qVariant(data: T, type: QtType): QVariant<T> =
-  QVariant.of(data, QtSerializers[type])
+  QVariant.of(data, QtSerializers.find(type))
 
 inline fun <reified T> qVariant(data: T, type: QuasselType): QVariant<T> =
-  QVariant.of(data, QuasselSerializers[type])
+  QVariant.of(data, QuasselSerializers.find(type))
 
 inline fun <reified T> QVariant_?.into(): T? =
   this?.withType<T>()?.value()