diff --git a/CHANGELOG.md b/CHANGELOG.md
index 06dfa5bf..ef953bb9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@
 ### Removed
 
 ### Fixed
+- Incorrect work of `MetaWithDefault::getValue`
 
 ### Security
 
diff --git a/build.gradle.kts b/build.gradle.kts
index 84c1bba7..755212d9 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -9,7 +9,7 @@ plugins {
 
 allprojects {
     group = "space.kscience"
-    version = "0.10.0"
+    version = "0.10.1-dev"
 }
 
 subprojects {
diff --git a/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/MutableMeta.kt b/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/MutableMeta.kt
index 274671bf..a11a5a53 100644
--- a/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/MutableMeta.kt
+++ b/dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta/MutableMeta.kt
@@ -438,7 +438,7 @@ public inline fun Meta.copy(modification: MutableMeta.() -> Unit = {}): Meta = M
 
 private class MutableMetaWithDefault(
     val source: MutableMeta, val default: MetaProvider, val rootName: Name,
-) : MutableMeta by source {
+) : MutableMeta {
     override val items: Map<NameToken, MutableMeta>
         get() {
             val sourceKeys: Collection<NameToken> = source[rootName]?.items?.keys ?: emptyList()
@@ -457,6 +457,17 @@ private class MutableMetaWithDefault(
 
     override fun get(name: Name): MutableMeta = MutableMetaWithDefault(source, default, rootName + name)
 
+    override fun set(name: Name, node: Meta?) {
+        source[name] = node
+    }
+
+    override fun setValue(name: Name, value: Value?) {
+        source.setValue(name, value)
+    }
+
+    override fun getOrCreate(name: Name): MutableMeta =
+        MutableMetaWithDefault(source, default, rootName + name)
+
     override fun toString(): String = Meta.toString(this)
     override fun equals(other: Any?): Boolean = Meta.equals(this, other as? Meta)
     override fun hashCode(): Int = Meta.hashCode(this)
diff --git a/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/MutableMetaTest.kt b/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/MutableMetaTest.kt
index da4474d8..c286486a 100644
--- a/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/MutableMetaTest.kt
+++ b/dataforge-meta/src/commonTest/kotlin/space/kscience/dataforge/meta/MutableMetaTest.kt
@@ -3,9 +3,9 @@ package space.kscience.dataforge.meta
 import kotlin.test.Test
 import kotlin.test.assertEquals
 
-class MutableMetaTest{
+class MutableMetaTest {
     @Test
-    fun remove(){
+    fun remove() {
         val meta = MutableMeta {
             "aNode" put {
                 "innerNode" put {
@@ -19,4 +19,26 @@ class MutableMetaTest{
         meta.remove("aNode.c")
         assertEquals(meta["aNode.c"], null)
     }
+
+    @Test
+    fun withDefault() {
+        val metaWithDefault = MutableMeta().withDefault(
+            Meta {
+                "a" put {
+                    value = 22.asValue()
+                    "b" put true
+                }
+            }
+        )
+
+        assertEquals(22, metaWithDefault["a"].int)
+        assertEquals(true, metaWithDefault.getValue("a.b")?.boolean)
+
+        metaWithDefault["a.b"] = "false"
+
+        assertEquals(false, metaWithDefault["a.b"]?.boolean)
+        assertEquals(false, metaWithDefault.getValue("a.b")?.boolean)
+        assertEquals(22, metaWithDefault.getValue("a")?.int)
+
+    }
 }
\ No newline at end of file