diff --git a/package.json b/package.json
index cea4e05fb9ffb136a5d5f534e9d5ce3965350ec1..63eaa2a4529502e13211e85154025b5bc0aede0b 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
     "@biomejs/biome": "1.3.3",
     "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
     "@peculiar/webcrypto": "^1.4.5",
-    "autoprefixer": "^10.4.17",
+    "autoprefixer": "^10.4.18",
     "browserslist": "^4.23.0",
     "btoa": "^1.2.1",
     "c8": "^8.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ec6eaaaf28e46406c1998a9221c3c8c1ec912c9f..175a35ceafcc8e9afb0244181a50cd5c05941f20 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -26,8 +26,8 @@ devDependencies:
     specifier: ^1.4.5
     version: 1.4.5
   autoprefixer:
-    specifier: ^10.4.17
-    version: 10.4.17(postcss@8.4.35)
+    specifier: ^10.4.18
+    version: 10.4.18(postcss@8.4.35)
   browserslist:
     specifier: ^4.23.0
     version: 4.23.0
@@ -183,7 +183,7 @@ packages:
     engines: {node: '>=6.0.0'}
     dependencies:
       '@jridgewell/gen-mapping': 0.3.5
-      '@jridgewell/trace-mapping': 0.3.24
+      '@jridgewell/trace-mapping': 0.3.25
     dev: true
 
   /@babel/code-frame@7.23.5:
@@ -228,7 +228,7 @@ packages:
     dependencies:
       '@babel/types': 7.24.0
       '@jridgewell/gen-mapping': 0.3.5
-      '@jridgewell/trace-mapping': 0.3.24
+      '@jridgewell/trace-mapping': 0.3.25
       jsesc: 2.5.2
     dev: true
 
@@ -919,7 +919,7 @@ packages:
     dependencies:
       '@jridgewell/set-array': 1.2.1
       '@jridgewell/sourcemap-codec': 1.4.15
-      '@jridgewell/trace-mapping': 0.3.24
+      '@jridgewell/trace-mapping': 0.3.25
     dev: true
 
   /@jridgewell/resolve-uri@3.1.2:
@@ -936,15 +936,15 @@ packages:
     resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
     dependencies:
       '@jridgewell/gen-mapping': 0.3.5
-      '@jridgewell/trace-mapping': 0.3.24
+      '@jridgewell/trace-mapping': 0.3.25
     dev: true
 
   /@jridgewell/sourcemap-codec@1.4.15:
     resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
     dev: true
 
-  /@jridgewell/trace-mapping@0.3.24:
-    resolution: {integrity: sha512-+VaWXDa6+l6MhflBvVXjIEAzb59nQ2JUK3bwRp2zRpPtU+8TFRy9Gg/5oIcNlkEL5PGlBFGfemUVvIgLnTzq7Q==}
+  /@jridgewell/trace-mapping@0.3.25:
+    resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
     dependencies:
       '@jridgewell/resolve-uri': 3.1.2
       '@jridgewell/sourcemap-codec': 1.4.15
@@ -967,8 +967,8 @@ packages:
       - '@types/node'
     dev: true
 
-  /@microsoft/api-extractor@7.42.1(@types/node@18.19.21):
-    resolution: {integrity: sha512-eswRJCfiscDDcgu+0DPBdpYKRCVXaeFOOp9h4Y4ixoCCeGoEwgNi/P9zp39O+61pLWxZ3pAShTY0pe8vw5LtrQ==}
+  /@microsoft/api-extractor@7.42.3(@types/node@18.19.21):
+    resolution: {integrity: sha512-JNLJFpGHz6ekjS6bvYXxUBeRGnSHeCMFNvRbCQ+7XXB/ZFrgLSMPwWtEq40AiWAy+oyG5a4RSNwdJTp0B2USvQ==}
     hasBin: true
     dependencies:
       '@microsoft/api-extractor-model': 7.28.13(@types/node@18.19.21)
@@ -977,7 +977,7 @@ packages:
       '@rushstack/node-core-library': 4.0.2(@types/node@18.19.21)
       '@rushstack/rig-package': 0.5.2
       '@rushstack/terminal': 0.10.0(@types/node@18.19.21)
-      '@rushstack/ts-command-line': 4.18.1(@types/node@18.19.21)
+      '@rushstack/ts-command-line': 4.19.1(@types/node@18.19.21)
       lodash: 4.17.21
       minimatch: 3.0.8
       resolve: 1.22.8
@@ -1144,8 +1144,8 @@ packages:
       supports-color: 8.1.1
     dev: true
 
-  /@rushstack/ts-command-line@4.18.1(@types/node@18.19.21):
-    resolution: {integrity: sha512-A3x3ARWzoW4ARU1XS87wFVJvdywzo2j27aRm5SIFY3Nwl5vQqo0hvzaQDYCq/hEGBxAdBGW8q6N5clNk36H34A==}
+  /@rushstack/ts-command-line@4.19.1(@types/node@18.19.21):
+    resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==}
     dependencies:
       '@rushstack/terminal': 0.10.0(@types/node@18.19.21)
       '@types/argparse': 1.0.38
@@ -1155,43 +1155,43 @@ packages:
       - '@types/node'
     dev: true
 
-  /@sentry-internal/tracing@7.104.0:
-    resolution: {integrity: sha512-2z7OijM1J5ndJUiJJElC3iH9qb/Eb8eYm2v8oJhM8WVdc5uCKfrQuYHNgGOnmY2FOCfEUlTmMQGpDw7DJ67L5w==}
+  /@sentry-internal/tracing@7.105.0:
+    resolution: {integrity: sha512-b+AFYB7Bc9vmyxl2jbmuT4esX5G0oPfpz35A0sxFzmJIhvMg1YMDNio2c81BtKN+VSPORCnKMLhfk3kyKKvWMQ==}
     engines: {node: '>=8'}
     dependencies:
-      '@sentry/core': 7.104.0
-      '@sentry/types': 7.104.0
-      '@sentry/utils': 7.104.0
+      '@sentry/core': 7.105.0
+      '@sentry/types': 7.105.0
+      '@sentry/utils': 7.105.0
     dev: true
 
-  /@sentry/core@7.104.0:
-    resolution: {integrity: sha512-XPndD6IGQGd07/EntvYVzOWQUo/Gd7L3DwYFeEKeBv6ByWjbBNmVZFRhU0GPPsCHKyW9yMU9OO9diLSS4ijsRg==}
+  /@sentry/core@7.105.0:
+    resolution: {integrity: sha512-5xsaTG6jZincTeJUmZomlv20mVRZUEF1U/g89lmrSOybyk2+opEnB1JeBn4ODwnvmSik8r2QLr6/RiYlaxRJCg==}
     engines: {node: '>=8'}
     dependencies:
-      '@sentry/types': 7.104.0
-      '@sentry/utils': 7.104.0
+      '@sentry/types': 7.105.0
+      '@sentry/utils': 7.105.0
     dev: true
 
-  /@sentry/node@7.104.0:
-    resolution: {integrity: sha512-Ixt8qg6IV8gywi4+H1cAtQeglAAww2nwLHybCxAvnu3czdF8w7ifF+o5BY1FmO5UYVCAfr8vEb+XG4CuRrFb7g==}
+  /@sentry/node@7.105.0:
+    resolution: {integrity: sha512-b0QwZ7vT4hcJi6LmNRh3dcaYpLtXnkYXkL0rfhMb8hN8sUx8zuOWFMI7j0cfAloVThUeJVwGyv9dERfzGS2r2w==}
     engines: {node: '>=8'}
     dependencies:
-      '@sentry-internal/tracing': 7.104.0
-      '@sentry/core': 7.104.0
-      '@sentry/types': 7.104.0
-      '@sentry/utils': 7.104.0
+      '@sentry-internal/tracing': 7.105.0
+      '@sentry/core': 7.105.0
+      '@sentry/types': 7.105.0
+      '@sentry/utils': 7.105.0
     dev: true
 
-  /@sentry/types@7.104.0:
-    resolution: {integrity: sha512-5bs0xe0+GZR4QBm9Nrqw59o0sv3kBtCosrZDVxBru/dQbrfnB+/kVorvuM0rV3+coNITTKcKDegSZmK1d2uOGQ==}
+  /@sentry/types@7.105.0:
+    resolution: {integrity: sha512-80o0KMVM+X2Ym9hoQxvJetkJJwkpCg7o6tHHFXI+Rp7fawc2iCMTa0IRQMUiSkFvntQLYIdDoNNuKdzz2PbQGA==}
     engines: {node: '>=8'}
     dev: true
 
-  /@sentry/utils@7.104.0:
-    resolution: {integrity: sha512-ZVg+xZirI9DlOi0NegNVocswdh/8p6QkzlQzDQY2LP2CC6JQdmwi64o0S4rPH4YIHNKQJTpIjduoxeKgd1EO5g==}
+  /@sentry/utils@7.105.0:
+    resolution: {integrity: sha512-YVAV0c2KLM8+VZCicQ/E/P2+J9Vs0hGhrXwV7w6ZEAtvxrg4oF270toL1WRhvcaf8JO4J1v4V+LuU6Txs4uEeQ==}
     engines: {node: '>=8'}
     dependencies:
-      '@sentry/types': 7.104.0
+      '@sentry/types': 7.105.0
     dev: true
 
   /@sinonjs/commons@2.0.0:
@@ -1498,15 +1498,15 @@ packages:
     engines: {node: '>= 4.0.0'}
     dev: true
 
-  /autoprefixer@10.4.17(postcss@8.4.35):
-    resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==}
+  /autoprefixer@10.4.18(postcss@8.4.35):
+    resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==}
     engines: {node: ^10 || ^12 || >=14}
     hasBin: true
     peerDependencies:
       postcss: ^8.1.0
     dependencies:
       browserslist: 4.23.0
-      caniuse-lite: 1.0.30001591
+      caniuse-lite: 1.0.30001594
       fraction.js: 4.3.7
       normalize-range: 0.1.2
       picocolors: 1.0.0
@@ -1685,8 +1685,8 @@ packages:
     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
     hasBin: true
     dependencies:
-      caniuse-lite: 1.0.30001591
-      electron-to-chromium: 1.4.689
+      caniuse-lite: 1.0.30001594
+      electron-to-chromium: 1.4.692
       node-releases: 2.0.14
       update-browserslist-db: 1.0.13(browserslist@4.23.0)
     dev: true
@@ -1783,13 +1783,13 @@ packages:
     resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
     dependencies:
       browserslist: 4.23.0
-      caniuse-lite: 1.0.30001591
+      caniuse-lite: 1.0.30001594
       lodash.memoize: 4.1.2
       lodash.uniq: 4.5.0
     dev: true
 
-  /caniuse-lite@1.0.30001591:
-    resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==}
+  /caniuse-lite@1.0.30001594:
+    resolution: {integrity: sha512-VblSX6nYqyJVs8DKFMldE2IVCJjZ225LW00ydtUWwh5hk9IfkTOffO6r8gJNsH0qqqeAF8KrbMYA2VEwTlGW5g==}
     dev: true
 
   /caseless@0.12.0:
@@ -2133,7 +2133,7 @@ packages:
       execa: 7.2.0
       polyfill-library: 4.8.0
       semver: 7.6.0
-      snyk: 1.1281.0
+      snyk: 1.1282.1
       yargs: 17.7.2
     transitivePeerDependencies:
       - supports-color
@@ -2558,8 +2558,8 @@ packages:
     resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
     dev: true
 
-  /electron-to-chromium@1.4.689:
-    resolution: {integrity: sha512-GatzRKnGPS1go29ep25reM94xxd1Wj8ritU0yRhCJ/tr1Bg8gKnm6R9O/yPOhGQBoLMZ9ezfrpghNaTw97C/PQ==}
+  /electron-to-chromium@1.4.692:
+    resolution: {integrity: sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA==}
     dev: true
 
   /element-internals-polyfill@1.3.10:
@@ -5710,13 +5710,13 @@ packages:
     engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
     dev: true
 
-  /snyk@1.1281.0:
-    resolution: {integrity: sha512-I+oVDXOF+nFTpFnRkP985x6xMlXzGzojHsC3F4YeT+NPfsn5mfmnx0NVY4tSXBoENqWGYzBw3M2adeLcbamx4Q==}
+  /snyk@1.1282.1:
+    resolution: {integrity: sha512-OaGdI7vscWOgIRLGF0ZzUjoNCyYAhkIz4HfNvII2h7Z11utssa4IS3ytXrnFYWdjgwLjqAQ94yGcSmSt8Clgtg==}
     engines: {node: '>=12'}
     hasBin: true
     requiresBuild: true
     dependencies:
-      '@sentry/node': 7.104.0
+      '@sentry/node': 7.105.0
       global-agent: 3.0.0
     dev: true
 
@@ -6255,7 +6255,7 @@ packages:
     resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==}
     engines: {node: '>=10.12.0'}
     dependencies:
-      '@jridgewell/trace-mapping': 0.3.24
+      '@jridgewell/trace-mapping': 0.3.25
       '@types/istanbul-lib-coverage': 2.0.6
       convert-source-map: 2.0.0
     dev: true
@@ -6296,7 +6296,7 @@ packages:
     peerDependencies:
       vite: '>=2.9.0'
     dependencies:
-      '@microsoft/api-extractor': 7.42.1(@types/node@18.19.21)
+      '@microsoft/api-extractor': 7.42.3(@types/node@18.19.21)
       '@rollup/pluginutils': 5.1.0
       '@rushstack/node-core-library': 3.66.1(@types/node@18.19.21)
       debug: 4.3.4(supports-color@8.1.1)
diff --git a/source/components/form/select.mjs b/source/components/form/select.mjs
index b52066e31e144c5551ecdc55e130bd3924ec6031..e0b93649fa88563f60ab1e8fbd455ecaa8bb75df 100644
--- a/source/components/form/select.mjs
+++ b/source/components/form/select.mjs
@@ -376,6 +376,7 @@ class Select extends CustomControl {
             .catch((e) => {
                 addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.message);
             });
+        
     }
 
     /**
@@ -559,7 +560,9 @@ class Select extends CustomControl {
 
         let lastValue = self.value;
         self[internalSymbol].attachObserver(
+            
             new Observer(function () {
+                
                 if (isObject(this) && this instanceof ProxyObserver) {
                     const n = this.getSubject()?.options?.value;
 
@@ -1923,7 +1926,9 @@ function setSelection(selection) {
                 }
             });
         }
-    }).run();
+    }).run().catch((e) => {
+        addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.message);
+    });
 }
 
 /**
diff --git a/source/dom/customcontrol.mjs b/source/dom/customcontrol.mjs
index 608aa835cce2fa75a4e62f999c9626abdb2ddb2b..f271a7fa0266df99bba029764c9691c2fd03ba5b 100644
--- a/source/dom/customcontrol.mjs
+++ b/source/dom/customcontrol.mjs
@@ -320,9 +320,13 @@ class CustomControl extends CustomElement {
 	 */
 	formDisabledCallback(disabled) {
 		if (disabled) {
-			this.setAttribute("disabled", "");
+			if (!this.hasAttribute("disabled")) {
+				this.setAttribute("disabled", "");
+			}
 		} else {
-			this.removeAttribute("disabled");
+			if (this.hasAttribute("disabled")) {
+				this.removeAttribute("disabled");
+			}
 		}
 	}
 
diff --git a/source/dom/updater.mjs b/source/dom/updater.mjs
index d3b36ef042b17cf4bbc5660966700313d0827b4d..7b80b813130d150360de5cfde780170017492f1f 100644
--- a/source/dom/updater.mjs
+++ b/source/dom/updater.mjs
@@ -862,22 +862,14 @@ function handleInputControlAttributeUpdate(element, name, value) {
         switch (element.type) {
             case "radio":
                 if (name === "checked") {
-                    if (value !== undefined) {
-                        element.checked = true;
-                    } else {
-                        element.checked = false;
-                    }
+                    element.checked = value !== undefined;
                 }
 
                 break;
 
             case "checkbox":
                 if (name === "checked") {
-                    if (value !== undefined) {
-                        element.checked = true;
-                    } else {
-                        element.checked = false;
-                    }
+                    element.checked = value !== undefined;
                 }
 
                 break;
diff --git a/test/cases/dom/customcontrol.mjs b/test/cases/dom/customcontrol.mjs
index fb091a0f528a4e712722008b1e3c81547823a776..b7b0bb18a6352bb4817df2b6513b5d4bf5da01bf 100644
--- a/test/cases/dom/customcontrol.mjs
+++ b/test/cases/dom/customcontrol.mjs
@@ -19,7 +19,7 @@ describe('DOM', function () {
     let CustomControl, registerCustomElement, TestComponent, document, jsdomFlag;
 
     before(function (done) {
-        initJSDOM().then(() => {
+        initJSDOM({}).then(() => {
 
             import("element-internals-polyfill").then((m) => {
                 m.polyfill();
@@ -29,7 +29,7 @@ describe('DOM', function () {
             jsdomFlag = navigator.userAgent.includes("jsdom");
 
             import("../../../source/dom/customelement.mjs").then((m) => {
-               
+
                 registerCustomElement = m['registerCustomElement'];
 
 
@@ -55,10 +55,47 @@ describe('DOM', function () {
                 });
             }).catch((e) => {
                 done(e);
-            } );
+            });
+        });
+    })
+
+    describe('formDisabledCallback()', function () {
+        
+        let element
+        
+        beforeEach(() => {
+            try {
+                const TestComponent2 = class extends CustomControl {
+                    static getTag() {
+                        return "monster-customcontrol2"
+                    }
+                }
+                registerCustomElement(TestComponent2)
+            } catch (e) {
+                expect(e).to.be.not.null;
+            }
+
+             element = document.createElement('monster-customcontrol2');
+
+        })
+        
+        afterEach(() => {
+            //expect(element).to.be.not.null;
+        })
+
+        it('should return undefined', function () {
+            expect(element.formDisabledCallback()).to.be.undefined;
+            expect(element.hasAttribute('disabled')).to.be.false;
+            expect(element.formDisabledCallback(true)).to.be.undefined;
+            expect(element.hasAttribute('disabled')).to.be.true;
+            const d = element.getAttribute('disabled');
+            expect(d).to.not.be.null;
+            
         });
+
     })
 
+
     describe('CustomControl()', function () {
 
         beforeEach(() => {
@@ -76,13 +113,16 @@ describe('DOM', function () {
 
         describe('create', function () {
             it('should return custom-element object', function () {
+                let d
                 try {
-                    let d = new TestComponent();
+                    d = new TestComponent();
                 } catch (e) {
-                    expect(e).to.be.not.null;
+                    expect(e).to.be.null;
                 }
 
-                expect(typeof d).is.equal('undefined');
+                console.log(typeof d,"ssss");
+                expect(typeof d).is.equal('object');
+                
             });
         });
 
@@ -91,7 +131,7 @@ describe('DOM', function () {
 
                 let d = document.createElement('monster-customcontrol');
                 document.getElementById('test1').appendChild(d);
-                                
+
                 expect(document.getElementsByTagName('monster-customcontrol').length).is.equal(1);
                 // no data-monster-objectlink="Symbol(monsterUpdater)" because it has nothing to update 
                 expect(document.getElementById('test1')).contain.html('<monster-customcontrol data-monster-error="Error: html is not set."></monster-customcontrol>')
@@ -172,7 +212,7 @@ describe('DOM', function () {
 
                 let d = document.createElement('monster-customcontrol');
                 form.appendChild(d);
-                
+
             });
 
             it('name getter', function () {