diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt
index 61e616291..0f068aca1 100644
--- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt
+++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt
@@ -86,18 +86,18 @@ internal class MemberImpl(
         } else if (myPermission == MemberPermission.MEMBER) {
             return false
         }
-        try {
+        return try {
             bot.network.run {
-                val response = TroopManagement.Mute(
+                TroopManagement.Mute(
                     client = bot.client,
                     groupCode = group.id,
                     memberUin = this@MemberImpl.id,
                     timeInSecond = durationSeconds
                 ).sendAndExpect<TroopManagement.Mute.Response>()
             }
-            return true
+            true
         } catch (e: Exception) {
-            return false
+            false
         }
     }
 
diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
index f44f87ee6..3d90c4630 100644
--- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
+++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
@@ -360,7 +360,7 @@ internal object KnownPacketFactories {
 }
 
 @UseExperimental(ExperimentalContracts::class)
-internal inline fun <I : IoBuffer, R> I.withUse(block: I.() -> R): R {
+internal inline fun <R> IoBuffer.withUse(block: IoBuffer.() -> R): R {
     contract {
         callsInPlace(block, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
     }
@@ -372,7 +372,7 @@ internal inline fun <I : IoBuffer, R> I.withUse(block: I.() -> R): R {
 }
 
 @UseExperimental(ExperimentalContracts::class)
-internal inline fun <I : ByteReadPacket, R> I.withUse(block: I.() -> R): R {
+internal inline fun <R> ByteReadPacket.withUse(block: ByteReadPacket.() -> R): R {
     contract {
         callsInPlace(block, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
     }
diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/Tlv.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/Tlv.kt
index d24d6ac56..b63d1365f 100644
--- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/Tlv.kt
+++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/Tlv.kt
@@ -146,8 +146,7 @@ fun BytePacketBuilder.t116(
 fun BytePacketBuilder.t100(
     appId: Long = 16,
     subAppId: Long = 537062845,
-    appClientVersion: Int,
-    sigMap: Int
+    appClientVersion: Int
 ) {
     writeShort(0x100)
     writeShortLVPacket {
@@ -156,7 +155,7 @@ fun BytePacketBuilder.t100(
         writeInt(appId.toInt())
         writeInt(subAppId.toInt())
         writeInt(appClientVersion)
-        writeInt(34869472) // 34869472?
+        writeInt(34869472) // sigMap, 34869472?
     } shouldEqualsTo 22
 }
 
diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/LoginPacket.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/LoginPacket.kt
index f00915a24..f244e509a 100644
--- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/LoginPacket.kt
+++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/LoginPacket.kt
@@ -72,8 +72,7 @@ internal object LoginPacket : OutgoingPacketFactory<LoginPacket.LoginPacketRespo
         @UseExperimental(MiraiInternalAPI::class)
         operator fun invoke(
             client: QQAndroidClient,
-            t402: ByteArray,
-            t403: ByteArray
+            t402: ByteArray
         ): OutgoingPacket = buildLoginOutgoingPacket(client, bodyType = 2) { sequenceId ->
             writeSsoPacket(client, subAppId, commandName, sequenceId = sequenceId) {
                 writeOicqRequestPacket(client, EncryptMethodECDH7(client.ecdh), 0x0810) {
@@ -96,10 +95,7 @@ internal object LoginPacket : OutgoingPacketFactory<LoginPacket.LoginPacketRespo
         private const val subAppId = 537062845L
         @UseExperimental(MiraiInternalAPI::class)
         operator fun invoke(
-            client: QQAndroidClient,
-            t174: ByteArray,
-            t402: ByteArray,
-            phoneNumber: String
+            client: QQAndroidClient
         ): OutgoingPacket = buildLoginOutgoingPacket(client, bodyType = 2) { sequenceId ->
             writeSsoPacket(client, subAppId, commandName, sequenceId = sequenceId, unknownHex = "01 00 00 00 00 00 00 00 00 00 01 00") {
                 writeOicqRequestPacket(client, EncryptMethodECDH7(client.ecdh), 0x0810) {
@@ -163,7 +159,7 @@ internal object LoginPacket : OutgoingPacketFactory<LoginPacket.LoginPacketRespo
                     if (ConfigManager.get_loginWithPicSt()) appIdList = longArrayOf(1600000226L)
                     */
                     t116(client.miscBitMap, client.subSigMap)
-                    t100(appId, subAppId, client.appClientVersion, client.mainSigMap or 0xC0)
+                    t100(appId, subAppId, client.appClientVersion)
                     t107(0)
 
                     // t108(byteArrayOf())
@@ -310,7 +306,7 @@ internal object LoginPacket : OutgoingPacketFactory<LoginPacket.LoginPacketRespo
     @UseExperimental(MiraiDebugAPI::class)
     override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): LoginPacketResponse {
 
-        val subCommand = readUShort().toInt()
+        discardExact(2) // subCommand
         // println("subCommand=$subCommand")
         val type = readUByte()
         // println("type=$type")
@@ -703,7 +699,7 @@ internal object LoginPacket : OutgoingPacketFactory<LoginPacket.LoginPacketRespo
     private fun QQAndroidClient.analysisTlv149(t149: ByteArray): LoginPacketResponse.Error {
 
         return t149.read {
-            val type: Short = readShort()
+            discardExact(2) //type
             val title: String = readUShortLVString()
             val content: String = readUShortLVString()
             val otherInfo: String = readUShortLVString()
diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/TransEmpPacket.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/TransEmpPacket.kt
deleted file mode 100644
index f66c51d44..000000000
--- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/TransEmpPacket.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package net.mamoe.mirai.qqandroid.network.protocol.packet.login
-
-
-import kotlinx.io.core.ByteReadPacket
-import net.mamoe.mirai.data.Packet
-import net.mamoe.mirai.qqandroid.QQAndroidBot
-import net.mamoe.mirai.qqandroid.network.QQAndroidClient
-import net.mamoe.mirai.qqandroid.network.protocol.packet.*
-
-internal object TransEmpPacket : OutgoingPacketFactory<TransEmpPacket.Response>("wtlogin.trans_emp") {
-
-    private const val appId = 16L
-    private const val subAppId = 537062845L
-
-    @Suppress("FunctionName")
-    fun SubCommand1(
-        client: QQAndroidClient
-    ): OutgoingPacket = buildLoginOutgoingPacket(client, bodyType = 2) {
-        writeOicqRequestPacket(client, EncryptMethodECDH135(client.ecdh), TODO()) {
-
-            // oicq.wlogin_sdk.request.trans_emp_1#packTransEmpBody
-        }
-    }
-
-    object Response : Packet
-
-
-    override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
-        TODO("not implemented")
-    }
-}
\ No newline at end of file
diff --git a/mirai-core-qqandroid/src/jvmTest/kotlin/androidPacketTests/clientToServer.kt b/mirai-core-qqandroid/src/jvmTest/kotlin/androidPacketTests/clientToServer.kt
index f6616b841..58fd3faa4 100644
--- a/mirai-core-qqandroid/src/jvmTest/kotlin/androidPacketTests/clientToServer.kt
+++ b/mirai-core-qqandroid/src/jvmTest/kotlin/androidPacketTests/clientToServer.kt
@@ -175,7 +175,7 @@ fun ByteReadPacket.analysisOneFullPacket(): ByteReadPacket = debugIfFail("Failed
                         readShort().toInt().takeIf { it != 8001 }?.let {
                             println("这个包不是 oicqRequest")
                             return@debugIfFail this
-                            println("  got new protocolVersion=$it")
+                            //println("  got new protocolVersion=$it")
                         }
                         val commandId = readUShort().toInt()
                         println("  commandId=0x${commandId.toShort().toUHexString()}")
diff --git a/mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/Main.kt b/mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/Main.kt
index 57bd60613..ccdefcd39 100644
--- a/mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/Main.kt
+++ b/mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/Main.kt
@@ -76,7 +76,7 @@ suspend fun main() {
         startsWith("profile", removePrefix = true) {
             val account = it.trim()
             if (account.isNotEmpty()) {
-                account.toLong().qq()
+                bot.getFriend(account.toLong())
             } else {
                 sender
             }.queryProfile().toString().reply()