diff --git a/Button/button.json b/Button/button.json
index aba25262b9032292194eb854decfe203ef3104ec..140510bc0cf0a45663922311ddacfad6fda58fef 100644
--- a/Button/button.json
+++ b/Button/button.json
@@ -1,5 +1,6 @@
 {
   "svg": "button.svg",
+  "include": "button_extra.json",
   "items": [
     {
       "id": "button",
@@ -11,12 +12,6 @@
       "attr": "stroke-width",
       "value": "IF ENABLED(\"press_button\") THEN 6 ELSE 1 END",
       "ignore": "is now used in hover below"
-    },
-    {
-      "id": "button_%0",
-      "attr": "visibility",
-      "value": "IF button=%0 THEN \"visible\" ELSE \"hidden\" END",
-      "repeat": [ "TRUE", "FALSE" ]
     }
   ],
   "events": [
@@ -25,19 +20,6 @@
       "event": "toggle_button",
       "hovers": [{ "attr":"stroke-width", "enter":"6", "leave":"1"},
                  { "attr":"opacity", "enter":"0.8", "leave":"1.0"}]
-    },
-    {
-      "id": "button_TRUE",
-      "event": "toggle_button",
-      "hovers": [{ "attr":"stroke-width", "enter":"3", "leave":"1", "id":"button"},
-                 { "attr":"opacity", "enter":"0.5", "leave":"0.8"}]
-    },
-    {
-      "id": "button_FALSE",
-      "event": "set_button",
-      "predicates" : ["newVal = bool(%shiftKey=FALSE)"],
-      "hovers": [{ "attr":"stroke-width", "enter":"5", "leave":"1", "id":"button"},
-                { "attr":"opacity", "enter":"0.85", "leave":"1.0"}]
     }
   ]
 }
diff --git a/Button/button_extra.json b/Button/button_extra.json
new file mode 100644
index 0000000000000000000000000000000000000000..5da965905272eb842d5f93f70586dbb699d9cce9
--- /dev/null
+++ b/Button/button_extra.json
@@ -0,0 +1,28 @@
+{
+  "svg": "button.svg",
+  "comment": "treatment of button_TRUE and button_FALSE extra buttons",
+  "items": [
+    {
+      "id": "button_%0",
+      "attr": "visibility",
+      "value": "IF button=%0 THEN \"visible\" ELSE \"hidden\" END",
+      "repeat": [ "TRUE", "FALSE" ]
+    }
+  ],
+  "events": [
+    {
+      "id": "button_TRUE",
+      "event": "toggle_button",
+      "hovers": [{ "attr":"stroke-width", "enter":"3", "leave":"1", "id":"button"},
+                 { "attr":"opacity", "enter":"0.5", "leave":"0.8"}]
+    },
+    {
+      "id": "button_FALSE",
+      "event": "set_button",
+      "optional": true,
+      "predicates" : ["newVal =  bool(%shiftKey=FALSE)"],
+      "hovers": [{ "attr":"stroke-width", "enter":"5", "leave":"1", "id":"button"},
+                { "attr":"opacity", "enter":"0.85", "leave":"1.0"}]
+    }
+  ]
+}