diff --git a/Button/button_def.mch b/Button/button_def.mch
new file mode 100644
index 0000000000000000000000000000000000000000..f8d3665717d60f847e645223bb34ab284fb0e3d5
--- /dev/null
+++ b/Button/button_def.mch
@@ -0,0 +1,30 @@
+MACHINE button_def
+// An example that uses the new feature to use VisB DEFINITIONS
+DEFINITIONS 
+     "LibraryStrings.def";
+      VISB_JSON_FILE == "";
+      VISB_SVG_BOX == rec(height:200, width:240);
+ VISB_SVG_OBJECTS == rec(svg_class:"circle", `id`:"button",
+    cx:"100",cy:"100", r:"80",
+    stroke:"black", `stroke-width`:"3");
+ VISB_SVG_UPDATES == rec(`id`:"button",
+    fill: IF button=TRUE THEN "green" ELSE "red" END);
+ VISB_SVG_HOVERS == rec(`id`:"button", stroke:"gray",
+   `stroke-width`:"5")
+VARIABLES
+  button
+INVARIANT
+  button:BOOL
+INITIALISATION
+  button := FALSE
+OPERATIONS
+  press_button = PRE button=FALSE THEN
+    button:=TRUE
+  END;
+  toggle_button = BEGIN
+    button:= bool(button=FALSE)
+  END;
+  set_button(newVal) = PRE newVal:BOOL THEN
+     button := bool(newVal=TRUE)
+  END
+END
\ No newline at end of file