diff --git a/Assets/Stages/TechDemo A.JSON b/Assets/Stages/TechDemo A.JSON
index 43212e6ea63becea22805a3e66a43b5d73bf0d3c..c13f433010bb05600e3cda4ff32f5572d2a1c2de 100644
--- a/Assets/Stages/TechDemo A.JSON	
+++ b/Assets/Stages/TechDemo A.JSON	
@@ -1 +1,163 @@
-{"category":"Demo Category","number":1,"description":"Tree Stage","scene":"RiverWorld","use_install_folder":true,"solution":{"ValidationSet":[{"MasterIDs":["http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact9"],"SolutionIndex":[],"RelationIndex":[],"ComparerString":"LineFactHightDirectionComparer"}],"WorkflowGadgetDict":{"-1":null},"FactDict":{"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact7":{"s_type":"PointFact","Point":{"x":0.0,"y":0.0,"z":0.0,"magnitude":0.0,"sqrMagnitude":0.0},"Normal":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact7","Label":"A","hasCustomLabel":false,"LabelId":1},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact8":{"s_type":"PointFact","Point":{"x":0.0,"y":6.0,"z":0.0,"normalized":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"magnitude":6.0,"sqrMagnitude":36.0},"Normal":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact8","Label":"B","hasCustomLabel":false,"LabelId":2},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact9":{"s_type":"LineFact","Distance":6.0,"Pid1":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact7","Pid2":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact8","Dir":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact9","Label":"[AB]","hasCustomLabel":false,"LabelId":0}},"MetaInf":{"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact7":{"workflow_id":0,"active":true},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact8":{"workflow_id":1,"active":true},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact9":{"workflow_id":2,"active":true}},"Workflow":[{"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact7","samestep":false,"steplink":3,"creation":true,"gadget_rank":-1,"scroll_label":null,"GadgetFlow":[],"GadgetTime":0.0},{"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact8","samestep":true,"steplink":0,"creation":true,"gadget_rank":-1,"scroll_label":null,"GadgetFlow":[],"GadgetTime":0.0},{"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact9","samestep":true,"steplink":0,"creation":true,"gadget_rank":-1,"scroll_label":null,"GadgetFlow":[],"GadgetTime":0.0}],"marker":3,"worksteps":1,"backlog":0,"soft_resetted":false,"invoke":true,"MaxLabelId":2,"UnusedLabelIds":[],"name":null,"path":null},"solution_approches":[],"AllowedScrolls":null,"AllowedGadgets":null,"name":"TechDemo A","path":null}
\ No newline at end of file
+{
+  "category": "Demo Category",
+  "number": 1,
+  "description": "Tree Stage",
+  "scene": "RiverWorld",
+  "use_install_folder": true,
+  "solution": {
+    "ValidationSet": [
+      {
+        "MasterIDs": [
+          "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact3"
+        ],
+        "SolutionIndex": [],
+        "RelationIndex": [],
+        "ComparerString": "LineFactHightDirectionComparer"
+      }
+    ],
+    "ExposedSolutionFacts": [],
+    "ImmutableFacts": [],
+    "WorkflowGadgetDict": {
+      "-1": null
+    },
+    "MetaInf": {
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact1": {
+        "workflow_id": 0,
+        "active": true,
+        "isImmutable": false
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact2": {
+        "workflow_id": 1,
+        "active": true,
+        "isImmutable": false
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact3": {
+        "workflow_id": 2,
+        "active": true,
+        "isImmutable": false
+      }
+    },
+    "Workflow": [
+      {
+        "Id": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact1",
+        "samestep": false,
+        "steplink": 3,
+        "creation": true,
+        "gadget_rank": -1,
+        "scroll_label": null,
+        "GadgetFlow": [],
+        "GadgetTime": 0.9207362000000785
+      },
+      {
+        "Id": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact2",
+        "samestep": true,
+        "steplink": 0,
+        "creation": true,
+        "gadget_rank": -1,
+        "scroll_label": null,
+        "GadgetFlow": [],
+        "GadgetTime": 0.9207362000000785
+      },
+      {
+        "Id": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact3",
+        "samestep": true,
+        "steplink": 0,
+        "creation": true,
+        "gadget_rank": -1,
+        "scroll_label": null,
+        "GadgetFlow": [],
+        "GadgetTime": 0.9207362000000785
+      }
+    ],
+    "marker": 3,
+    "worksteps": 1,
+    "backlog": 0,
+    "soft_resetted": false,
+    "invoke": true,
+    "MaxLabelId": 2,
+    "UnusedLabelIds": [],
+    "JsonFactSpace": {
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact1": {
+        "Point": {
+          "x": 0.0,
+          "y": 0.0,
+          "z": 0.0,
+          "magnitude": 0.0,
+          "sqrMagnitude": 0.0
+        },
+        "Normal": {
+          "x": 0.0,
+          "y": 1.0,
+          "z": 0.0,
+          "magnitude": 1.0,
+          "sqrMagnitude": 1.0
+        },
+        "s_type": "PointFact",
+        "ServerDefinition": {
+          "kind": "OMS",
+          "uri": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact1"
+        },
+        "Label": "A",
+        "hasCustomLabel": false,
+        "LabelId": 1
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact2": {
+        "Point": {
+          "x": 0.0,
+          "y": 6.0,
+          "z": 0.0,
+          "normalized": {
+            "x": 0.0,
+            "y": 1.0,
+            "z": 0.0,
+            "magnitude": 1.0,
+            "sqrMagnitude": 1.0
+          },
+          "magnitude": 6.0,
+          "sqrMagnitude": 36.0
+        },
+        "Normal": {
+          "x": 0.0,
+          "y": 1.0,
+          "z": 0.0,
+          "magnitude": 1.0,
+          "sqrMagnitude": 1.0
+        },
+        "s_type": "PointFact",
+        "ServerDefinition": {
+          "kind": "OMS",
+          "uri": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact2"
+        },
+        "Label": "B",
+        "hasCustomLabel": false,
+        "LabelId": 2
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact3": {
+        "s_type": "LineFact",
+        "Pid1": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact1",
+        "Pid2": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact2",
+        "Dir": {
+          "x": 0.0,
+          "y": -1.0,
+          "z": 0.0,
+          "magnitude": 1.0,
+          "sqrMagnitude": 1.0
+        },
+        "ServerDefinition": {
+          "kind": "OMS",
+          "uri": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact3"
+        },
+        "Label": "[AB]",
+        "hasCustomLabel": false,
+        "LabelId": 0
+      }
+    },
+    "name": null,
+    "path": null
+  },
+  "solution_approches": [],
+  "AllowedScrolls": null,
+  "AllowedGadgets": null,
+  "name": "TechDemo A",
+  "path": null
+}
\ No newline at end of file
diff --git a/Assets/Stages/TechDemo B.JSON b/Assets/Stages/TechDemo B.JSON
index 8e88e515956aa47bb993ea71bc76e5a6f3e8284a..50d370c069a1941494deb1160f3cb4fd9086368e 100644
--- a/Assets/Stages/TechDemo B.JSON	
+++ b/Assets/Stages/TechDemo B.JSON	
@@ -1 +1,296 @@
-{"category":"Demo Category","number":2,"description":"River Stage","scene":"RiverWorld","use_install_folder":true,"solution":{"ValidationSet":[{"MasterIDs":["http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact12"],"SolutionIndex":[],"RelationIndex":[],"ComparerString":"LineFactHightDirectionComparer"},{"MasterIDs":["http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact12"],"SolutionIndex":[],"RelationIndex":[],"ComparerString":"LineSpanningOverRiverWorldComparer"},{"MasterIDs":[],"SolutionIndex":[1],"RelationIndex":[0],"ComparerString":"LineFactHightComparer"}],"WorkflowGadgetDict":{"-1":null},"FactDict":{"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact10":{"s_type":"PointFact","Point":{"x":0.0,"y":0.0,"z":0.0,"magnitude":0.0,"sqrMagnitude":0.0},"Normal":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact10","Label":"A","hasCustomLabel":false,"LabelId":1},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact11":{"s_type":"PointFact","Point":{"x":0.0,"y":6.0,"z":0.0,"normalized":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"magnitude":6.0,"sqrMagnitude":36.0},"Normal":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact11","Label":"B","hasCustomLabel":false,"LabelId":2},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact12":{"s_type":"LineFact","Distance":6.0,"Pid1":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact10","Pid2":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact11","Dir":{"x":0.0,"y":1.0,"z":0.0,"magnitude":1.0,"sqrMagnitude":1.0},"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact12","Label":"[AB]","hasCustomLabel":false,"LabelId":0}},"MetaInf":{"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact10":{"workflow_id":0,"active":true},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact11":{"workflow_id":1,"active":true},"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact12":{"workflow_id":2,"active":true}},"Workflow":[{"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact10","samestep":false,"steplink":3,"creation":true,"gadget_rank":-1,"scroll_label":null,"GadgetFlow":[],"GadgetTime":0.0},{"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact11","samestep":true,"steplink":0,"creation":true,"gadget_rank":-1,"scroll_label":null,"GadgetFlow":[],"GadgetTime":0.0},{"Id":"http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact12","samestep":true,"steplink":0,"creation":true,"gadget_rank":-1,"scroll_label":null,"GadgetFlow":[],"GadgetTime":0.0}],"marker":3,"worksteps":1,"backlog":0,"soft_resetted":false,"invoke":true,"MaxLabelId":2,"UnusedLabelIds":[],"name":null,"path":null},"solution_approches":[],"AllowedScrolls":["OppositeLen","AngleSum","Pythagoras","CircleScroll","CircleAreaScroll","ConeVolumeScroll","TruncatedConeVolumeScroll","CylinderVolumeScroll","MidPoint","CircleLineAngleScroll","CircleLineAngleToAngle","SupplementaryAngles"],"AllowedGadgets":[{"s_type":"Pointer","Rank":1,"UiName":"Pointer","MaxRange":"Infinity","MaxHeight":"Infinity","ButtonIndx":1,"MaterialIndx":0,"IgnoreLayerMask":{"value":7682},"SecondaryLayerMask":{"value":0},"Workflow":[]},{"s_type":"Tape","Rank":2,"UiName":"Tape","MaxRange":2.5,"MaxHeight":2.5,"ButtonIndx":2,"MaterialIndx":0,"IgnoreLayerMask":{"value":129538},"SecondaryLayerMask":{"value":0},"Workflow":[]},{"s_type":"AngleTool","Rank":3,"UiName":"Angle Tool","MaxRange":"Infinity","MaxHeight":"Infinity","ButtonIndx":3,"MaterialIndx":1,"IgnoreLayerMask":{"value":129538},"SecondaryLayerMask":{"value":0},"Workflow":[]},{"s_type":"LineTool","Rank":4,"UiName":"Line Tool","MaxRange":"Infinity","MaxHeight":"Infinity","ButtonIndx":4,"MaterialIndx":0,"IgnoreLayerMask":{"value":129538},"SecondaryLayerMask":{"value":0},"Workflow":[]},{"s_type":"LotTool","Rank":5,"UiName":"Lot Tool","MaxRange":"Infinity","MaxHeight":"Infinity","ButtonIndx":5,"MaterialIndx":0,"IgnoreLayerMask":{"value":102914},"SecondaryLayerMask":{"value":0},"Workflow":[]},{"s_type":"Pendulum","Rank":6,"UiName":"Pendulum","MaxRange":"Infinity","MaxHeight":"Infinity","ButtonIndx":6,"MaterialIndx":0,"IgnoreLayerMask":{"value":129538},"SecondaryLayerMask":{"value":1},"Workflow":[]},{"s_type":"Remover","Rank":8,"UiName":"Delete Fact","MaxRange":"Infinity","MaxHeight":"Infinity","ButtonIndx":8,"MaterialIndx":0,"IgnoreLayerMask":{"value":66067},"SecondaryLayerMask":{"value":0},"Workflow":[]},{"s_type":"EqualCircles","Rank":9,"UiName":"Not Defined","MaxRange":"Infinity","MaxHeight":"Infinity","ButtonIndx":9,"MaterialIndx":0,"IgnoreLayerMask":{"value":0},"SecondaryLayerMask":{"value":0},"Workflow":[]}],"name":"TechDemo B","path":null}
\ No newline at end of file
+{
+  "category": "Demo Category",
+  "number": 2,
+  "description": "River Stage",
+  "scene": "RiverWorld",
+  "use_install_folder": true,
+  "solution": {
+    "ValidationSet": [
+      {
+        "MasterIDs": [
+          "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact6"
+        ],
+        "SolutionIndex": [],
+        "RelationIndex": [],
+        "ComparerString": "LineFactHightDirectionComparer"
+      },
+      {
+        "MasterIDs": [
+          "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact6"
+        ],
+        "SolutionIndex": [],
+        "RelationIndex": [],
+        "ComparerString": "LineSpanningOverRiverWorldComparer"
+      },
+      {
+        "MasterIDs": [],
+        "SolutionIndex": [
+          1
+        ],
+        "RelationIndex": [
+          0
+        ],
+        "ComparerString": "LineFactHightComparer"
+      }
+    ],
+    "ExposedSolutionFacts": [],
+    "ImmutableFacts": [],
+    "WorkflowGadgetDict": {
+      "-1": null
+    },
+    "MetaInf": {
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact4": {
+        "workflow_id": 0,
+        "active": true,
+        "isImmutable": false
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact5": {
+        "workflow_id": 1,
+        "active": true,
+        "isImmutable": false
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact6": {
+        "workflow_id": 2,
+        "active": true,
+        "isImmutable": false
+      }
+    },
+    "Workflow": [
+      {
+        "Id": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact4",
+        "samestep": false,
+        "steplink": 3,
+        "creation": true,
+        "gadget_rank": -1,
+        "scroll_label": null,
+        "GadgetFlow": [],
+        "GadgetTime": 0.9207362000000785
+      },
+      {
+        "Id": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact5",
+        "samestep": true,
+        "steplink": 0,
+        "creation": true,
+        "gadget_rank": -1,
+        "scroll_label": null,
+        "GadgetFlow": [],
+        "GadgetTime": 0.9207362000000785
+      },
+      {
+        "Id": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact6",
+        "samestep": true,
+        "steplink": 0,
+        "creation": true,
+        "gadget_rank": -1,
+        "scroll_label": null,
+        "GadgetFlow": [],
+        "GadgetTime": 0.9207362000000785
+      }
+    ],
+    "marker": 3,
+    "worksteps": 1,
+    "backlog": 0,
+    "soft_resetted": false,
+    "invoke": true,
+    "MaxLabelId": 2,
+    "UnusedLabelIds": [],
+    "JsonFactSpace": {
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact4": {
+        "Point": {
+          "x": 0.0,
+          "y": 0.0,
+          "z": 0.0,
+          "magnitude": 0.0,
+          "sqrMagnitude": 0.0
+        },
+        "Normal": {
+          "x": 0.0,
+          "y": 1.0,
+          "z": 0.0,
+          "magnitude": 1.0,
+          "sqrMagnitude": 1.0
+        },
+        "s_type": "PointFact",
+        "ServerDefinition": {
+          "kind": "OMS",
+          "uri": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact4"
+        },
+        "Label": "A",
+        "hasCustomLabel": false,
+        "LabelId": 1
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact5": {
+        "Point": {
+          "x": 0.0,
+          "y": 6.0,
+          "z": 0.0,
+          "normalized": {
+            "x": 0.0,
+            "y": 1.0,
+            "z": 0.0,
+            "magnitude": 1.0,
+            "sqrMagnitude": 1.0
+          },
+          "magnitude": 6.0,
+          "sqrMagnitude": 36.0
+        },
+        "Normal": {
+          "x": 0.0,
+          "y": 1.0,
+          "z": 0.0,
+          "magnitude": 1.0,
+          "sqrMagnitude": 1.0
+        },
+        "s_type": "PointFact",
+        "ServerDefinition": {
+          "kind": "OMS",
+          "uri": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact5"
+        },
+        "Label": "B",
+        "hasCustomLabel": false,
+        "LabelId": 2
+      },
+      "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact6": {
+        "s_type": "LineFact",
+        "Pid1": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact4",
+        "Pid2": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact5",
+        "Dir": {
+          "x": 0.0,
+          "y": -1.0,
+          "z": 0.0,
+          "magnitude": 1.0,
+          "sqrMagnitude": 1.0
+        },
+        "ServerDefinition": {
+          "kind": "OMS",
+          "uri": "http://mathhub.info/FrameIT/frameworld?DefaultSituationSpace/SituationTheory1?fact6"
+        },
+        "Label": "[AB]",
+        "hasCustomLabel": false,
+        "LabelId": 0
+      }
+    },
+    "name": null,
+    "path": null
+  },
+  "solution_approches": [],
+  "AllowedScrolls": [
+    "http://mathhub.info/FrameIT/frameworld?OppositeLen"
+  ],
+  "AllowedGadgets": [
+    {
+      "s_type": "Pointer",
+      "Rank": 1,
+      "UiName": "Pointer",
+      "MaxRange": "Infinity",
+      "MaxHeight": "Infinity",
+      "ButtonIndx": 1,
+      "MaterialIndx": 0,
+      "LayerHitMask": {
+        "value": 1581105
+      },
+      "SecondaryLayerMask": {
+        "value": 0
+      },
+      "Workflow": []
+    },
+    {
+      "s_type": "Tape",
+      "Rank": 2,
+      "UiName": "Tape",
+      "MaxRange": 2.5,
+      "MaxHeight": 2.5,
+      "ButtonIndx": 2,
+      "MaterialIndx": 0,
+      "LayerHitMask": {
+        "value": 1024
+      },
+      "SecondaryLayerMask": {
+        "value": 0
+      },
+      "Workflow": []
+    },
+    {
+      "s_type": "AngleTool",
+      "Rank": 3,
+      "UiName": "Angle Tool",
+      "MaxRange": "Infinity",
+      "MaxHeight": "Infinity",
+      "ButtonIndx": 3,
+      "MaterialIndx": 1,
+      "LayerHitMask": {
+        "value": 1024
+      },
+      "SecondaryLayerMask": {
+        "value": 0
+      },
+      "Workflow": []
+    },
+    {
+      "s_type": "LineTool",
+      "Rank": 4,
+      "UiName": "Line Tool",
+      "MaxRange": "Infinity",
+      "MaxHeight": "Infinity",
+      "ButtonIndx": 4,
+      "MaterialIndx": 0,
+      "LayerHitMask": {
+        "value": 1024
+      },
+      "SecondaryLayerMask": {
+        "value": 0
+      },
+      "Workflow": []
+    },
+    {
+      "s_type": "LotTool",
+      "Rank": 5,
+      "UiName": "Lot Tool",
+      "MaxRange": "Infinity",
+      "MaxHeight": "Infinity",
+      "ButtonIndx": 5,
+      "MaterialIndx": 0,
+      "LayerHitMask": {
+        "value": 535569
+      },
+      "SecondaryLayerMask": {
+        "value": 0
+      },
+      "Workflow": []
+    },
+    {
+      "s_type": "Pendulum",
+      "Rank": 6,
+      "UiName": "Pendulum",
+      "MaxRange": "Infinity",
+      "MaxHeight": "Infinity",
+      "ButtonIndx": 6,
+      "MaterialIndx": 0,
+      "LayerHitMask": {
+        "value": 1024
+      },
+      "SecondaryLayerMask": {
+        "value": 1
+      },
+      "Workflow": []
+    },
+    {
+      "s_type": "Remover",
+      "Rank": 8,
+      "UiName": "Delete Fact",
+      "MaxRange": "Infinity",
+      "MaxHeight": "Infinity",
+      "ButtonIndx": 8,
+      "MaterialIndx": 0,
+      "LayerHitMask": {
+        "value": 64512
+      },
+      "SecondaryLayerMask": {
+        "value": 0
+      },
+      "Workflow": []
+    }
+  ],
+  "name": "TechDemo B",
+  "path": null
+}
\ No newline at end of file