diff --git a/CHANGELOG.md b/CHANGELOG.md
index c91b1e81..207b6271 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@
 
 ### Fixed
 - Incorrect work of `MetaWithDefault::getValue`
+- Incorrect work of scheme delegate
 
 ### Security
 
diff --git a/build.gradle.kts b/build.gradle.kts
index 755212d9..42cde112 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -9,7 +9,7 @@ plugins {
 
 allprojects {
     group = "space.kscience"
-    version = "0.10.1-dev"
+    version = "0.10.1-dev-1"
 }
 
 subprojects {
diff --git a/dataforge-io/build.gradle.kts b/dataforge-io/build.gradle.kts
index 52e47bb3..7cc8db2e 100644
--- a/dataforge-io/build.gradle.kts
+++ b/dataforge-io/build.gradle.kts
@@ -4,8 +4,6 @@ plugins {
 
 description = "IO module"
 
-val ioVersion = "0.6.0"
-
 kscience {
     jvm()
     js()
@@ -17,8 +15,8 @@ kscience {
     }
     dependencies {
         api(projects.dataforgeContext)
-        api("org.jetbrains.kotlinx:kotlinx-io-core:$ioVersion")
-        api("org.jetbrains.kotlinx:kotlinx-io-bytestring:$ioVersion")
+        api(spclibs.kotlinx.io.core)
+        api(spclibs.kotlinx.io.bytestring)
     }
 }
 
diff --git a/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt b/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt
index 12eb4c68..1a5d2b0d 100644
--- a/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt
+++ b/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/Scheme.kt
@@ -219,15 +219,15 @@ public fun <T : Scheme> Configurable.updateWith(
 
 
 /**
- * A delegate that uses a [MetaReader] to wrap a child of this provider
+ * A delegate that uses a [SchemeSpec] to wrap a child of this provider
  */
-public fun <T : Scheme> MutableMetaProvider.scheme(
+public fun <T : Scheme> MutableMeta.scheme(
     spec: SchemeSpec<T>,
     key: Name? = null,
 ): ReadWriteProperty<Any?, T> = object : ReadWriteProperty<Any?, T> {
     override fun getValue(thisRef: Any?, property: KProperty<*>): T {
         val name = key ?: property.name.asName()
-        val node = get(name) ?: MutableMeta().also { set(name, it) }
+        val node = getOrCreate(name)
         return spec.write(node)
     }
 
@@ -243,7 +243,7 @@ public fun <T : Scheme> Scheme.scheme(
 ): ReadWriteProperty<Any?, T> = meta.scheme(spec, key)
 
 /**
- * A delegate that uses a [MetaReader] to wrap a child of this provider.
+ * A delegate that uses a [SchemeSpec] to wrap a child of this provider.
  * Returns null if meta with given name does not exist.
  */
 public fun <T : Scheme> MutableMeta.schemeOrNull(
diff --git a/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt b/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt
index dc9b9d64..442fe188 100644
--- a/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt
+++ b/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/SpecificationTest.kt
@@ -26,18 +26,17 @@ internal class TestScheme : Scheme() {
     companion object : SchemeSpec<TestScheme>(::TestScheme)
 }
 
-private class SchemeWithInit: Scheme(){
+private class SchemeWithInit : Scheme() {
     init {
         set("initial", "initialValue")
     }
 
     var initial by string()
 
-    companion object: SchemeSpec<SchemeWithInit>(::SchemeWithInit)
+    companion object : SchemeSpec<SchemeWithInit>(::SchemeWithInit)
 }
 
 
-
 class SpecificationTest {
 
 //    @Test
@@ -126,11 +125,11 @@ class SpecificationTest {
     }
 
     @Test
-    fun testListSubscription(){
+    fun testListSubscription() {
         val scheme = TestScheme.empty()
         var value: Value? = null
-        scheme.v = ListValue(0.0,0.0,0.0)
-        scheme.useProperty(TestScheme::v){
+        scheme.v = ListValue(0.0, 0.0, 0.0)
+        scheme.useProperty(TestScheme::v) {
             value = it
         }
         scheme.v = ListValue(1.0, 2.0, 3.0)
@@ -138,17 +137,17 @@ class SpecificationTest {
     }
 
     @Test
-    fun testSubScheme(){
+    fun testSubScheme() {
         val scheme = TestScheme.empty()
 
         scheme.sub.subValue = "aaa"
 
-        assertEquals("aaa",scheme.sub.subValue)
+        assertEquals("aaa", scheme.sub.subValue)
     }
 
 
     @Test
-    fun testSchemeWithInit(){
+    fun testSchemeWithInit() {
         val scheme = SchemeWithInit()
         assertEquals("initialValue", scheme.initial)
         scheme.initial = "none"