diff --git a/gradle.properties b/gradle.properties
index 6d4b912d89a9abfdafb8a8eb612285b5560da8b8..60d1ca56b2b8a1a80dae4334342a1ef105d361d2 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,5 @@
 kotlin.code.style=official
 kotlin.js.generate.executable.default=false
 systemProp.org.gradle.internal.http.connectionTimeout=180000
-systemProp.org.gradle.internal.http.socketTimeout=180000
\ No newline at end of file
+systemProp.org.gradle.internal.http.socketTimeout=180000
+org.gradle.jvmargs=-Xmx2G
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index ba23e5afb35085f062a17bde027d06acf78f4a15..c7ab9d85a84087b0f61351aa2aa36ed3e0b6d295 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,11 +1,11 @@
 [versions]
-serialization = "1.6.3"
-coroutines = "1.8.0"
+serialization = "1.7.0"
+coroutines = "1.9.0-RC"
 atomicfu = "0.24.0"
 nodeWrapper = "20.11.30-pre.732"
 completeKotlin = "1.1.0"
 silvaResources = "0.4.0"
-kotlin = "1.9.23"
+kotlin = "2.0.0"
 shadow = "7.1.2"
 
 [libraries]
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 3d49e0e4022c7f7fa396610a9b2e586678b7d9b8..71c2f58669e1604933fb83390065aa5f86da19ca 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 #Thu Jan 16 11:21:13 CET 2020
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStorePath=wrapper/dists
diff --git a/kmqtt-broker/src/commonMain/kotlin/socket/ServerSocket.kt b/kmqtt-broker/src/commonMain/kotlin/socket/ServerSocket.kt
index 3c6ef8a9bf13b91d6f7d4481fb02119d3eee3966..17e6849216b19dd0a88937e5b29027683ee49a55 100644
--- a/kmqtt-broker/src/commonMain/kotlin/socket/ServerSocket.kt
+++ b/kmqtt-broker/src/commonMain/kotlin/socket/ServerSocket.kt
@@ -1,6 +1,7 @@
 package socket
 
 import mqtt.broker.Broker
+import mqtt.broker.cluster.ClusterConnection
 
 internal expect open class ServerSocket(
     broker: Broker,
@@ -12,4 +13,6 @@ internal expect open class ServerSocket(
     fun select(timeout: Long)
 
     fun close()
+
+    override fun addClusterConnection(address: String): ClusterConnection?
 }
diff --git a/kmqtt-broker/src/jsMain/kotlin/socket/ServerSocket.kt b/kmqtt-broker/src/jsMain/kotlin/socket/ServerSocket.kt
index 58a3bab344d865d17ef9e2c8a3e3621fc96f1f1f..6784551cda5924064e90211c122164486d63ab1a 100644
--- a/kmqtt-broker/src/jsMain/kotlin/socket/ServerSocket.kt
+++ b/kmqtt-broker/src/jsMain/kotlin/socket/ServerSocket.kt
@@ -104,7 +104,7 @@ internal actual open class ServerSocket actual constructor(
         // Not doing anything as NodeJs is callback based
     }
 
-    final override fun addClusterConnection(address: String): ClusterConnection? {
+    actual override fun addClusterConnection(address: String): ClusterConnection? {
         TODO("Cluster in JS not yet implemented")
     }
 }
diff --git a/kmqtt-broker/src/jvmMain/kotlin/socket/ServerSocket.kt b/kmqtt-broker/src/jvmMain/kotlin/socket/ServerSocket.kt
index 5cf432a3e3562b9734600e6a3d8ca4c05dedb30a..dee547f43bd984e068fceaac061d05d186962c3d 100644
--- a/kmqtt-broker/src/jvmMain/kotlin/socket/ServerSocket.kt
+++ b/kmqtt-broker/src/jvmMain/kotlin/socket/ServerSocket.kt
@@ -146,7 +146,7 @@ internal actual open class ServerSocket actual constructor(
         }
     }
 
-    final override fun addClusterConnection(address: String): ClusterConnection? {
+    actual override fun addClusterConnection(address: String): ClusterConnection? {
         if (broker.cluster != null) {
             val channel = SocketChannel.open(InetSocketAddress(address, broker.cluster.tcpPort))
             channel.configureBlocking(false)
diff --git a/kmqtt-broker/src/linuxArm64Main/kotlin/socket.tls/TLSServerEngine.kt b/kmqtt-broker/src/linuxArm64Main/kotlin/socket.tls/TLSServerEngine.kt
index fcb3f75fcf78c8da98064905543feb205ad6189f..0dc5defc552d808703b9eaa8f50a9b45c378cc34 100644
--- a/kmqtt-broker/src/linuxArm64Main/kotlin/socket.tls/TLSServerEngine.kt
+++ b/kmqtt-broker/src/linuxArm64Main/kotlin/socket.tls/TLSServerEngine.kt
@@ -35,33 +35,33 @@ internal actual class TLSServerEngine actual constructor(serverContext: TLSServe
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         if (!freed) {
             SSL_free(context)
             freed = true
diff --git a/kmqtt-broker/src/linuxX64Main/kotlin/socket/tls/TLSServerEngine.kt b/kmqtt-broker/src/linuxX64Main/kotlin/socket/tls/TLSServerEngine.kt
index d43d68eb401429c02f55df1b7426cd043953ed07..3c08335d5f42b109067f08d1df5a867ada9a0b6e 100644
--- a/kmqtt-broker/src/linuxX64Main/kotlin/socket/tls/TLSServerEngine.kt
+++ b/kmqtt-broker/src/linuxX64Main/kotlin/socket/tls/TLSServerEngine.kt
@@ -36,33 +36,33 @@ internal actual class TLSServerEngine actual constructor(serverContext: TLSServe
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         if (!freed) {
             SSL_free(context)
             freed = true
diff --git a/kmqtt-broker/src/linuxX64Main/resources/Dockerfile b/kmqtt-broker/src/linuxX64Main/resources/Dockerfile
index 0db0dafedd01b654538fbe54dba9b5e530277b3e..5247f16c5b53694df11730d8395fd4190f1771f3 100644
--- a/kmqtt-broker/src/linuxX64Main/resources/Dockerfile
+++ b/kmqtt-broker/src/linuxX64Main/resources/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:18.04
+FROM ubuntu:22.04
 
 ####################################################
 ########          GCC   and tools        ###########
@@ -24,12 +24,12 @@ RUN set -x \
 ###############################################################################
 
 ### Some env variables
-ENV OPENSSL_VERSION="1.1.1t"
-ENV KOTLIN_VERSION2="1.8.10"
-ENV KOTLIN_VERSION="1.8.10"
+ENV OPENSSL_VERSION="1.1.1w"
+ENV KOTLIN_VERSION2="2.0.0"
+ENV KOTLIN_VERSION="2.0.0"
 
 RUN set -x \
- && wget --no-check-certificate -O /tmp/kotlin-native-linux-${KOTLIN_VERSION}.tar.gz "https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION2}/kotlin-native-linux-x86_64-${KOTLIN_VERSION}.tar.gz" \
+ && wget --no-check-certificate -O /tmp/kotlin-native-linux-${KOTLIN_VERSION}.tar.gz "https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION2}/kotlin-native-prebuilt-linux-x86_64-${KOTLIN_VERSION}.tar.gz" \
  && cd /tmp \
  && tar -xzvf kotlin-native-linux-${KOTLIN_VERSION}.tar.gz
 
@@ -65,7 +65,7 @@ RUN set -x \
 
 RUN set -x \
  && cd /tmp/linuxArm64/openssl-${OPENSSL_VERSION} \
- && ./Configure --release no-shared no-asm --cross-compile-prefix=aarch64-linux-gnu- linux-aarch64 \
+ && ./Configure --release no-shared no-asm --cross-compile-prefix=aarch64-linux-gnu- -mno-outline-atomics linux-aarch64 \
  && make \
  && ar -x libssl.a \
  && ar -x libcrypto.a \
@@ -77,16 +77,16 @@ RUN set -x \
  && cd /tmp \
  && mkdir klib_linux_x64 \
  && cd /tmp/klib_linux_x64 \
- && ../kotlin-native-linux-x86_64-${KOTLIN_VERSION}/bin/cinterop -def ../openssl.def -target "linux_x64" -o openssl
+ && ../kotlin-native-prebuilt-linux-x86_64-${KOTLIN_VERSION}/bin/cinterop -def ../openssl.def -target "linux_x64" -o openssl
 
 RUN set -x \
  && cd /tmp \
  && mkdir klib_mingw_x64 \
  && cd /tmp/klib_mingw_x64 \
- && ../kotlin-native-linux-x86_64-${KOTLIN_VERSION}/bin/cinterop -def ../openssl.def -target "mingw_x64" -o openssl
+ && ../kotlin-native-prebuilt-linux-x86_64-${KOTLIN_VERSION}/bin/cinterop -def ../openssl.def -target "mingw_x64" -o openssl
 
 RUN set -x \
  && cd /tmp \
  && mkdir klib_linux_arm64 \
  && cd /tmp/klib_linux_arm64 \
- && ../kotlin-native-linux-x86_64-${KOTLIN_VERSION}/bin/cinterop -def ../openssl.def -target "linux_arm64" -o openssl
+ && ../kotlin-native-prebuilt-linux-x86_64-${KOTLIN_VERSION}/bin/cinterop -def ../openssl.def -target "linux_arm64" -o openssl
diff --git a/kmqtt-broker/src/linuxX64Main/resources/openssl.def b/kmqtt-broker/src/linuxX64Main/resources/openssl.def
index c4c1a056e2fc20956ad3cb43f5833e2112f1caf4..a48ce3af99aa3da35861df7423155a14c2cc444b 100644
--- a/kmqtt-broker/src/linuxX64Main/resources/openssl.def
+++ b/kmqtt-broker/src/linuxX64Main/resources/openssl.def
@@ -3,9 +3,9 @@ headerFilter = openssl/*
 package = openssl
 # TODO should be libssl.a libcrypto.a but it doesn't compile in the correct order, check resources/Dockerfile for the merge commands
 staticLibraries = libopenssl.a
-compilerOpts.linux_x64 = -I/tmp/linuxX64/openssl-1.1.1t/include
-libraryPaths.linux_x64 = /tmp/linuxX64/openssl-1.1.1t
-compilerOpts.mingw_x64 = -I/tmp/mingwX64/openssl-1.1.1t/include
-libraryPaths.mingw_x64 = /tmp/mingwX64/openssl-1.1.1t
-compilerOpts.linux_arm64 = -I/tmp/linuxArm64/openssl-1.1.1t/include
-libraryPaths.linux_arm64 = /tmp/linuxArm64/openssl-1.1.1t
+compilerOpts.linux_x64 = -I/tmp/linuxX64/openssl-1.1.1w/include
+libraryPaths.linux_x64 = /tmp/linuxX64/openssl-1.1.1w
+compilerOpts.mingw_x64 = -I/tmp/mingwX64/openssl-1.1.1w/include
+libraryPaths.mingw_x64 = /tmp/mingwX64/openssl-1.1.1w
+compilerOpts.linux_arm64 = -I/tmp/linuxArm64/openssl-1.1.1w/include
+libraryPaths.linux_arm64 = /tmp/linuxArm64/openssl-1.1.1w
diff --git a/kmqtt-broker/src/mingwX64Main/kotlin/socket/tls/TLSServerEngine.kt b/kmqtt-broker/src/mingwX64Main/kotlin/socket/tls/TLSServerEngine.kt
index d43d68eb401429c02f55df1b7426cd043953ed07..3c08335d5f42b109067f08d1df5a867ada9a0b6e 100644
--- a/kmqtt-broker/src/mingwX64Main/kotlin/socket/tls/TLSServerEngine.kt
+++ b/kmqtt-broker/src/mingwX64Main/kotlin/socket/tls/TLSServerEngine.kt
@@ -36,33 +36,33 @@ internal actual class TLSServerEngine actual constructor(serverContext: TLSServe
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         if (!freed) {
             SSL_free(context)
             freed = true
diff --git a/kmqtt-broker/src/posixMain/kotlin/socket/ServerSocket.kt b/kmqtt-broker/src/posixMain/kotlin/socket/ServerSocket.kt
index 1c2edaea333f0ab5bf8f5fd491e53dff90de4a04..f73b772da0ec39016849655a88d018e58ca225c9 100644
--- a/kmqtt-broker/src/posixMain/kotlin/socket/ServerSocket.kt
+++ b/kmqtt-broker/src/posixMain/kotlin/socket/ServerSocket.kt
@@ -286,7 +286,7 @@ internal actual open class ServerSocket actual constructor(
 
     }
 
-    override fun addClusterConnection(address: String): ClusterConnection? {
+    actual override fun addClusterConnection(address: String): ClusterConnection? {
         if (broker.cluster != null) {
             val cluster = broker.cluster
             memScoped {
diff --git a/kmqtt-broker/src/posixMain/kotlin/socket/tls/TLSServerEngine.kt b/kmqtt-broker/src/posixMain/kotlin/socket/tls/TLSServerEngine.kt
index 330744e3a880ebe81ef625955174c7d8a49466fa..dee0771bd3fcaadd7ff67fa2d97a3894a1373ea4 100644
--- a/kmqtt-broker/src/posixMain/kotlin/socket/tls/TLSServerEngine.kt
+++ b/kmqtt-broker/src/posixMain/kotlin/socket/tls/TLSServerEngine.kt
@@ -1,3 +1,22 @@
 package socket.tls
 
-internal expect class TLSServerEngine(serverContext: TLSServerContext) : TLSEngine
+import kotlinx.cinterop.ByteVar
+import kotlinx.cinterop.CPointer
+
+internal expect class TLSServerEngine(serverContext: TLSServerContext) : TLSEngine {
+
+    override val isInitFinished: Boolean
+    override val bioShouldRetry: Boolean
+
+    override fun write(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun read(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun getError(result: Int): Int
+
+    override fun close()
+}
diff --git a/kmqtt-client/src/iosArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/iosArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/iosArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/iosArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/iosSimulatorArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/iosSimulatorArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/iosSimulatorArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/iosSimulatorArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/iosX64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/iosX64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/iosX64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/iosX64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/linuxArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/linuxArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/linuxArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/linuxArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/linuxX64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/linuxX64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/linuxX64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/linuxX64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/macosArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/macosArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/macosArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/macosArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/macosX64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/macosX64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/macosX64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/macosX64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/mingwX64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/mingwX64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/mingwX64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/mingwX64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/posixMain/kotlin/TLSClientEngine.kt b/kmqtt-client/src/posixMain/kotlin/TLSClientEngine.kt
index 12ee86808d3b312ab7ffaa3a2de1e4835645462d..f6fa7a9e2b37a4d252b43f2c838e1b69e79513de 100644
--- a/kmqtt-client/src/posixMain/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/posixMain/kotlin/TLSClientEngine.kt
@@ -1,4 +1,22 @@
+import kotlinx.cinterop.ByteVar
+import kotlinx.cinterop.CPointer
 import socket.tls.TLSClientSettings
 import socket.tls.TLSEngine
 
-internal expect class TLSClientEngine(tlsSettings: TLSClientSettings) : TLSEngine
\ No newline at end of file
+internal expect class TLSClientEngine(tlsSettings: TLSClientSettings) : TLSEngine {
+
+    override val isInitFinished: Boolean
+    override val bioShouldRetry: Boolean
+
+    override fun write(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun read(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int
+
+    override fun getError(result: Int): Int
+
+    override fun close()
+}
\ No newline at end of file
diff --git a/kmqtt-client/src/tvosArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/tvosArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/tvosArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/tvosArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/tvosSimulatorArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/tvosSimulatorArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/tvosSimulatorArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/tvosSimulatorArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/tvosX64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/tvosX64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/tvosX64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/tvosX64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/watchosArm32Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/watchosArm32Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/watchosArm32Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/watchosArm32Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/watchosArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/watchosArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/watchosArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/watchosArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/watchosSimulatorArm64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/watchosSimulatorArm64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/watchosSimulatorArm64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/watchosSimulatorArm64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-client/src/watchosX64Main/kotlin/TLSClientEngine.kt b/kmqtt-client/src/watchosX64Main/kotlin/TLSClientEngine.kt
index 5e5f441593d326c50f14d86e8e6160609da1b506..d5e331b30bb2dd0e5150a51348b43be5a8f3b858 100644
--- a/kmqtt-client/src/watchosX64Main/kotlin/TLSClientEngine.kt
+++ b/kmqtt-client/src/watchosX64Main/kotlin/TLSClientEngine.kt
@@ -141,33 +141,33 @@ internal actual class TLSClientEngine actual constructor(tlsSettings: TLSClientS
         this.writeBio = writeBio
     }
 
-    override val isInitFinished: Boolean
+    actual override val isInitFinished: Boolean
         get() = SSL_is_init_finished(context) != 0
 
-    override val bioShouldRetry: Boolean
+    actual override val bioShouldRetry: Boolean
         get() = BIO_test_flags(writeBio, BIO_FLAGS_SHOULD_RETRY) == 0
 
-    override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun write(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_write(context, buffer, length)
     }
 
-    override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun read(buffer: CPointer<ByteVar>, length: Int): Int {
         return SSL_read(context, buffer, length)
     }
 
-    override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioRead(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_read(writeBio, buffer, length)
     }
 
-    override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
+    actual override fun bioWrite(buffer: CPointer<ByteVar>, length: Int): Int {
         return BIO_write(readBio, buffer, length)
     }
 
-    override fun getError(result: Int): Int {
+    actual override fun getError(result: Int): Int {
         return SSL_get_error(context, result)
     }
 
-    override fun close() {
+    actual override fun close() {
         SSL_free(context)
     }
 }
diff --git a/kmqtt-common/src/jvmMain/kotlin/socket/tls/TLSSocket.kt b/kmqtt-common/src/jvmMain/kotlin/socket/tls/TLSSocket.kt
index f280fcb2fa87eade6203a4d4cf6793e9fb385c72..62ec6a0bf7962096179805609380d3ee01556f1b 100644
--- a/kmqtt-common/src/jvmMain/kotlin/socket/tls/TLSSocket.kt
+++ b/kmqtt-common/src/jvmMain/kotlin/socket/tls/TLSSocket.kt
@@ -16,12 +16,12 @@ import javax.net.ssl.SSLException
 public actual open class TLSSocket(
     channel: SocketChannel,
     key: SelectionKey?,
-    private var sendBuffer: ByteBuffer,
-    private var receiveBuffer: ByteBuffer,
+    private var sendBuffer1: ByteBuffer,
+    private var receiveBuffer1: ByteBuffer,
     private var sendAppBuffer: ByteBuffer,
     private var receiveAppBuffer: ByteBuffer,
     protected val engine: SSLEngine
-) : Socket(channel, key, sendBuffer, receiveBuffer) {
+) : Socket(channel, key, sendBuffer1, receiveBuffer1) {
 
     init {
         engine.beginHandshake()
@@ -29,11 +29,11 @@ public actual open class TLSSocket(
     }
 
     private fun handleReceiveBufferUnderflow() {
-        if (engine.session.packetBufferSize > receiveBuffer.capacity()) {
+        if (engine.session.packetBufferSize > receiveBuffer1.capacity()) {
             val newBuffer = ByteBuffer.allocate(engine.session.packetBufferSize)
-            receiveBuffer.flip()
-            newBuffer.put(receiveBuffer)
-            receiveBuffer = newBuffer
+            receiveBuffer1.flip()
+            newBuffer.put(receiveBuffer1)
+            receiveBuffer1 = newBuffer
         }
     }
 
@@ -46,10 +46,10 @@ public actual open class TLSSocket(
     }
 
     private fun handleSendBufferOverflow() {
-        sendBuffer = if (engine.session.packetBufferSize > sendBuffer.capacity()) {
+        sendBuffer1 = if (engine.session.packetBufferSize > sendBuffer1.capacity()) {
             ByteBuffer.allocate(engine.session.applicationBufferSize)
         } else {
-            ByteBuffer.allocate(sendBuffer.capacity() * 2)
+            ByteBuffer.allocate(sendBuffer1.capacity() * 2)
         }
     }
 
@@ -65,7 +65,7 @@ public actual open class TLSSocket(
         sendAppBuffer.flip()
         try {
             do {
-                val result = engine.wrap(sendAppBuffer, sendBuffer)
+                val result = engine.wrap(sendAppBuffer, sendBuffer1)
                 @Suppress("WHEN_ENUM_CAN_BE_NULL_IN_JAVA")
                 when (result.status) {
                     SSLEngineResult.Status.BUFFER_UNDERFLOW -> {
@@ -132,9 +132,9 @@ public actual open class TLSSocket(
     private fun read0(): Boolean {
         try {
             do {
-                receiveBuffer.flip()
-                val result = engine.unwrap(receiveBuffer, receiveAppBuffer)
-                receiveBuffer.compact()
+                receiveBuffer1.flip()
+                val result = engine.unwrap(receiveBuffer1, receiveAppBuffer)
+                receiveBuffer1.compact()
                 @Suppress("WHEN_ENUM_CAN_BE_NULL_IN_JAVA")
                 when (result.status) {
                     SSLEngineResult.Status.OK -> {}
diff --git a/kmqtt-common/src/nativeInterop/openssl-linux-arm64.klib b/kmqtt-common/src/nativeInterop/openssl-linux-arm64.klib
index d432bf95c7219ef35a16f137dccf5ff0146b7455..3ee2493551a93a445134e5d1302fe3c759a21318 100644
Binary files a/kmqtt-common/src/nativeInterop/openssl-linux-arm64.klib and b/kmqtt-common/src/nativeInterop/openssl-linux-arm64.klib differ
diff --git a/kmqtt-common/src/nativeInterop/openssl-linux-x64.klib b/kmqtt-common/src/nativeInterop/openssl-linux-x64.klib
index 5d130ba8f6377f9ecc61d7c8965abf8fc4e11ee5..8379de6943ce289b46f65bcf7375bd163ae56ad6 100644
Binary files a/kmqtt-common/src/nativeInterop/openssl-linux-x64.klib and b/kmqtt-common/src/nativeInterop/openssl-linux-x64.klib differ
diff --git a/kmqtt-common/src/nativeInterop/openssl-mingw-x64.klib b/kmqtt-common/src/nativeInterop/openssl-mingw-x64.klib
index aaffe95ec9a95ca3bfdc6cf1c2b7fe386ca27a21..0454a9f41da84524eb75de6e0ed6f96dea768a0b 100644
Binary files a/kmqtt-common/src/nativeInterop/openssl-mingw-x64.klib and b/kmqtt-common/src/nativeInterop/openssl-mingw-x64.klib differ