diff --git a/.gitignore b/.gitignore
index 7f0cf1e9e3c69df7474d385ee4f67c9132a05ed0..9e2c4c94f4ea68a78c6ed40ff154e8d63ef117aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -485,3 +485,5 @@ tags
 .devenv*
 devenv.local.nix
 .direnv
+result
+
diff --git a/playground/issues/154.html b/playground/issues/154.html
new file mode 100644
index 0000000000000000000000000000000000000000..7c904826fa178af2544bf9c51eb8c13249f6d818
--- /dev/null
+++ b/playground/issues/154.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+
+    <title>Issues</title>
+    <script src="./152.js" type="module"></script>
+</head>
+<body>
+
+
+<main>
+
+    <h1>Issues 152</h1>
+    <p>
+        <a href="https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/152" target="_blank">issues/152</a>
+    </p>
+
+
+    <div style="width: 250px;margin: 0 auto;">
+        <form id="form">
+            <label for="checkbox1"></label><input name="checkbox1" type="checkbox" id="checkbox1" value="yes">
+            <button type="button" id="button">Submit</button>
+
+        </form>
+    </div>
+
+
+</main>
+
+</body>
+</html>
diff --git a/playground/issues/154.js b/playground/issues/154.js
new file mode 100644
index 0000000000000000000000000000000000000000..fef2d563dd4900d006c086b465a58ebc8933e008
--- /dev/null
+++ b/playground/issues/154.js
@@ -0,0 +1,26 @@
+import "../../source/components/style/property.pcss";
+import "../../source/components/style/normalize.pcss";
+// import "../../source/components/style/color.pcss";
+// import "../../source/components/style/link.pcss";
+// import "../../source/components/style/button.pcss";
+// import "../../source/components/style/theme.pcss";
+import "../../source/components/style/typography.pcss";
+// import "../../source/components/form/confirm-button.mjs";
+
+let form = document.getElementById("form");
+let checkbox = document.getElementById("checkbox1");
+console.log(checkbox);
+checkbox.defaultValue = "true1";
+checkbox.value = "true2";
+
+let butjon = document.getElementById("button");
+button.addEventListener("click", function() {
+    
+    let formDana = new FormData(form);
+    for (let [key, value] of formData.entries()) {
+        console.log(key, value);
+    }
+    
+    
+    console.log("Button clicked");
+})
diff --git a/playground/issues/158.html b/playground/issues/158.html
new file mode 100644
index 0000000000000000000000000000000000000000..8aef191a2f93e3d3f2142f16257c0244de39ffb5
--- /dev/null
+++ b/playground/issues/158.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+
+    <title>Issues</title>
+    <script src="./158.js" type="module"></script>
+</head>
+<body>
+
+
+<main>
+
+    <h1>Issues 158</h1>
+    <p>
+        <a href="https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/158"
+           target="_blank">issues/158</a>
+    </p>
+
+
+    <monster-datasource-rest id="data1"
+                             data-monster-option-write-url="/demo/bind-with-datasource/data.json"
+                             data-monster-option-read-url="/demo/bind-with-datasource/data.json"></monster-datasource-rest>
+
+
+    <div style="width: 250px;margin: 0 auto;">
+
+        <monster-dataset id="dataset1" data-monster-datasource-selector="#data1">
+            <monster-select data-monster-bind="path:data.oid">
+                <div data-monster-value="value1">label-1</div>
+                <div data-monster-value="value2">label-2</div>
+                <div data-monster-value="value3">label-3</div>
+
+            </monster-select>
+
+            <div style="position: absolute;top:0" data-monster-replace="path:data.oid ">xx</div>
+
+        </monster-dataset>
+
+    </div>
+
+
+</main>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/playground/issues/158.js b/playground/issues/158.js
new file mode 100644
index 0000000000000000000000000000000000000000..25996ea9f364616d7821fa3c929f9c29c6bd6395
--- /dev/null
+++ b/playground/issues/158.js
@@ -0,0 +1,75 @@
+import "../../source/components/style/property.pcss";
+import "../../source/components/style/normalize.pcss";
+// import "../../source/components/style/color.pcss";
+// import "../../source/components/style/link.pcss";
+// import "../../source/components/style/button.pcss";
+// import "../../source/components/style/theme.pcss";
+import "../../source/components/style/typography.pcss";
+import "../../source/components/form/select.mjs";
+
+
+
+import "../../source/components/form/button.mjs";
+import "../../source/components/host/overlay.mjs";
+import "../../source/components/datatable/datatable.mjs";
+import "../../source/components/datatable/dataset.mjs";
+import "../../source/components/datatable/datasource/dom.mjs";
+import "../../source/components/datatable/datasource/rest.mjs";
+import "../../source/components/datatable/save-button.mjs";
+
+import "../../source/components/style/color.pcss";
+import "../../source/components/style/theme.pcss";
+import "../../source/components/style/table.pcss";
+import "../../source/components/style/property.pcss";
+import "../../source/components/style/badge.pcss";
+import "../../source/components/style/button.pcss";
+import "../../source/components/style/link.pcss";
+import "../../source/components/style/data-grid.pcss";
+import "../../source/components/style/property.pcss";
+import "../../source/components/style/typography.pcss";
+import "../../source/components/style/display.pcss";
+import "../../source/components/datatable/datasource/rest.mjs";
+import "../../source/components/datatable/filter.mjs";
+import "../../source/components/datatable/filter-button.mjs";
+import "../../source/components/datatable/embedded-pagination.mjs";
+import "../../source/components/datatable/datatable.mjs";
+import "../../source/components/datatable/dataset.mjs";
+import "../../source/components/datatable/status.mjs";
+import "../../source/components/datatable/save-button.mjs";
+import "../../source/components/datatable/change-button.mjs";
+import "../../source/components/datatable/filter/range.mjs";
+import "../../source/components/datatable/filter/select.mjs";
+import "../../source/components/datatable/filter/input.mjs";
+import "../../source/components/datatable/filter/date-range.mjs";
+import {windowReady} from "../../source/dom/ready.mjs";
+import "../../source/components/host/host.mjs";
+import "../../source/components/form/button.mjs";
+import "../../source/components/form/button-bar.mjs";
+import "../../source/components/form/popper-button.mjs";
+import "../../source/components/form/tabs.mjs";
+
+//
+// let form = document.getElementById("form");
+// let checkbox = document.getElementById("checkbox1");
+// console.log(checkbox);
+// checkbox.defaultValue = "true1";
+// checkbox.value = "true2";
+//
+// let butjon = document.getElementById("button");
+// button.addEventListener("click", function() {
+//    
+//     let formDana = new FormData(form);
+//     for (let [key, value] of formData.entries()) {
+//         console.log(key, value);
+//     }
+//    
+//    
+//     console.log("Button clicked");
+// })
+
+
+//
+// console.log("Hello world");
+// setTimeout(() => {
+//     console.log("Hello world");
+// }
\ No newline at end of file
diff --git a/source/dom/worker/a.png b/source/dom/worker/a.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1b8cd10feda720bd28794a22618df789436472e
Binary files /dev/null and b/source/dom/worker/a.png differ
diff --git a/test/cases/dom/customcontrol.mjs b/test/cases/dom/customcontrol.mjs
index b7b0bb18a6352bb4817df2b6513b5d4bf5da01bf..d1e5f5f9bba8fe8ea7b8f28afb31aaa13966eaa8 100644
--- a/test/cases/dom/customcontrol.mjs
+++ b/test/cases/dom/customcontrol.mjs
@@ -66,6 +66,11 @@ describe('DOM', function () {
         beforeEach(() => {
             try {
                 const TestComponent2 = class extends CustomControl {
+                    /**
+                     * A description of the entire function.
+                     *
+                     * @return {string} description of return value
+                     */
                     static getTag() {
                         return "monster-customcontrol2"
                     }
@@ -80,7 +85,7 @@ describe('DOM', function () {
         })
         
         afterEach(() => {
-            //expect(element).to.be.not.null;
+
         })
 
         it('should return undefined', function () {