diff --git a/build.gradle.kts b/build.gradle.kts
index 80a1d35495c7f69b78a8418f3bbdcf8d7c729269..ee9d23751111d056d27b7f033411c4ea8c055c47 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -15,8 +15,10 @@
 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
 plugins {
-    kotlin("multiplatform") version "1.3.72"
+    kotlin("multiplatform") version "1.4.10"
 }
 
 repositories {
@@ -34,26 +36,59 @@ kotlin {
     }
 
     sourceSets {
+        
+        all {
+            languageSettings.useExperimentalAnnotation("kotlin.RequiresOptIn")
+        }
+
 
-        val commonMain by getting {
+        commonMain {
             dependencies {
-                implementation(kotlin("stdlib"))
                 implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
             }
         }
+        
+        commonTest {
+            dependencies {
+                implementation("io.ktor:ktor-client-core:1.4.1")
+                implementation("io.kotest:kotest-assertions-core:4.3.0")
+                implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
+            }
+        }
+
 
         val jvmMain by getting {
             dependencies {
-                implementation(kotlin("stdlib-jdk8"))
+                implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
+            }
+        }
+
+        val jvmTest by getting {
+            dependencies {
+                implementation("io.ktor:ktor-client-cio-jvm:1.4.1")
+                implementation("io.kotest:kotest-runner-junit5-jvm:4.3.0")
                 implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
             }
         }
 
         val nodeJsMain by getting {
             dependencies {
-                implementation(kotlin("stdlib-js"))
+                implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
+            }
+        }
+
+        val nodeJsTest by getting {
+            dependencies {
+                implementation("io.ktor:ktor-client-js:1.4.1")
+                implementation("io.kotest:kotest-core-js:4.2.0.RC2")
                 implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
             }
         }
     }
 }
+
+tasks.withType<Test> { useJUnitPlatform() }
+
+tasks.withType<KotlinCompile> {
+    kotlinOptions.jvmTarget = "1.8"
+}
diff --git a/libs/c-crdtlib-jvm.jar b/libs/c-crdtlib-jvm.jar
index a3f0bd99ee1a1b3de27679e38394472da65f0802..55df68978e121d4d8423869503d34c97293e6efc 100644
Binary files a/libs/c-crdtlib-jvm.jar and b/libs/c-crdtlib-jvm.jar differ
diff --git a/libs/c-crdtlib-metadata.jar b/libs/c-crdtlib-metadata.jar
index 10814ec686c51f93da06bfd5d070da59f0be75d2..ec293581446a5397a1ee57eb2ce11a004448f5a5 100644
Binary files a/libs/c-crdtlib-metadata.jar and b/libs/c-crdtlib-metadata.jar differ
diff --git a/libs/c-crdtlib-nodejs.jar b/libs/c-crdtlib-nodejs.jar
index c0171c7ad27b92ae205cca0eeebd7f045cd0e182..b16af6d60c45d871cfff94e159b34f36bfd2813b 100644
Binary files a/libs/c-crdtlib-nodejs.jar and b/libs/c-crdtlib-nodejs.jar differ