diff --git a/B2Program/LandingGear/GearsDoors/LandingGear_R6-visualisation.js b/B2Program/LandingGear/GearsDoors/LandingGear_R6-visualisation.js
index c9c1b778e966a8432920280fa23f005e8e2ef8a9..0ef6d32e96ef135bdf5118fa7cb0f6707c7c07c2 100644
--- a/B2Program/LandingGear/GearsDoors/LandingGear_R6-visualisation.js
+++ b/B2Program/LandingGear/GearsDoors/LandingGear_R6-visualisation.js
@@ -687,127 +687,111 @@ var _machine_events = {};
 var _svg_events = {};
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_retract_gear_skip"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_retract_gear_skip_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_retract_gear_skip_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_retract_gear_skip"]["gr"] = gr;
-
+_machine_events["open_valve_extend_gear"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_retract_gear_skip"].style.gridColumn="-1";
-_machine_events["env_retract_gear_skip"].innerHTML = "env_retract_gear_skip";
-_machine_events["env_retract_gear_skip"].parameterNames = ["gr", ];
-_machine_events["env_retract_gear_skip"].onclick = function() {
+_machine_events["open_valve_extend_gear"].style.gridColumn="-1";
+_machine_events["open_valve_extend_gear"].innerHTML = "open_valve_extend_gear";
+_machine_events["open_valve_extend_gear"].parameterNames = [];
+_machine_events["open_valve_extend_gear"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_retract_gear_skip"] == null ?? true) {
-      transition = _machine["_tr_env_retract_gear_skip"]();
-      _transition_list[index]["env_retract_gear_skip"] = transition;
+  if(_transition_list[index]?.["open_valve_extend_gear"] == null ?? true) {
+      transition = _machine["_tr_open_valve_extend_gear"]();
+      _transition_list[index]["open_valve_extend_gear"] = transition;
   } else {
-      transition = _transition_list[index]["env_retract_gear_skip"];
+      transition = _transition_list[index]["open_valve_extend_gear"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_retract_gear_skip is not enabled!");
+        alert("Event open_valve_extend_gear is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_retract_gear_skip(...parameters);
-    createHistoryElement("env_retract_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.open_valve_extend_gear(...parameters);
+    createHistoryElement("open_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_retract_gear_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_retract_gear_skip", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "open_valve_extend_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_retract_gear_skip"] = transition;
+        _transition_list[index]["open_valve_extend_gear"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_retract_gear_skip"].disabled = true;
+            _machine_events["open_valve_extend_gear"].disabled = true;
         }
-        createOptionList("env_retract_gear_skip", transition);
+        createOptionList("open_valve_extend_gear", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_retract_gear_skip"]);
+_operations_view.appendChild(_machine_events["open_valve_extend_gear"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_retract_gear"] = document.createElement("button");
+_machine_events["con_stop_stimulate_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_retract_gear"].style.gridColumn="-1";
-_machine_events["close_valve_retract_gear"].innerHTML = "close_valve_retract_gear";
-_machine_events["close_valve_retract_gear"].parameterNames = [];
-_machine_events["close_valve_retract_gear"].onclick = function() {
+_machine_events["con_stop_stimulate_general_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_general_valve"].innerHTML = "con_stop_stimulate_general_valve";
+_machine_events["con_stop_stimulate_general_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_general_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_retract_gear"] == null ?? true) {
-      transition = _machine["_tr_close_valve_retract_gear"]();
-      _transition_list[index]["close_valve_retract_gear"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_general_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_general_valve"]();
+      _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_retract_gear"];
+      transition = _transition_list[index]["con_stop_stimulate_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_retract_gear is not enabled!");
+        alert("Event con_stop_stimulate_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.close_valve_retract_gear(...parameters);
-    createHistoryElement("close_valve_retract_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_general_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_retract_gear", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -816,62 +800,62 @@ _machine_events["close_valve_retract_gear"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_retract_gear"] = transition;
+        _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_retract_gear"].disabled = true;
+            _machine_events["con_stop_stimulate_general_valve"].disabled = true;
         }
-        createOptionList("close_valve_retract_gear", transition);
+        createOptionList("con_stop_stimulate_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_retract_gear"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_general_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["evn_close_general_valve"] = document.createElement("button");
+_machine_events["evn_open_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["evn_close_general_valve"].style.gridColumn="-1";
-_machine_events["evn_close_general_valve"].innerHTML = "evn_close_general_valve";
-_machine_events["evn_close_general_valve"].parameterNames = [];
-_machine_events["evn_close_general_valve"].onclick = function() {
+_machine_events["evn_open_general_valve"].style.gridColumn="-1";
+_machine_events["evn_open_general_valve"].innerHTML = "evn_open_general_valve";
+_machine_events["evn_open_general_valve"].parameterNames = [];
+_machine_events["evn_open_general_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["evn_close_general_valve"] == null ?? true) {
-      transition = _machine["_tr_evn_close_general_valve"]();
-      _transition_list[index]["evn_close_general_valve"] = transition;
+  if(_transition_list[index]?.["evn_open_general_valve"] == null ?? true) {
+      transition = _machine["_tr_evn_open_general_valve"]();
+      _transition_list[index]["evn_open_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["evn_close_general_valve"];
+      transition = _transition_list[index]["evn_open_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event evn_close_general_valve is not enabled!");
+        alert("Event evn_open_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.evn_close_general_valve(...parameters);
-    createHistoryElement("evn_close_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.evn_open_general_valve(...parameters);
+    createHistoryElement("evn_open_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "evn_close_general_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "evn_open_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -880,62 +864,222 @@ _machine_events["evn_close_general_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["evn_close_general_valve"] = transition;
+        _transition_list[index]["evn_open_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["evn_close_general_valve"].disabled = true;
+            _machine_events["evn_open_general_valve"].disabled = true;
         }
-        createOptionList("evn_close_general_valve", transition);
+        createOptionList("evn_open_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["evn_close_general_valve"]);
+_operations_view.appendChild(_machine_events["evn_open_general_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_extend_gear"] = document.createElement("button");
+_machine_events["env_retract_gear_last"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_retract_gear_last_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_retract_gear_last_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_retract_gear_last"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_extend_gear"].style.gridColumn="-1";
-_machine_events["close_valve_extend_gear"].innerHTML = "close_valve_extend_gear";
-_machine_events["close_valve_extend_gear"].parameterNames = [];
-_machine_events["close_valve_extend_gear"].onclick = function() {
+_machine_events["env_retract_gear_last"].style.gridColumn="-1";
+_machine_events["env_retract_gear_last"].innerHTML = "env_retract_gear_last";
+_machine_events["env_retract_gear_last"].parameterNames = ["gr", ];
+_machine_events["env_retract_gear_last"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_extend_gear"] == null ?? true) {
-      transition = _machine["_tr_close_valve_extend_gear"]();
-      _transition_list[index]["close_valve_extend_gear"] = transition;
+  if(_transition_list[index]?.["env_retract_gear_last"] == null ?? true) {
+      transition = _machine["_tr_env_retract_gear_last"]();
+      _transition_list[index]["env_retract_gear_last"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_extend_gear"];
+      transition = _transition_list[index]["env_retract_gear_last"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_extend_gear is not enabled!");
+        alert("Event env_retract_gear_last is not enabled!");
+        return;
+    }
+  } else {
+    try  {
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+    } catch {
+        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+    if(! transition.elementOf(parameterTuple).booleanValue()) {
+        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+  }
+  try {
+    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ];
+    var returnValue = _machine.env_retract_gear_last(...parameters);
+    createHistoryElement("env_retract_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    let parametersJSON = {};
+    parametersJSON["gr"] = _machine_events["env_retract_gear_last"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_retract_gear_last", params: parametersJSON});
+    updateVisuals();
+  } catch (error) {
+    if(! error instanceof SelectError) {
+        throw error;
+    }
+    if(transition instanceof BSet) {
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        transition = transition.difference(new BSet(parameterTuple));
+        _transition_list[index]["env_retract_gear_last"] = transition;
+        if(transition.size().intValue() == 0) {
+            _machine_events["env_retract_gear_last"].disabled = true;
+        }
+        createOptionList("env_retract_gear_last", transition);
+    }
+    alert(error.message);
+  }
+}
+
+_operations_view.appendChild(_machine_events["env_retract_gear_last"]);
+
+
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["env_extend_gear_skip"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_extend_gear_skip_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_extend_gear_skip_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_extend_gear_skip"]["gr"] = gr;
+
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["env_extend_gear_skip"].style.gridColumn="-1";
+_machine_events["env_extend_gear_skip"].innerHTML = "env_extend_gear_skip";
+_machine_events["env_extend_gear_skip"].parameterNames = ["gr", ];
+_machine_events["env_extend_gear_skip"].onclick = function() {
+  var parameters = {};
+  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
+  var transition;
+  if(_transition_list[index]?.["env_extend_gear_skip"] == null ?? true) {
+      transition = _machine["_tr_env_extend_gear_skip"]();
+      _transition_list[index]["env_extend_gear_skip"] = transition;
+  } else {
+      transition = _transition_list[index]["env_extend_gear_skip"];
+  }
+  if(!(transition instanceof BSet)) {
+    if(!transition) {
+        alert("Event env_extend_gear_skip is not enabled!");
+        return;
+    }
+  } else {
+    try  {
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+    } catch {
+        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+    if(! transition.elementOf(parameterTuple).booleanValue()) {
+        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+  }
+  try {
+    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_extend_gear_skip(...parameters);
+    createHistoryElement("env_extend_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    let parametersJSON = {};
+    parametersJSON["gr"] = _machine_events["env_extend_gear_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_extend_gear_skip", params: parametersJSON});
+    updateVisuals();
+  } catch (error) {
+    if(! error instanceof SelectError) {
+        throw error;
+    }
+    if(transition instanceof BSet) {
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        transition = transition.difference(new BSet(parameterTuple));
+        _transition_list[index]["env_extend_gear_skip"] = transition;
+        if(transition.size().intValue() == 0) {
+            _machine_events["env_extend_gear_skip"].disabled = true;
+        }
+        createOptionList("env_extend_gear_skip", transition);
+    }
+    alert(error.message);
+  }
+}
+
+_operations_view.appendChild(_machine_events["env_extend_gear_skip"]);
+
+
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["land_plane"] = document.createElement("button");
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["land_plane"].style.gridColumn="-1";
+_machine_events["land_plane"].innerHTML = "land_plane";
+_machine_events["land_plane"].parameterNames = [];
+_machine_events["land_plane"].onclick = function() {
+  var parameters = {};
+  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
+  var transition;
+  if(_transition_list[index]?.["land_plane"] == null ?? true) {
+      transition = _machine["_tr_land_plane"]();
+      _transition_list[index]["land_plane"] = transition;
+  } else {
+      transition = _transition_list[index]["land_plane"];
+  }
+  if(!(transition instanceof BSet)) {
+    if(!transition) {
+        alert("Event land_plane is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.close_valve_extend_gear(...parameters);
-    createHistoryElement("close_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.land_plane(...parameters);
+    createHistoryElement("land_plane(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_extend_gear", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "land_plane", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -944,150 +1088,182 @@ _machine_events["close_valve_extend_gear"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_extend_gear"] = transition;
+        _transition_list[index]["land_plane"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_extend_gear"].disabled = true;
+            _machine_events["land_plane"].disabled = true;
         }
-        createOptionList("close_valve_extend_gear", transition);
+        createOptionList("land_plane", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_extend_gear"]);
+_operations_view.appendChild(_machine_events["land_plane"]);
 
 
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["env_open_analogical_switch"] = document.createElement("button");
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["env_open_door_last"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_open_door_last_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_open_door_last_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_open_door_last"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_open_analogical_switch"].style.gridColumn="-1";
-_machine_events["env_open_analogical_switch"].innerHTML = "env_open_analogical_switch";
-_machine_events["env_open_analogical_switch"].parameterNames = [];
-_machine_events["env_open_analogical_switch"].onclick = function() {
+_machine_events["env_open_door_last"].style.gridColumn="-1";
+_machine_events["env_open_door_last"].innerHTML = "env_open_door_last";
+_machine_events["env_open_door_last"].parameterNames = ["gr", ];
+_machine_events["env_open_door_last"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_open_analogical_switch"] == null ?? true) {
-      transition = _machine["_tr_env_open_analogical_switch"]();
-      _transition_list[index]["env_open_analogical_switch"] = transition;
+  if(_transition_list[index]?.["env_open_door_last"] == null ?? true) {
+      transition = _machine["_tr_env_open_door_last"]();
+      _transition_list[index]["env_open_door_last"] = transition;
   } else {
-      transition = _transition_list[index]["env_open_analogical_switch"];
+      transition = _transition_list[index]["env_open_door_last"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_open_analogical_switch is not enabled!");
+        alert("Event env_open_door_last is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.env_open_analogical_switch(...parameters);
-    createHistoryElement("env_open_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ];
+    var returnValue = _machine.env_open_door_last(...parameters);
+    createHistoryElement("env_open_door_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "env_open_analogical_switch", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_open_door_last"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_open_door_last", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_open_analogical_switch"] = transition;
+        _transition_list[index]["env_open_door_last"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_open_analogical_switch"].disabled = true;
+            _machine_events["env_open_door_last"].disabled = true;
         }
-        createOptionList("env_open_analogical_switch", transition);
+        createOptionList("env_open_door_last", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_open_analogical_switch"]);
+_operations_view.appendChild(_machine_events["env_open_door_last"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_door_open"] = document.createElement("button");
+_machine_events["env_extend_gear_last"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_extend_gear_last_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_extend_gear_last_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_extend_gear_last"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_door_open"].style.gridColumn="-1";
-_machine_events["close_valve_door_open"].innerHTML = "close_valve_door_open";
-_machine_events["close_valve_door_open"].parameterNames = [];
-_machine_events["close_valve_door_open"].onclick = function() {
+_machine_events["env_extend_gear_last"].style.gridColumn="-1";
+_machine_events["env_extend_gear_last"].innerHTML = "env_extend_gear_last";
+_machine_events["env_extend_gear_last"].parameterNames = ["gr", ];
+_machine_events["env_extend_gear_last"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_door_open"] == null ?? true) {
-      transition = _machine["_tr_close_valve_door_open"]();
-      _transition_list[index]["close_valve_door_open"] = transition;
+  if(_transition_list[index]?.["env_extend_gear_last"] == null ?? true) {
+      transition = _machine["_tr_env_extend_gear_last"]();
+      _transition_list[index]["env_extend_gear_last"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_door_open"];
+      transition = _transition_list[index]["env_extend_gear_last"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_door_open is not enabled!");
+        alert("Event env_extend_gear_last is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.close_valve_door_open(...parameters);
-    createHistoryElement("close_valve_door_open(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ];
+    var returnValue = _machine.env_extend_gear_last(...parameters);
+    createHistoryElement("env_extend_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_door_open", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_extend_gear_last"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_extend_gear_last", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_door_open"] = transition;
+        _transition_list[index]["env_extend_gear_last"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_door_open"].disabled = true;
+            _machine_events["env_extend_gear_last"].disabled = true;
         }
-        createOptionList("close_valve_door_open", transition);
+        createOptionList("env_extend_gear_last", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_door_open"]);
+_operations_view.appendChild(_machine_events["env_extend_gear_last"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_start_extending"] = document.createElement("button");
+_machine_events["env_open_door_skip"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -1095,119 +1271,119 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_extending_gr_datalist";
+_param_datalist.id="env_open_door_skip_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_extending_gr_datalist");
+gr.setAttribute("list", "env_open_door_skip_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_start_extending"]["gr"] = gr;
+_machine_events["env_open_door_skip"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_start_extending"].style.gridColumn="-1";
-_machine_events["env_start_extending"].innerHTML = "env_start_extending";
-_machine_events["env_start_extending"].parameterNames = ["gr", ];
-_machine_events["env_start_extending"].onclick = function() {
+_machine_events["env_open_door_skip"].style.gridColumn="-1";
+_machine_events["env_open_door_skip"].innerHTML = "env_open_door_skip";
+_machine_events["env_open_door_skip"].parameterNames = ["gr", ];
+_machine_events["env_open_door_skip"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_start_extending"] == null ?? true) {
-      transition = _machine["_tr_env_start_extending"]();
-      _transition_list[index]["env_start_extending"] = transition;
+  if(_transition_list[index]?.["env_open_door_skip"] == null ?? true) {
+      transition = _machine["_tr_env_open_door_skip"]();
+      _transition_list[index]["env_open_door_skip"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_extending"];
+      transition = _transition_list[index]["env_open_door_skip"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_extending is not enabled!");
+        alert("Event env_open_door_skip is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_extending(...parameters);
-    createHistoryElement("env_start_extending(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_open_door_skip(...parameters);
+    createHistoryElement("env_open_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_extending"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_extending", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_open_door_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_open_door_skip", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_extending"] = transition;
+        _transition_list[index]["env_open_door_skip"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_extending"].disabled = true;
+            _machine_events["env_open_door_skip"].disabled = true;
         }
-        createOptionList("env_start_extending", transition);
+        createOptionList("env_open_door_skip", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_extending"]);
+_operations_view.appendChild(_machine_events["env_open_door_skip"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_extend_gear_valve"] = document.createElement("button");
+_machine_events["close_valve_door_close"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stimulate_extend_gear_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_extend_gear_valve"].innerHTML = "con_stimulate_extend_gear_valve";
-_machine_events["con_stimulate_extend_gear_valve"].parameterNames = [];
-_machine_events["con_stimulate_extend_gear_valve"].onclick = function() {
+_machine_events["close_valve_door_close"].style.gridColumn="-1";
+_machine_events["close_valve_door_close"].innerHTML = "close_valve_door_close";
+_machine_events["close_valve_door_close"].parameterNames = [];
+_machine_events["close_valve_door_close"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stimulate_extend_gear_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_extend_gear_valve"]();
-      _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
+  if(_transition_list[index]?.["close_valve_door_close"] == null ?? true) {
+      transition = _machine["_tr_close_valve_door_close"]();
+      _transition_list[index]["close_valve_door_close"] = transition;
   } else {
-      transition = _transition_list[index]["con_stimulate_extend_gear_valve"];
+      transition = _transition_list[index]["close_valve_door_close"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stimulate_extend_gear_valve is not enabled!");
+        alert("Event close_valve_door_close is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stimulate_extend_gear_valve(...parameters);
-    createHistoryElement("con_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.close_valve_door_close(...parameters);
+    createHistoryElement("close_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_extend_gear_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_door_close", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1216,86 +1392,102 @@ _machine_events["con_stimulate_extend_gear_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
+        _transition_list[index]["close_valve_door_close"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_extend_gear_valve"].disabled = true;
+            _machine_events["close_valve_door_close"].disabled = true;
         }
-        createOptionList("con_stimulate_extend_gear_valve", transition);
+        createOptionList("close_valve_door_close", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stimulate_extend_gear_valve"]);
+_operations_view.appendChild(_machine_events["close_valve_door_close"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["toggle_handle_down"] = document.createElement("button");
+_machine_events["env_start_open_door"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_start_open_door_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_start_open_door_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_start_open_door"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["toggle_handle_down"].style.gridColumn="-1";
-_machine_events["toggle_handle_down"].innerHTML = "toggle_handle_down";
-_machine_events["toggle_handle_down"].parameterNames = [];
-_machine_events["toggle_handle_down"].onclick = function() {
+_machine_events["env_start_open_door"].style.gridColumn="-1";
+_machine_events["env_start_open_door"].innerHTML = "env_start_open_door";
+_machine_events["env_start_open_door"].parameterNames = ["gr", ];
+_machine_events["env_start_open_door"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["toggle_handle_down"] == null ?? true) {
-      transition = _machine["_tr_toggle_handle_down"]();
-      _transition_list[index]["toggle_handle_down"] = transition;
+  if(_transition_list[index]?.["env_start_open_door"] == null ?? true) {
+      transition = _machine["_tr_env_start_open_door"]();
+      _transition_list[index]["env_start_open_door"] = transition;
   } else {
-      transition = _transition_list[index]["toggle_handle_down"];
+      transition = _transition_list[index]["env_start_open_door"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event toggle_handle_down is not enabled!");
+        alert("Event env_start_open_door is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.toggle_handle_down(...parameters);
-    createHistoryElement("toggle_handle_down(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_open_door(...parameters);
+    createHistoryElement("env_start_open_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "toggle_handle_down", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_open_door"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_open_door", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["toggle_handle_down"] = transition;
+        _transition_list[index]["env_start_open_door"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["toggle_handle_down"].disabled = true;
+            _machine_events["env_start_open_door"].disabled = true;
         }
-        createOptionList("toggle_handle_down", transition);
+        createOptionList("env_start_open_door", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["toggle_handle_down"]);
+_operations_view.appendChild(_machine_events["env_start_open_door"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_close_door"] = document.createElement("button");
+_machine_events["env_start_close_door"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -1303,119 +1495,119 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_close_door_gr_datalist";
+_param_datalist.id="env_start_close_door_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_close_door_gr_datalist");
+gr.setAttribute("list", "env_start_close_door_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_close_door"]["gr"] = gr;
+_machine_events["env_start_close_door"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_close_door"].style.gridColumn="-1";
-_machine_events["env_close_door"].innerHTML = "env_close_door";
-_machine_events["env_close_door"].parameterNames = ["gr", ];
-_machine_events["env_close_door"].onclick = function() {
+_machine_events["env_start_close_door"].style.gridColumn="-1";
+_machine_events["env_start_close_door"].innerHTML = "env_start_close_door";
+_machine_events["env_start_close_door"].parameterNames = ["gr", ];
+_machine_events["env_start_close_door"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_close_door"] == null ?? true) {
-      transition = _machine["_tr_env_close_door"]();
-      _transition_list[index]["env_close_door"] = transition;
+  if(_transition_list[index]?.["env_start_close_door"] == null ?? true) {
+      transition = _machine["_tr_env_start_close_door"]();
+      _transition_list[index]["env_start_close_door"] = transition;
   } else {
-      transition = _transition_list[index]["env_close_door"];
+      transition = _transition_list[index]["env_start_close_door"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_close_door is not enabled!");
+        alert("Event env_start_close_door is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ];
-    var returnValue = _machine.env_close_door(...parameters);
-    createHistoryElement("env_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_close_door(...parameters);
+    createHistoryElement("env_start_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_close_door"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_close_door", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_close_door"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_close_door", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_close_door"] = transition;
+        _transition_list[index]["env_start_close_door"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_close_door"].disabled = true;
+            _machine_events["env_start_close_door"].disabled = true;
         }
-        createOptionList("env_close_door", transition);
+        createOptionList("env_start_close_door", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_close_door"]);
+_operations_view.appendChild(_machine_events["env_start_close_door"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["open_valve_door_close"] = document.createElement("button");
+_machine_events["toggle_handle_down"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["open_valve_door_close"].style.gridColumn="-1";
-_machine_events["open_valve_door_close"].innerHTML = "open_valve_door_close";
-_machine_events["open_valve_door_close"].parameterNames = [];
-_machine_events["open_valve_door_close"].onclick = function() {
+_machine_events["toggle_handle_down"].style.gridColumn="-1";
+_machine_events["toggle_handle_down"].innerHTML = "toggle_handle_down";
+_machine_events["toggle_handle_down"].parameterNames = [];
+_machine_events["toggle_handle_down"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["open_valve_door_close"] == null ?? true) {
-      transition = _machine["_tr_open_valve_door_close"]();
-      _transition_list[index]["open_valve_door_close"] = transition;
+  if(_transition_list[index]?.["toggle_handle_down"] == null ?? true) {
+      transition = _machine["_tr_toggle_handle_down"]();
+      _transition_list[index]["toggle_handle_down"] = transition;
   } else {
-      transition = _transition_list[index]["open_valve_door_close"];
+      transition = _transition_list[index]["toggle_handle_down"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event open_valve_door_close is not enabled!");
+        alert("Event toggle_handle_down is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.open_valve_door_close(...parameters);
-    createHistoryElement("open_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.toggle_handle_down(...parameters);
+    createHistoryElement("toggle_handle_down(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "open_valve_door_close", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "toggle_handle_down", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1424,62 +1616,62 @@ _machine_events["open_valve_door_close"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["open_valve_door_close"] = transition;
+        _transition_list[index]["toggle_handle_down"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["open_valve_door_close"].disabled = true;
+            _machine_events["toggle_handle_down"].disabled = true;
         }
-        createOptionList("open_valve_door_close", transition);
+        createOptionList("toggle_handle_down", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["open_valve_door_close"]);
+_operations_view.appendChild(_machine_events["toggle_handle_down"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_extend_gear_valve"] = document.createElement("button");
+_machine_events["close_valve_door_open"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_extend_gear_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_extend_gear_valve"].innerHTML = "con_stop_stimulate_extend_gear_valve";
-_machine_events["con_stop_stimulate_extend_gear_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_extend_gear_valve"].onclick = function() {
+_machine_events["close_valve_door_open"].style.gridColumn="-1";
+_machine_events["close_valve_door_open"].innerHTML = "close_valve_door_open";
+_machine_events["close_valve_door_open"].parameterNames = [];
+_machine_events["close_valve_door_open"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_extend_gear_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_extend_gear_valve"]();
-      _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
+  if(_transition_list[index]?.["close_valve_door_open"] == null ?? true) {
+      transition = _machine["_tr_close_valve_door_open"]();
+      _transition_list[index]["close_valve_door_open"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_extend_gear_valve"];
+      transition = _transition_list[index]["close_valve_door_open"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_extend_gear_valve is not enabled!");
+        alert("Event close_valve_door_open is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_extend_gear_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.close_valve_door_open(...parameters);
+    createHistoryElement("close_valve_door_open(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_extend_gear_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_door_open", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1488,62 +1680,62 @@ _machine_events["con_stop_stimulate_extend_gear_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
+        _transition_list[index]["close_valve_door_open"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_extend_gear_valve"].disabled = true;
+            _machine_events["close_valve_door_open"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_extend_gear_valve", transition);
+        createOptionList("close_valve_door_open", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_extend_gear_valve"]);
+_operations_view.appendChild(_machine_events["close_valve_door_open"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_open_door_valve"] = document.createElement("button");
+_machine_events["con_stimulate_close_door_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stimulate_open_door_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_open_door_valve"].innerHTML = "con_stimulate_open_door_valve";
-_machine_events["con_stimulate_open_door_valve"].parameterNames = [];
-_machine_events["con_stimulate_open_door_valve"].onclick = function() {
+_machine_events["con_stimulate_close_door_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_close_door_valve"].innerHTML = "con_stimulate_close_door_valve";
+_machine_events["con_stimulate_close_door_valve"].parameterNames = [];
+_machine_events["con_stimulate_close_door_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stimulate_open_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_open_door_valve"]();
-      _transition_list[index]["con_stimulate_open_door_valve"] = transition;
+  if(_transition_list[index]?.["con_stimulate_close_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_close_door_valve"]();
+      _transition_list[index]["con_stimulate_close_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["con_stimulate_open_door_valve"];
+      transition = _transition_list[index]["con_stimulate_close_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stimulate_open_door_valve is not enabled!");
+        alert("Event con_stimulate_close_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stimulate_open_door_valve(...parameters);
-    createHistoryElement("con_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stimulate_close_door_valve(...parameters);
+    createHistoryElement("con_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_open_door_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_close_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1552,17 +1744,17 @@ _machine_events["con_stimulate_open_door_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_open_door_valve"] = transition;
+        _transition_list[index]["con_stimulate_close_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_open_door_valve"].disabled = true;
+            _machine_events["con_stimulate_close_door_valve"].disabled = true;
         }
-        createOptionList("con_stimulate_open_door_valve", transition);
+        createOptionList("con_stimulate_close_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stimulate_open_door_valve"]);
+_operations_view.appendChild(_machine_events["con_stimulate_close_door_valve"]);
 
 
 _param_div = document.createElement("div");
@@ -1606,7 +1798,7 @@ _machine_events["con_stimulate_retract_gear_valve"].onclick = function() {
     var returnValue = _machine.con_stimulate_retract_gear_valve(...parameters);
     createHistoryElement("con_stimulate_retract_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "con_stimulate_retract_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1631,111 +1823,47 @@ _operations_view.appendChild(_machine_events["con_stimulate_retract_gear_valve"]
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_open_door_valve"] = document.createElement("button");
-_operations_view.appendChild(_param_div);
-
-
-_machine_events["con_stop_stimulate_open_door_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_open_door_valve"].innerHTML = "con_stop_stimulate_open_door_valve";
-_machine_events["con_stop_stimulate_open_door_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_open_door_valve"].onclick = function() {
-  var parameters = {};
-  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
-  var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_open_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_open_door_valve"]();
-      _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
-  } else {
-      transition = _transition_list[index]["con_stop_stimulate_open_door_valve"];
-  }
-  if(!(transition instanceof BSet)) {
-    if(!transition) {
-        alert("Event con_stop_stimulate_open_door_valve is not enabled!");
-        return;
-    }
-  } else {
-    try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
-    } catch {
-        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-    if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-  }
-  try {
-    var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_open_door_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-    let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_open_door_valve", params: parametersJSON});
-    updateVisuals();
-  } catch (error) {
-    if(! error instanceof SelectError) {
-        throw error;
-    }
-    if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
-        transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
-        if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_open_door_valve"].disabled = true;
-        }
-        createOptionList("con_stop_stimulate_open_door_valve", transition);
-    }
-    alert(error.message);
-  }
-}
-
-_operations_view.appendChild(_machine_events["con_stop_stimulate_open_door_valve"]);
-
-
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["env_close_analogical_switch"] = document.createElement("button");
+_machine_events["con_stimulate_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_close_analogical_switch"].style.gridColumn="-1";
-_machine_events["env_close_analogical_switch"].innerHTML = "env_close_analogical_switch";
-_machine_events["env_close_analogical_switch"].parameterNames = [];
-_machine_events["env_close_analogical_switch"].onclick = function() {
+_machine_events["con_stimulate_general_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_general_valve"].innerHTML = "con_stimulate_general_valve";
+_machine_events["con_stimulate_general_valve"].parameterNames = [];
+_machine_events["con_stimulate_general_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_close_analogical_switch"] == null ?? true) {
-      transition = _machine["_tr_env_close_analogical_switch"]();
-      _transition_list[index]["env_close_analogical_switch"] = transition;
+  if(_transition_list[index]?.["con_stimulate_general_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_general_valve"]();
+      _transition_list[index]["con_stimulate_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["env_close_analogical_switch"];
+      transition = _transition_list[index]["con_stimulate_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_close_analogical_switch is not enabled!");
+        alert("Event con_stimulate_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.env_close_analogical_switch(...parameters);
-    createHistoryElement("env_close_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stimulate_general_valve(...parameters);
+    createHistoryElement("con_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "env_close_analogical_switch", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1744,17 +1872,17 @@ _machine_events["env_close_analogical_switch"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_close_analogical_switch"] = transition;
+        _transition_list[index]["con_stimulate_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_close_analogical_switch"].disabled = true;
+            _machine_events["con_stimulate_general_valve"].disabled = true;
         }
-        createOptionList("env_close_analogical_switch", transition);
+        createOptionList("con_stimulate_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_close_analogical_switch"]);
+_operations_view.appendChild(_machine_events["con_stimulate_general_valve"]);
 
 
 _param_div = document.createElement("div");
@@ -1798,7 +1926,7 @@ _machine_events["open_valve_door_open"].onclick = function() {
     var returnValue = _machine.open_valve_door_open(...parameters);
     createHistoryElement("open_valve_door_open(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "open_valve_door_open", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1823,7 +1951,7 @@ _operations_view.appendChild(_machine_events["open_valve_door_open"]);
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_retract_gear_last"] = document.createElement("button");
+_machine_events["env_close_door"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -1831,74 +1959,74 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_retract_gear_last_gr_datalist";
+_param_datalist.id="env_close_door_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_retract_gear_last_gr_datalist");
+gr.setAttribute("list", "env_close_door_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_retract_gear_last"]["gr"] = gr;
+_machine_events["env_close_door"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_retract_gear_last"].style.gridColumn="-1";
-_machine_events["env_retract_gear_last"].innerHTML = "env_retract_gear_last";
-_machine_events["env_retract_gear_last"].parameterNames = ["gr", ];
-_machine_events["env_retract_gear_last"].onclick = function() {
+_machine_events["env_close_door"].style.gridColumn="-1";
+_machine_events["env_close_door"].innerHTML = "env_close_door";
+_machine_events["env_close_door"].parameterNames = ["gr", ];
+_machine_events["env_close_door"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_retract_gear_last"] == null ?? true) {
-      transition = _machine["_tr_env_retract_gear_last"]();
-      _transition_list[index]["env_retract_gear_last"] = transition;
+  if(_transition_list[index]?.["env_close_door"] == null ?? true) {
+      transition = _machine["_tr_env_close_door"]();
+      _transition_list[index]["env_close_door"] = transition;
   } else {
-      transition = _transition_list[index]["env_retract_gear_last"];
+      transition = _transition_list[index]["env_close_door"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_retract_gear_last is not enabled!");
+        alert("Event env_close_door is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ];
-    var returnValue = _machine.env_retract_gear_last(...parameters);
-    createHistoryElement("env_retract_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ];
+    var returnValue = _machine.env_close_door(...parameters);
+    createHistoryElement("env_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_retract_gear_last"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_retract_gear_last", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_close_door"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_close_door", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_retract_gear_last"] = transition;
+        _transition_list[index]["env_close_door"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_retract_gear_last"].disabled = true;
+            _machine_events["env_close_door"].disabled = true;
         }
-        createOptionList("env_retract_gear_last", transition);
+        createOptionList("env_close_door", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_retract_gear_last"]);
+_operations_view.appendChild(_machine_events["env_close_door"]);
 
 
 _param_div = document.createElement("div");
@@ -1942,7 +2070,7 @@ _machine_events["open_valve_retract_gear"].onclick = function() {
     var returnValue = _machine.open_valve_retract_gear(...parameters);
     createHistoryElement("open_valve_retract_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "open_valve_retract_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1967,111 +2095,47 @@ _operations_view.appendChild(_machine_events["open_valve_retract_gear"]);
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_close_door_valve"] = document.createElement("button");
-_operations_view.appendChild(_param_div);
-
-
-_machine_events["con_stimulate_close_door_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_close_door_valve"].innerHTML = "con_stimulate_close_door_valve";
-_machine_events["con_stimulate_close_door_valve"].parameterNames = [];
-_machine_events["con_stimulate_close_door_valve"].onclick = function() {
-  var parameters = {};
-  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
-  var transition;
-  if(_transition_list[index]?.["con_stimulate_close_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_close_door_valve"]();
-      _transition_list[index]["con_stimulate_close_door_valve"] = transition;
-  } else {
-      transition = _transition_list[index]["con_stimulate_close_door_valve"];
-  }
-  if(!(transition instanceof BSet)) {
-    if(!transition) {
-        alert("Event con_stimulate_close_door_valve is not enabled!");
-        return;
-    }
-  } else {
-    try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
-    } catch {
-        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-    if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-  }
-  try {
-    var parameters = [];
-    var returnValue = _machine.con_stimulate_close_door_valve(...parameters);
-    createHistoryElement("con_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-    let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_close_door_valve", params: parametersJSON});
-    updateVisuals();
-  } catch (error) {
-    if(! error instanceof SelectError) {
-        throw error;
-    }
-    if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
-        transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_close_door_valve"] = transition;
-        if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_close_door_valve"].disabled = true;
-        }
-        createOptionList("con_stimulate_close_door_valve", transition);
-    }
-    alert(error.message);
-  }
-}
-
-_operations_view.appendChild(_machine_events["con_stimulate_close_door_valve"]);
-
-
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["con_stop_stimulate_close_door_valve"] = document.createElement("button");
+_machine_events["env_close_analogical_switch"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_close_door_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_close_door_valve"].innerHTML = "con_stop_stimulate_close_door_valve";
-_machine_events["con_stop_stimulate_close_door_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_close_door_valve"].onclick = function() {
+_machine_events["env_close_analogical_switch"].style.gridColumn="-1";
+_machine_events["env_close_analogical_switch"].innerHTML = "env_close_analogical_switch";
+_machine_events["env_close_analogical_switch"].parameterNames = [];
+_machine_events["env_close_analogical_switch"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_close_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_close_door_valve"]();
-      _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
+  if(_transition_list[index]?.["env_close_analogical_switch"] == null ?? true) {
+      transition = _machine["_tr_env_close_analogical_switch"]();
+      _transition_list[index]["env_close_analogical_switch"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_close_door_valve"];
+      transition = _transition_list[index]["env_close_analogical_switch"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_close_door_valve is not enabled!");
+        alert("Event env_close_analogical_switch is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_close_door_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.env_close_analogical_switch(...parameters);
+    createHistoryElement("env_close_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_close_door_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_close_analogical_switch", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2080,22 +2144,22 @@ _machine_events["con_stop_stimulate_close_door_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
+        _transition_list[index]["env_close_analogical_switch"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_close_door_valve"].disabled = true;
+            _machine_events["env_close_analogical_switch"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_close_door_valve", transition);
+        createOptionList("env_close_analogical_switch", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_close_door_valve"]);
+_operations_view.appendChild(_machine_events["env_close_analogical_switch"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_start_open_door"] = document.createElement("button");
+_machine_events["env_start_retracting_first"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -2103,79 +2167,79 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_open_door_gr_datalist";
+_param_datalist.id="env_start_retracting_first_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_open_door_gr_datalist");
+gr.setAttribute("list", "env_start_retracting_first_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_start_open_door"]["gr"] = gr;
+_machine_events["env_start_retracting_first"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_start_open_door"].style.gridColumn="-1";
-_machine_events["env_start_open_door"].innerHTML = "env_start_open_door";
-_machine_events["env_start_open_door"].parameterNames = ["gr", ];
-_machine_events["env_start_open_door"].onclick = function() {
+_machine_events["env_start_retracting_first"].style.gridColumn="-1";
+_machine_events["env_start_retracting_first"].innerHTML = "env_start_retracting_first";
+_machine_events["env_start_retracting_first"].parameterNames = ["gr", ];
+_machine_events["env_start_retracting_first"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_start_open_door"] == null ?? true) {
-      transition = _machine["_tr_env_start_open_door"]();
-      _transition_list[index]["env_start_open_door"] = transition;
+  if(_transition_list[index]?.["env_start_retracting_first"] == null ?? true) {
+      transition = _machine["_tr_env_start_retracting_first"]();
+      _transition_list[index]["env_start_retracting_first"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_open_door"];
+      transition = _transition_list[index]["env_start_retracting_first"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_open_door is not enabled!");
+        alert("Event env_start_retracting_first is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_open_door(...parameters);
-    createHistoryElement("env_start_open_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_retracting_first(...parameters);
+    createHistoryElement("env_start_retracting_first(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_open_door"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_open_door", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_retracting_first"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_retracting_first", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_open_door"] = transition;
+        _transition_list[index]["env_start_retracting_first"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_open_door"].disabled = true;
+            _machine_events["env_start_retracting_first"].disabled = true;
         }
-        createOptionList("env_start_open_door", transition);
+        createOptionList("env_start_retracting_first", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_open_door"]);
+_operations_view.appendChild(_machine_events["env_start_retracting_first"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_open_door_last"] = document.createElement("button");
+_machine_events["env_retract_gear_skip"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -2183,119 +2247,119 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_open_door_last_gr_datalist";
+_param_datalist.id="env_retract_gear_skip_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_open_door_last_gr_datalist");
+gr.setAttribute("list", "env_retract_gear_skip_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_open_door_last"]["gr"] = gr;
+_machine_events["env_retract_gear_skip"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_open_door_last"].style.gridColumn="-1";
-_machine_events["env_open_door_last"].innerHTML = "env_open_door_last";
-_machine_events["env_open_door_last"].parameterNames = ["gr", ];
-_machine_events["env_open_door_last"].onclick = function() {
+_machine_events["env_retract_gear_skip"].style.gridColumn="-1";
+_machine_events["env_retract_gear_skip"].innerHTML = "env_retract_gear_skip";
+_machine_events["env_retract_gear_skip"].parameterNames = ["gr", ];
+_machine_events["env_retract_gear_skip"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_open_door_last"] == null ?? true) {
-      transition = _machine["_tr_env_open_door_last"]();
-      _transition_list[index]["env_open_door_last"] = transition;
+  if(_transition_list[index]?.["env_retract_gear_skip"] == null ?? true) {
+      transition = _machine["_tr_env_retract_gear_skip"]();
+      _transition_list[index]["env_retract_gear_skip"] = transition;
   } else {
-      transition = _transition_list[index]["env_open_door_last"];
+      transition = _transition_list[index]["env_retract_gear_skip"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_open_door_last is not enabled!");
+        alert("Event env_retract_gear_skip is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ];
-    var returnValue = _machine.env_open_door_last(...parameters);
-    createHistoryElement("env_open_door_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_retract_gear_skip(...parameters);
+    createHistoryElement("env_retract_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_open_door_last"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_open_door_last", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_retract_gear_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_retract_gear_skip", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_open_door_last"] = transition;
+        _transition_list[index]["env_retract_gear_skip"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_open_door_last"].disabled = true;
+            _machine_events["env_retract_gear_skip"].disabled = true;
         }
-        createOptionList("env_open_door_last", transition);
+        createOptionList("env_retract_gear_skip", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_open_door_last"]);
+_operations_view.appendChild(_machine_events["env_retract_gear_skip"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["land_plane"] = document.createElement("button");
+_machine_events["con_stop_stimulate_close_door_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["land_plane"].style.gridColumn="-1";
-_machine_events["land_plane"].innerHTML = "land_plane";
-_machine_events["land_plane"].parameterNames = [];
-_machine_events["land_plane"].onclick = function() {
+_machine_events["con_stop_stimulate_close_door_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_close_door_valve"].innerHTML = "con_stop_stimulate_close_door_valve";
+_machine_events["con_stop_stimulate_close_door_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_close_door_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["land_plane"] == null ?? true) {
-      transition = _machine["_tr_land_plane"]();
-      _transition_list[index]["land_plane"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_close_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_close_door_valve"]();
+      _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["land_plane"];
+      transition = _transition_list[index]["con_stop_stimulate_close_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event land_plane is not enabled!");
+        alert("Event con_stop_stimulate_close_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.land_plane(...parameters);
-    createHistoryElement("land_plane(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_close_door_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "land_plane", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_close_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2304,222 +2368,190 @@ _machine_events["land_plane"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["land_plane"] = transition;
+        _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["land_plane"].disabled = true;
+            _machine_events["con_stop_stimulate_close_door_valve"].disabled = true;
         }
-        createOptionList("land_plane", transition);
+        createOptionList("con_stop_stimulate_close_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["land_plane"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_close_door_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_start_retracting_first"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_retracting_first_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_retracting_first_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_start_retracting_first"]["gr"] = gr;
-
+_machine_events["con_stop_stimulate_extend_gear_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_start_retracting_first"].style.gridColumn="-1";
-_machine_events["env_start_retracting_first"].innerHTML = "env_start_retracting_first";
-_machine_events["env_start_retracting_first"].parameterNames = ["gr", ];
-_machine_events["env_start_retracting_first"].onclick = function() {
+_machine_events["con_stop_stimulate_extend_gear_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_extend_gear_valve"].innerHTML = "con_stop_stimulate_extend_gear_valve";
+_machine_events["con_stop_stimulate_extend_gear_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_extend_gear_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_start_retracting_first"] == null ?? true) {
-      transition = _machine["_tr_env_start_retracting_first"]();
-      _transition_list[index]["env_start_retracting_first"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_extend_gear_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_extend_gear_valve"]();
+      _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_retracting_first"];
+      transition = _transition_list[index]["con_stop_stimulate_extend_gear_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_retracting_first is not enabled!");
+        alert("Event con_stop_stimulate_extend_gear_valve is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_retracting_first(...parameters);
-    createHistoryElement("env_start_retracting_first(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.con_stop_stimulate_extend_gear_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_retracting_first"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_retracting_first", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_extend_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_retracting_first"] = transition;
+        _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_retracting_first"].disabled = true;
+            _machine_events["con_stop_stimulate_extend_gear_valve"].disabled = true;
         }
-        createOptionList("env_start_retracting_first", transition);
+        createOptionList("con_stop_stimulate_extend_gear_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_retracting_first"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_extend_gear_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_close_door_skip"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_close_door_skip_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_close_door_skip_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_close_door_skip"]["gr"] = gr;
-
+_machine_events["evn_close_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_close_door_skip"].style.gridColumn="-1";
-_machine_events["env_close_door_skip"].innerHTML = "env_close_door_skip";
-_machine_events["env_close_door_skip"].parameterNames = ["gr", ];
-_machine_events["env_close_door_skip"].onclick = function() {
+_machine_events["evn_close_general_valve"].style.gridColumn="-1";
+_machine_events["evn_close_general_valve"].innerHTML = "evn_close_general_valve";
+_machine_events["evn_close_general_valve"].parameterNames = [];
+_machine_events["evn_close_general_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_close_door_skip"] == null ?? true) {
-      transition = _machine["_tr_env_close_door_skip"]();
-      _transition_list[index]["env_close_door_skip"] = transition;
+  if(_transition_list[index]?.["evn_close_general_valve"] == null ?? true) {
+      transition = _machine["_tr_evn_close_general_valve"]();
+      _transition_list[index]["evn_close_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["env_close_door_skip"];
+      transition = _transition_list[index]["evn_close_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_close_door_skip is not enabled!");
+        alert("Event evn_close_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_close_door_skip(...parameters);
-    createHistoryElement("env_close_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.evn_close_general_valve(...parameters);
+    createHistoryElement("evn_close_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_close_door_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_close_door_skip", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "evn_close_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_close_door_skip"] = transition;
+        _transition_list[index]["evn_close_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_close_door_skip"].disabled = true;
+            _machine_events["evn_close_general_valve"].disabled = true;
         }
-        createOptionList("env_close_door_skip", transition);
+        createOptionList("evn_close_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_close_door_skip"]);
+_operations_view.appendChild(_machine_events["evn_close_general_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["begin_flying"] = document.createElement("button");
+_machine_events["con_stimulate_extend_gear_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["begin_flying"].style.gridColumn="-1";
-_machine_events["begin_flying"].innerHTML = "begin_flying";
-_machine_events["begin_flying"].parameterNames = [];
-_machine_events["begin_flying"].onclick = function() {
+_machine_events["con_stimulate_extend_gear_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_extend_gear_valve"].innerHTML = "con_stimulate_extend_gear_valve";
+_machine_events["con_stimulate_extend_gear_valve"].parameterNames = [];
+_machine_events["con_stimulate_extend_gear_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["begin_flying"] == null ?? true) {
-      transition = _machine["_tr_begin_flying"]();
-      _transition_list[index]["begin_flying"] = transition;
+  if(_transition_list[index]?.["con_stimulate_extend_gear_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_extend_gear_valve"]();
+      _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
   } else {
-      transition = _transition_list[index]["begin_flying"];
+      transition = _transition_list[index]["con_stimulate_extend_gear_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event begin_flying is not enabled!");
+        alert("Event con_stimulate_extend_gear_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.begin_flying(...parameters);
-    createHistoryElement("begin_flying(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stimulate_extend_gear_valve(...parameters);
+    createHistoryElement("con_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "begin_flying", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_extend_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2528,126 +2560,142 @@ _machine_events["begin_flying"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["begin_flying"] = transition;
+        _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["begin_flying"].disabled = true;
+            _machine_events["con_stimulate_extend_gear_valve"].disabled = true;
         }
-        createOptionList("begin_flying", transition);
+        createOptionList("con_stimulate_extend_gear_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["begin_flying"]);
+_operations_view.appendChild(_machine_events["con_stimulate_extend_gear_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["evn_open_general_valve"] = document.createElement("button");
-_operations_view.appendChild(_param_div);
+_machine_events["env_start_extending"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_start_extending_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_start_extending_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_start_extending"]["gr"] = gr;
 
+_operations_view.appendChild(_param_div);
 
-_machine_events["evn_open_general_valve"].style.gridColumn="-1";
-_machine_events["evn_open_general_valve"].innerHTML = "evn_open_general_valve";
-_machine_events["evn_open_general_valve"].parameterNames = [];
-_machine_events["evn_open_general_valve"].onclick = function() {
+
+_machine_events["env_start_extending"].style.gridColumn="-1";
+_machine_events["env_start_extending"].innerHTML = "env_start_extending";
+_machine_events["env_start_extending"].parameterNames = ["gr", ];
+_machine_events["env_start_extending"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["evn_open_general_valve"] == null ?? true) {
-      transition = _machine["_tr_evn_open_general_valve"]();
-      _transition_list[index]["evn_open_general_valve"] = transition;
+  if(_transition_list[index]?.["env_start_extending"] == null ?? true) {
+      transition = _machine["_tr_env_start_extending"]();
+      _transition_list[index]["env_start_extending"] = transition;
   } else {
-      transition = _transition_list[index]["evn_open_general_valve"];
+      transition = _transition_list[index]["env_start_extending"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event evn_open_general_valve is not enabled!");
+        alert("Event env_start_extending is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.evn_open_general_valve(...parameters);
-    createHistoryElement("evn_open_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_extending(...parameters);
+    createHistoryElement("env_start_extending(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "evn_open_general_valve", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_extending"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_extending", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["evn_open_general_valve"] = transition;
+        _transition_list[index]["env_start_extending"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["evn_open_general_valve"].disabled = true;
+            _machine_events["env_start_extending"].disabled = true;
         }
-        createOptionList("evn_open_general_valve", transition);
+        createOptionList("env_start_extending", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["evn_open_general_valve"]);
+_operations_view.appendChild(_machine_events["env_start_extending"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_door_close"] = document.createElement("button");
+_machine_events["open_valve_door_close"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_door_close"].style.gridColumn="-1";
-_machine_events["close_valve_door_close"].innerHTML = "close_valve_door_close";
-_machine_events["close_valve_door_close"].parameterNames = [];
-_machine_events["close_valve_door_close"].onclick = function() {
+_machine_events["open_valve_door_close"].style.gridColumn="-1";
+_machine_events["open_valve_door_close"].innerHTML = "open_valve_door_close";
+_machine_events["open_valve_door_close"].parameterNames = [];
+_machine_events["open_valve_door_close"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_door_close"] == null ?? true) {
-      transition = _machine["_tr_close_valve_door_close"]();
-      _transition_list[index]["close_valve_door_close"] = transition;
+  if(_transition_list[index]?.["open_valve_door_close"] == null ?? true) {
+      transition = _machine["_tr_open_valve_door_close"]();
+      _transition_list[index]["open_valve_door_close"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_door_close"];
+      transition = _transition_list[index]["open_valve_door_close"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_door_close is not enabled!");
+        alert("Event open_valve_door_close is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.close_valve_door_close(...parameters);
-    createHistoryElement("close_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.open_valve_door_close(...parameters);
+    createHistoryElement("open_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_door_close", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "open_valve_door_close", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2656,62 +2704,62 @@ _machine_events["close_valve_door_close"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_door_close"] = transition;
+        _transition_list[index]["open_valve_door_close"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_door_close"].disabled = true;
+            _machine_events["open_valve_door_close"].disabled = true;
         }
-        createOptionList("close_valve_door_close", transition);
+        createOptionList("open_valve_door_close", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_door_close"]);
+_operations_view.appendChild(_machine_events["open_valve_door_close"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_general_valve"] = document.createElement("button");
+_machine_events["close_valve_retract_gear"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stimulate_general_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_general_valve"].innerHTML = "con_stimulate_general_valve";
-_machine_events["con_stimulate_general_valve"].parameterNames = [];
-_machine_events["con_stimulate_general_valve"].onclick = function() {
+_machine_events["close_valve_retract_gear"].style.gridColumn="-1";
+_machine_events["close_valve_retract_gear"].innerHTML = "close_valve_retract_gear";
+_machine_events["close_valve_retract_gear"].parameterNames = [];
+_machine_events["close_valve_retract_gear"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stimulate_general_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_general_valve"]();
-      _transition_list[index]["con_stimulate_general_valve"] = transition;
+  if(_transition_list[index]?.["close_valve_retract_gear"] == null ?? true) {
+      transition = _machine["_tr_close_valve_retract_gear"]();
+      _transition_list[index]["close_valve_retract_gear"] = transition;
   } else {
-      transition = _transition_list[index]["con_stimulate_general_valve"];
+      transition = _transition_list[index]["close_valve_retract_gear"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stimulate_general_valve is not enabled!");
+        alert("Event close_valve_retract_gear is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stimulate_general_valve(...parameters);
-    createHistoryElement("con_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.close_valve_retract_gear(...parameters);
+    createHistoryElement("close_valve_retract_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_general_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_retract_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2720,62 +2768,62 @@ _machine_events["con_stimulate_general_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_general_valve"] = transition;
+        _transition_list[index]["close_valve_retract_gear"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_general_valve"].disabled = true;
+            _machine_events["close_valve_retract_gear"].disabled = true;
         }
-        createOptionList("con_stimulate_general_valve", transition);
+        createOptionList("close_valve_retract_gear", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stimulate_general_valve"]);
+_operations_view.appendChild(_machine_events["close_valve_retract_gear"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_general_valve"] = document.createElement("button");
+_machine_events["con_stop_stimulate_open_door_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_general_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_general_valve"].innerHTML = "con_stop_stimulate_general_valve";
-_machine_events["con_stop_stimulate_general_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_general_valve"].onclick = function() {
+_machine_events["con_stop_stimulate_open_door_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_open_door_valve"].innerHTML = "con_stop_stimulate_open_door_valve";
+_machine_events["con_stop_stimulate_open_door_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_open_door_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_general_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_general_valve"]();
-      _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_open_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_open_door_valve"]();
+      _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_general_valve"];
+      transition = _transition_list[index]["con_stop_stimulate_open_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_general_valve is not enabled!");
+        alert("Event con_stop_stimulate_open_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_general_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_open_door_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_general_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_open_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2784,22 +2832,22 @@ _machine_events["con_stop_stimulate_general_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
+        _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_general_valve"].disabled = true;
+            _machine_events["con_stop_stimulate_open_door_valve"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_general_valve", transition);
+        createOptionList("con_stop_stimulate_open_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_general_valve"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_open_door_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_extend_gear_last"] = document.createElement("button");
+_machine_events["env_close_door_skip"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -2807,279 +2855,247 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_extend_gear_last_gr_datalist";
+_param_datalist.id="env_close_door_skip_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_extend_gear_last_gr_datalist");
+gr.setAttribute("list", "env_close_door_skip_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_extend_gear_last"]["gr"] = gr;
+_machine_events["env_close_door_skip"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_extend_gear_last"].style.gridColumn="-1";
-_machine_events["env_extend_gear_last"].innerHTML = "env_extend_gear_last";
-_machine_events["env_extend_gear_last"].parameterNames = ["gr", ];
-_machine_events["env_extend_gear_last"].onclick = function() {
+_machine_events["env_close_door_skip"].style.gridColumn="-1";
+_machine_events["env_close_door_skip"].innerHTML = "env_close_door_skip";
+_machine_events["env_close_door_skip"].parameterNames = ["gr", ];
+_machine_events["env_close_door_skip"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_extend_gear_last"] == null ?? true) {
-      transition = _machine["_tr_env_extend_gear_last"]();
-      _transition_list[index]["env_extend_gear_last"] = transition;
+  if(_transition_list[index]?.["env_close_door_skip"] == null ?? true) {
+      transition = _machine["_tr_env_close_door_skip"]();
+      _transition_list[index]["env_close_door_skip"] = transition;
   } else {
-      transition = _transition_list[index]["env_extend_gear_last"];
+      transition = _transition_list[index]["env_close_door_skip"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_extend_gear_last is not enabled!");
+        alert("Event env_close_door_skip is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ];
-    var returnValue = _machine.env_extend_gear_last(...parameters);
-    createHistoryElement("env_extend_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_close_door_skip(...parameters);
+    createHistoryElement("env_close_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_extend_gear_last"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_extend_gear_last", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_close_door_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_close_door_skip", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_extend_gear_last"] = transition;
+        _transition_list[index]["env_close_door_skip"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_extend_gear_last"].disabled = true;
+            _machine_events["env_close_door_skip"].disabled = true;
         }
-        createOptionList("env_extend_gear_last", transition);
+        createOptionList("env_close_door_skip", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_extend_gear_last"]);
+_operations_view.appendChild(_machine_events["env_close_door_skip"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_extend_gear_skip"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_extend_gear_skip_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_extend_gear_skip_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_extend_gear_skip"]["gr"] = gr;
-
+_machine_events["begin_flying"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_extend_gear_skip"].style.gridColumn="-1";
-_machine_events["env_extend_gear_skip"].innerHTML = "env_extend_gear_skip";
-_machine_events["env_extend_gear_skip"].parameterNames = ["gr", ];
-_machine_events["env_extend_gear_skip"].onclick = function() {
+_machine_events["begin_flying"].style.gridColumn="-1";
+_machine_events["begin_flying"].innerHTML = "begin_flying";
+_machine_events["begin_flying"].parameterNames = [];
+_machine_events["begin_flying"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_extend_gear_skip"] == null ?? true) {
-      transition = _machine["_tr_env_extend_gear_skip"]();
-      _transition_list[index]["env_extend_gear_skip"] = transition;
+  if(_transition_list[index]?.["begin_flying"] == null ?? true) {
+      transition = _machine["_tr_begin_flying"]();
+      _transition_list[index]["begin_flying"] = transition;
   } else {
-      transition = _transition_list[index]["env_extend_gear_skip"];
+      transition = _transition_list[index]["begin_flying"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_extend_gear_skip is not enabled!");
+        alert("Event begin_flying is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_extend_gear_skip(...parameters);
-    createHistoryElement("env_extend_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.begin_flying(...parameters);
+    createHistoryElement("begin_flying(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_extend_gear_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_extend_gear_skip", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "begin_flying", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_extend_gear_skip"] = transition;
+        _transition_list[index]["begin_flying"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_extend_gear_skip"].disabled = true;
+            _machine_events["begin_flying"].disabled = true;
         }
-        createOptionList("env_extend_gear_skip", transition);
+        createOptionList("begin_flying", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_extend_gear_skip"]);
+_operations_view.appendChild(_machine_events["begin_flying"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_start_close_door"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_close_door_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_close_door_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_start_close_door"]["gr"] = gr;
-
+_machine_events["toggle_handle_up"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_start_close_door"].style.gridColumn="-1";
-_machine_events["env_start_close_door"].innerHTML = "env_start_close_door";
-_machine_events["env_start_close_door"].parameterNames = ["gr", ];
-_machine_events["env_start_close_door"].onclick = function() {
+_machine_events["toggle_handle_up"].style.gridColumn="-1";
+_machine_events["toggle_handle_up"].innerHTML = "toggle_handle_up";
+_machine_events["toggle_handle_up"].parameterNames = [];
+_machine_events["toggle_handle_up"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_start_close_door"] == null ?? true) {
-      transition = _machine["_tr_env_start_close_door"]();
-      _transition_list[index]["env_start_close_door"] = transition;
+  if(_transition_list[index]?.["toggle_handle_up"] == null ?? true) {
+      transition = _machine["_tr_toggle_handle_up"]();
+      _transition_list[index]["toggle_handle_up"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_close_door"];
+      transition = _transition_list[index]["toggle_handle_up"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_close_door is not enabled!");
+        alert("Event toggle_handle_up is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_close_door(...parameters);
-    createHistoryElement("env_start_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.toggle_handle_up(...parameters);
+    createHistoryElement("toggle_handle_up(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_close_door"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_close_door", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "toggle_handle_up", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_close_door"] = transition;
+        _transition_list[index]["toggle_handle_up"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_close_door"].disabled = true;
+            _machine_events["toggle_handle_up"].disabled = true;
         }
-        createOptionList("env_start_close_door", transition);
+        createOptionList("toggle_handle_up", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_close_door"]);
+_operations_view.appendChild(_machine_events["toggle_handle_up"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["open_valve_extend_gear"] = document.createElement("button");
+_machine_events["close_valve_extend_gear"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["open_valve_extend_gear"].style.gridColumn="-1";
-_machine_events["open_valve_extend_gear"].innerHTML = "open_valve_extend_gear";
-_machine_events["open_valve_extend_gear"].parameterNames = [];
-_machine_events["open_valve_extend_gear"].onclick = function() {
+_machine_events["close_valve_extend_gear"].style.gridColumn="-1";
+_machine_events["close_valve_extend_gear"].innerHTML = "close_valve_extend_gear";
+_machine_events["close_valve_extend_gear"].parameterNames = [];
+_machine_events["close_valve_extend_gear"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["open_valve_extend_gear"] == null ?? true) {
-      transition = _machine["_tr_open_valve_extend_gear"]();
-      _transition_list[index]["open_valve_extend_gear"] = transition;
+  if(_transition_list[index]?.["close_valve_extend_gear"] == null ?? true) {
+      transition = _machine["_tr_close_valve_extend_gear"]();
+      _transition_list[index]["close_valve_extend_gear"] = transition;
   } else {
-      transition = _transition_list[index]["open_valve_extend_gear"];
+      transition = _transition_list[index]["close_valve_extend_gear"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event open_valve_extend_gear is not enabled!");
+        alert("Event close_valve_extend_gear is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.open_valve_extend_gear(...parameters);
-    createHistoryElement("open_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.close_valve_extend_gear(...parameters);
+    createHistoryElement("close_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "open_valve_extend_gear", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_extend_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -3088,62 +3104,62 @@ _machine_events["open_valve_extend_gear"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["open_valve_extend_gear"] = transition;
+        _transition_list[index]["close_valve_extend_gear"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["open_valve_extend_gear"].disabled = true;
+            _machine_events["close_valve_extend_gear"].disabled = true;
         }
-        createOptionList("open_valve_extend_gear", transition);
+        createOptionList("close_valve_extend_gear", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["open_valve_extend_gear"]);
+_operations_view.appendChild(_machine_events["close_valve_extend_gear"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_retract_gear_valve"] = document.createElement("button");
+_machine_events["con_stimulate_open_door_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_retract_gear_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_retract_gear_valve"].innerHTML = "con_stop_stimulate_retract_gear_valve";
-_machine_events["con_stop_stimulate_retract_gear_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_retract_gear_valve"].onclick = function() {
+_machine_events["con_stimulate_open_door_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_open_door_valve"].innerHTML = "con_stimulate_open_door_valve";
+_machine_events["con_stimulate_open_door_valve"].parameterNames = [];
+_machine_events["con_stimulate_open_door_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_retract_gear_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_retract_gear_valve"]();
-      _transition_list[index]["con_stop_stimulate_retract_gear_valve"] = transition;
+  if(_transition_list[index]?.["con_stimulate_open_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_open_door_valve"]();
+      _transition_list[index]["con_stimulate_open_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_retract_gear_valve"];
+      transition = _transition_list[index]["con_stimulate_open_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_retract_gear_valve is not enabled!");
+        alert("Event con_stimulate_open_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_retract_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_retract_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_retract_gear_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_retract_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stimulate_open_door_valve(...parameters);
+    createHistoryElement("con_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_retract_gear_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_open_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -3152,142 +3168,126 @@ _machine_events["con_stop_stimulate_retract_gear_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_retract_gear_valve"] = transition;
+        _transition_list[index]["con_stimulate_open_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_retract_gear_valve"].disabled = true;
+            _machine_events["con_stimulate_open_door_valve"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_retract_gear_valve", transition);
+        createOptionList("con_stimulate_open_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_retract_gear_valve"]);
+_operations_view.appendChild(_machine_events["con_stimulate_open_door_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_open_door_skip"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_open_door_skip_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_open_door_skip_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_open_door_skip"]["gr"] = gr;
-
+_machine_events["env_open_analogical_switch"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_open_door_skip"].style.gridColumn="-1";
-_machine_events["env_open_door_skip"].innerHTML = "env_open_door_skip";
-_machine_events["env_open_door_skip"].parameterNames = ["gr", ];
-_machine_events["env_open_door_skip"].onclick = function() {
+_machine_events["env_open_analogical_switch"].style.gridColumn="-1";
+_machine_events["env_open_analogical_switch"].innerHTML = "env_open_analogical_switch";
+_machine_events["env_open_analogical_switch"].parameterNames = [];
+_machine_events["env_open_analogical_switch"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_open_door_skip"] == null ?? true) {
-      transition = _machine["_tr_env_open_door_skip"]();
-      _transition_list[index]["env_open_door_skip"] = transition;
+  if(_transition_list[index]?.["env_open_analogical_switch"] == null ?? true) {
+      transition = _machine["_tr_env_open_analogical_switch"]();
+      _transition_list[index]["env_open_analogical_switch"] = transition;
   } else {
-      transition = _transition_list[index]["env_open_door_skip"];
+      transition = _transition_list[index]["env_open_analogical_switch"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_open_door_skip is not enabled!");
+        alert("Event env_open_analogical_switch is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_open_door_skip(...parameters);
-    createHistoryElement("env_open_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.env_open_analogical_switch(...parameters);
+    createHistoryElement("env_open_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_open_door_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_open_door_skip", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_open_analogical_switch", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_open_door_skip"] = transition;
+        _transition_list[index]["env_open_analogical_switch"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_open_door_skip"].disabled = true;
+            _machine_events["env_open_analogical_switch"].disabled = true;
         }
-        createOptionList("env_open_door_skip", transition);
+        createOptionList("env_open_analogical_switch", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_open_door_skip"]);
+_operations_view.appendChild(_machine_events["env_open_analogical_switch"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["toggle_handle_up"] = document.createElement("button");
+_machine_events["con_stop_stimulate_retract_gear_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["toggle_handle_up"].style.gridColumn="-1";
-_machine_events["toggle_handle_up"].innerHTML = "toggle_handle_up";
-_machine_events["toggle_handle_up"].parameterNames = [];
-_machine_events["toggle_handle_up"].onclick = function() {
+_machine_events["con_stop_stimulate_retract_gear_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_retract_gear_valve"].innerHTML = "con_stop_stimulate_retract_gear_valve";
+_machine_events["con_stop_stimulate_retract_gear_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_retract_gear_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["toggle_handle_up"] == null ?? true) {
-      transition = _machine["_tr_toggle_handle_up"]();
-      _transition_list[index]["toggle_handle_up"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_retract_gear_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_retract_gear_valve"]();
+      _transition_list[index]["con_stop_stimulate_retract_gear_valve"] = transition;
   } else {
-      transition = _transition_list[index]["toggle_handle_up"];
+      transition = _transition_list[index]["con_stop_stimulate_retract_gear_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event toggle_handle_up is not enabled!");
+        alert("Event con_stop_stimulate_retract_gear_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_retract_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_retract_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.toggle_handle_up(...parameters);
-    createHistoryElement("toggle_handle_up(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_retract_gear_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_retract_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "toggle_handle_up", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_retract_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -3296,17 +3296,17 @@ _machine_events["toggle_handle_up"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["toggle_handle_up"] = transition;
+        _transition_list[index]["con_stop_stimulate_retract_gear_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["toggle_handle_up"].disabled = true;
+            _machine_events["con_stop_stimulate_retract_gear_valve"].disabled = true;
         }
-        createOptionList("toggle_handle_up", transition);
+        createOptionList("con_stop_stimulate_retract_gear_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["toggle_handle_up"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_retract_gear_valve"]);
 
 
 
@@ -3329,8 +3329,7 @@ function displayTrace(trace) {
       let parameters = Object.keys(transition.params).map(param => _machine_events[transition.name][param].parseValue(transition.params[param]))
       let returnValue = _machine[transition.name](...parameters);
       createHistoryElement(transition.name + "(" + parameters.join(", ") + ")" + (returnValue? " (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-      let parametersJSON = {};
-
+      let parametersJSON = transition.params;
       _current_trace.push({name: transition.name, params: parametersJSON});
     }
     updateVisuals();
diff --git a/B2Program/LandingGear/HydraulicCircuit/LandingGear_R6-visualisation.js b/B2Program/LandingGear/HydraulicCircuit/LandingGear_R6-visualisation.js
index 64c8f45afc55f0ac1d549c118024680703966f92..946b6fd09192559dde88f62bc02e6d435b704a44 100644
--- a/B2Program/LandingGear/HydraulicCircuit/LandingGear_R6-visualisation.js
+++ b/B2Program/LandingGear/HydraulicCircuit/LandingGear_R6-visualisation.js
@@ -848,127 +848,111 @@ var _machine_events = {};
 var _svg_events = {};
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_retract_gear_skip"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_retract_gear_skip_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_retract_gear_skip_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_retract_gear_skip"]["gr"] = gr;
-
+_machine_events["open_valve_extend_gear"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_retract_gear_skip"].style.gridColumn="-1";
-_machine_events["env_retract_gear_skip"].innerHTML = "env_retract_gear_skip";
-_machine_events["env_retract_gear_skip"].parameterNames = ["gr", ];
-_machine_events["env_retract_gear_skip"].onclick = function() {
+_machine_events["open_valve_extend_gear"].style.gridColumn="-1";
+_machine_events["open_valve_extend_gear"].innerHTML = "open_valve_extend_gear";
+_machine_events["open_valve_extend_gear"].parameterNames = [];
+_machine_events["open_valve_extend_gear"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_retract_gear_skip"] == null ?? true) {
-      transition = _machine["_tr_env_retract_gear_skip"]();
-      _transition_list[index]["env_retract_gear_skip"] = transition;
+  if(_transition_list[index]?.["open_valve_extend_gear"] == null ?? true) {
+      transition = _machine["_tr_open_valve_extend_gear"]();
+      _transition_list[index]["open_valve_extend_gear"] = transition;
   } else {
-      transition = _transition_list[index]["env_retract_gear_skip"];
+      transition = _transition_list[index]["open_valve_extend_gear"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_retract_gear_skip is not enabled!");
+        alert("Event open_valve_extend_gear is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_retract_gear_skip(...parameters);
-    createHistoryElement("env_retract_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.open_valve_extend_gear(...parameters);
+    createHistoryElement("open_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_retract_gear_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_retract_gear_skip", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "open_valve_extend_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_retract_gear_skip"] = transition;
+        _transition_list[index]["open_valve_extend_gear"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_retract_gear_skip"].disabled = true;
+            _machine_events["open_valve_extend_gear"].disabled = true;
         }
-        createOptionList("env_retract_gear_skip", transition);
+        createOptionList("open_valve_extend_gear", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_retract_gear_skip"]);
+_operations_view.appendChild(_machine_events["open_valve_extend_gear"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_retract_gear"] = document.createElement("button");
+_machine_events["con_stop_stimulate_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_retract_gear"].style.gridColumn="-1";
-_machine_events["close_valve_retract_gear"].innerHTML = "close_valve_retract_gear";
-_machine_events["close_valve_retract_gear"].parameterNames = [];
-_machine_events["close_valve_retract_gear"].onclick = function() {
+_machine_events["con_stop_stimulate_general_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_general_valve"].innerHTML = "con_stop_stimulate_general_valve";
+_machine_events["con_stop_stimulate_general_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_general_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_retract_gear"] == null ?? true) {
-      transition = _machine["_tr_close_valve_retract_gear"]();
-      _transition_list[index]["close_valve_retract_gear"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_general_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_general_valve"]();
+      _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_retract_gear"];
+      transition = _transition_list[index]["con_stop_stimulate_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_retract_gear is not enabled!");
+        alert("Event con_stop_stimulate_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.close_valve_retract_gear(...parameters);
-    createHistoryElement("close_valve_retract_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_general_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_retract_gear", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -977,62 +961,62 @@ _machine_events["close_valve_retract_gear"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_retract_gear"] = transition;
+        _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_retract_gear"].disabled = true;
+            _machine_events["con_stop_stimulate_general_valve"].disabled = true;
         }
-        createOptionList("close_valve_retract_gear", transition);
+        createOptionList("con_stop_stimulate_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_retract_gear"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_general_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["evn_close_general_valve"] = document.createElement("button");
+_machine_events["evn_open_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["evn_close_general_valve"].style.gridColumn="-1";
-_machine_events["evn_close_general_valve"].innerHTML = "evn_close_general_valve";
-_machine_events["evn_close_general_valve"].parameterNames = [];
-_machine_events["evn_close_general_valve"].onclick = function() {
+_machine_events["evn_open_general_valve"].style.gridColumn="-1";
+_machine_events["evn_open_general_valve"].innerHTML = "evn_open_general_valve";
+_machine_events["evn_open_general_valve"].parameterNames = [];
+_machine_events["evn_open_general_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["evn_close_general_valve"] == null ?? true) {
-      transition = _machine["_tr_evn_close_general_valve"]();
-      _transition_list[index]["evn_close_general_valve"] = transition;
+  if(_transition_list[index]?.["evn_open_general_valve"] == null ?? true) {
+      transition = _machine["_tr_evn_open_general_valve"]();
+      _transition_list[index]["evn_open_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["evn_close_general_valve"];
+      transition = _transition_list[index]["evn_open_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event evn_close_general_valve is not enabled!");
+        alert("Event evn_open_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.evn_close_general_valve(...parameters);
-    createHistoryElement("evn_close_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.evn_open_general_valve(...parameters);
+    createHistoryElement("evn_open_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "evn_close_general_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "evn_open_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1041,243 +1025,222 @@ _machine_events["evn_close_general_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["evn_close_general_valve"] = transition;
+        _transition_list[index]["evn_open_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["evn_close_general_valve"].disabled = true;
+            _machine_events["evn_open_general_valve"].disabled = true;
         }
-        createOptionList("evn_close_general_valve", transition);
+        createOptionList("evn_open_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["evn_close_general_valve"]);
+_operations_view.appendChild(_machine_events["evn_open_general_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_extend_gear"] = document.createElement("button");
+_machine_events["env_retract_gear_last"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_retract_gear_last_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_retract_gear_last_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_retract_gear_last"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_extend_gear"].style.gridColumn="-1";
-_machine_events["close_valve_extend_gear"].innerHTML = "close_valve_extend_gear";
-_machine_events["close_valve_extend_gear"].parameterNames = [];
-_machine_events["close_valve_extend_gear"].onclick = function() {
+_machine_events["env_retract_gear_last"].style.gridColumn="-1";
+_machine_events["env_retract_gear_last"].innerHTML = "env_retract_gear_last";
+_machine_events["env_retract_gear_last"].parameterNames = ["gr", ];
+_machine_events["env_retract_gear_last"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_extend_gear"] == null ?? true) {
-      transition = _machine["_tr_close_valve_extend_gear"]();
-      _transition_list[index]["close_valve_extend_gear"] = transition;
+  if(_transition_list[index]?.["env_retract_gear_last"] == null ?? true) {
+      transition = _machine["_tr_env_retract_gear_last"]();
+      _transition_list[index]["env_retract_gear_last"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_extend_gear"];
+      transition = _transition_list[index]["env_retract_gear_last"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_extend_gear is not enabled!");
+        alert("Event env_retract_gear_last is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.close_valve_extend_gear(...parameters);
-    createHistoryElement("close_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ];
+    var returnValue = _machine.env_retract_gear_last(...parameters);
+    createHistoryElement("env_retract_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_extend_gear", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_retract_gear_last"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_retract_gear_last", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_extend_gear"] = transition;
+        _transition_list[index]["env_retract_gear_last"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_extend_gear"].disabled = true;
+            _machine_events["env_retract_gear_last"].disabled = true;
         }
-        createOptionList("close_valve_extend_gear", transition);
+        createOptionList("env_retract_gear_last", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_extend_gear"]);
+_operations_view.appendChild(_machine_events["env_retract_gear_last"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_general_valve"] = document.createElement("button");
+_machine_events["env_extend_gear_skip"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_extend_gear_skip_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_extend_gear_skip_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_extend_gear_skip"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stimulate_general_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_general_valve"].innerHTML = "con_stimulate_general_valve";
-_machine_events["con_stimulate_general_valve"].parameterNames = [];
-_machine_events["con_stimulate_general_valve"].onclick = function() {
+_machine_events["env_extend_gear_skip"].style.gridColumn="-1";
+_machine_events["env_extend_gear_skip"].innerHTML = "env_extend_gear_skip";
+_machine_events["env_extend_gear_skip"].parameterNames = ["gr", ];
+_machine_events["env_extend_gear_skip"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stimulate_general_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_general_valve"]();
-      _transition_list[index]["con_stimulate_general_valve"] = transition;
+  if(_transition_list[index]?.["env_extend_gear_skip"] == null ?? true) {
+      transition = _machine["_tr_env_extend_gear_skip"]();
+      _transition_list[index]["env_extend_gear_skip"] = transition;
   } else {
-      transition = _transition_list[index]["con_stimulate_general_valve"];
+      transition = _transition_list[index]["env_extend_gear_skip"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stimulate_general_valve is not enabled!");
+        alert("Event env_extend_gear_skip is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.con_stimulate_general_valve(...parameters);
-    createHistoryElement("con_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_extend_gear_skip(...parameters);
+    createHistoryElement("env_extend_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_general_valve", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_extend_gear_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_extend_gear_skip", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_general_valve"] = transition;
+        _transition_list[index]["env_extend_gear_skip"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_general_valve"].disabled = true;
+            _machine_events["env_extend_gear_skip"].disabled = true;
         }
-        createOptionList("con_stimulate_general_valve", transition);
+        createOptionList("env_extend_gear_skip", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stimulate_general_valve"]);
-
-_svg_events["con_stimulate_general_valve"] = document.getElementById("architecture").contentDocument.getElementById("con_stimulate_general_valve");
-_svg_events["con_stimulate_general_valve"].onclick = function() {
-  var parameters = {
-};
-  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
-  var transition;
-  if(_transition_list[index]?.["con_stimulate_general_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_general_valve"]();
-      _transition_list[index]["con_stimulate_general_valve"] = transition;
-  } else {
-      transition = _transition_list[index]["con_stimulate_general_valve"];
-  }
-  if(!(transition instanceof BSet)) {
-    if(!transition) {
-        alert("Event con_stimulate_general_valve is not enabled!");
-        return;
-    }
-  } else {
-    try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
-    } catch {
-        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-    if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-  }
-  try {
-    var parameters = [];
-    var returnValue = _machine.con_stimulate_general_valve(...parameters);
-    createHistoryElement("con_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-    let parametersJSON = {};
+_operations_view.appendChild(_machine_events["env_extend_gear_skip"]);
 
-    _current_trace.push({name: "con_stimulate_general_valve", params: parametersJSON});
-    updateVisuals();
-  } catch (error) {
-    if(! error instanceof SelectError) {
-        throw error;
-    }
-    if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
-        transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_general_valve"] = transition;
-        if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_general_valve"].disabled = true;
-        }
-        createOptionList("con_stimulate_general_valve", transition);
-    }
-    alert(error.message);
-  }
-}
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_door_open"] = document.createElement("button");
+_machine_events["env_open_analogical_switch"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_door_open"].style.gridColumn="-1";
-_machine_events["close_valve_door_open"].innerHTML = "close_valve_door_open";
-_machine_events["close_valve_door_open"].parameterNames = [];
-_machine_events["close_valve_door_open"].onclick = function() {
+_machine_events["env_open_analogical_switch"].style.gridColumn="-1";
+_machine_events["env_open_analogical_switch"].innerHTML = "env_open_analogical_switch";
+_machine_events["env_open_analogical_switch"].parameterNames = [];
+_machine_events["env_open_analogical_switch"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_door_open"] == null ?? true) {
-      transition = _machine["_tr_close_valve_door_open"]();
-      _transition_list[index]["close_valve_door_open"] = transition;
+  if(_transition_list[index]?.["env_open_analogical_switch"] == null ?? true) {
+      transition = _machine["_tr_env_open_analogical_switch"]();
+      _transition_list[index]["env_open_analogical_switch"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_door_open"];
+      transition = _transition_list[index]["env_open_analogical_switch"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_door_open is not enabled!");
+        alert("Event env_open_analogical_switch is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.close_valve_door_open(...parameters);
-    createHistoryElement("close_valve_door_open(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.env_open_analogical_switch(...parameters);
+    createHistoryElement("env_open_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_door_open", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_open_analogical_switch", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1286,142 +1249,115 @@ _machine_events["close_valve_door_open"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_door_open"] = transition;
+        _transition_list[index]["env_open_analogical_switch"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_door_open"].disabled = true;
+            _machine_events["env_open_analogical_switch"].disabled = true;
         }
-        createOptionList("close_valve_door_open", transition);
+        createOptionList("env_open_analogical_switch", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_door_open"]);
-
-
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["env_start_extending"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_extending_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_extending_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_start_extending"]["gr"] = gr;
-
-_operations_view.appendChild(_param_div);
-
+_operations_view.appendChild(_machine_events["env_open_analogical_switch"]);
 
-_machine_events["env_start_extending"].style.gridColumn="-1";
-_machine_events["env_start_extending"].innerHTML = "env_start_extending";
-_machine_events["env_start_extending"].parameterNames = ["gr", ];
-_machine_events["env_start_extending"].onclick = function() {
-  var parameters = {};
+_svg_events["close_switch_1"] = document.getElementById("architecture").contentDocument.getElementById("close_switch_1");
+_svg_events["close_switch_1"].onclick = function() {
+  var parameters = {
+};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_start_extending"] == null ?? true) {
-      transition = _machine["_tr_env_start_extending"]();
-      _transition_list[index]["env_start_extending"] = transition;
+  if(_transition_list[index]?.["env_open_analogical_switch"] == null ?? true) {
+      transition = _machine["_tr_env_open_analogical_switch"]();
+      _transition_list[index]["env_open_analogical_switch"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_extending"];
+      transition = _transition_list[index]["env_open_analogical_switch"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_extending is not enabled!");
+        alert("Event env_open_analogical_switch is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_extending(...parameters);
-    createHistoryElement("env_start_extending(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.env_open_analogical_switch(...parameters);
+    createHistoryElement("env_open_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_extending"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_extending", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_open_analogical_switch", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_extending"] = transition;
+        _transition_list[index]["env_open_analogical_switch"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_extending"].disabled = true;
+            _machine_events["env_open_analogical_switch"].disabled = true;
         }
-        createOptionList("env_start_extending", transition);
+        createOptionList("env_open_analogical_switch", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_extending"]);
-
-
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_extend_gear_valve"] = document.createElement("button");
+_machine_events["land_plane"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stimulate_extend_gear_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_extend_gear_valve"].innerHTML = "con_stimulate_extend_gear_valve";
-_machine_events["con_stimulate_extend_gear_valve"].parameterNames = [];
-_machine_events["con_stimulate_extend_gear_valve"].onclick = function() {
+_machine_events["land_plane"].style.gridColumn="-1";
+_machine_events["land_plane"].innerHTML = "land_plane";
+_machine_events["land_plane"].parameterNames = [];
+_machine_events["land_plane"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stimulate_extend_gear_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_extend_gear_valve"]();
-      _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
+  if(_transition_list[index]?.["land_plane"] == null ?? true) {
+      transition = _machine["_tr_land_plane"]();
+      _transition_list[index]["land_plane"] = transition;
   } else {
-      transition = _transition_list[index]["con_stimulate_extend_gear_valve"];
+      transition = _transition_list[index]["land_plane"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stimulate_extend_gear_valve is not enabled!");
+        alert("Event land_plane is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stimulate_extend_gear_valve(...parameters);
-    createHistoryElement("con_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.land_plane(...parameters);
+    createHistoryElement("land_plane(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_extend_gear_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "land_plane", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1430,86 +1366,102 @@ _machine_events["con_stimulate_extend_gear_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
+        _transition_list[index]["land_plane"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_extend_gear_valve"].disabled = true;
+            _machine_events["land_plane"].disabled = true;
         }
-        createOptionList("con_stimulate_extend_gear_valve", transition);
+        createOptionList("land_plane", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stimulate_extend_gear_valve"]);
+_operations_view.appendChild(_machine_events["land_plane"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["toggle_handle_down"] = document.createElement("button");
+_machine_events["env_open_door_last"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_open_door_last_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_open_door_last_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_open_door_last"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["toggle_handle_down"].style.gridColumn="-1";
-_machine_events["toggle_handle_down"].innerHTML = "toggle_handle_down";
-_machine_events["toggle_handle_down"].parameterNames = [];
-_machine_events["toggle_handle_down"].onclick = function() {
+_machine_events["env_open_door_last"].style.gridColumn="-1";
+_machine_events["env_open_door_last"].innerHTML = "env_open_door_last";
+_machine_events["env_open_door_last"].parameterNames = ["gr", ];
+_machine_events["env_open_door_last"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["toggle_handle_down"] == null ?? true) {
-      transition = _machine["_tr_toggle_handle_down"]();
-      _transition_list[index]["toggle_handle_down"] = transition;
+  if(_transition_list[index]?.["env_open_door_last"] == null ?? true) {
+      transition = _machine["_tr_env_open_door_last"]();
+      _transition_list[index]["env_open_door_last"] = transition;
   } else {
-      transition = _transition_list[index]["toggle_handle_down"];
+      transition = _transition_list[index]["env_open_door_last"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event toggle_handle_down is not enabled!");
+        alert("Event env_open_door_last is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.toggle_handle_down(...parameters);
-    createHistoryElement("toggle_handle_down(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ];
+    var returnValue = _machine.env_open_door_last(...parameters);
+    createHistoryElement("env_open_door_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "toggle_handle_down", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_open_door_last"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_open_door_last", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["toggle_handle_down"] = transition;
+        _transition_list[index]["env_open_door_last"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["toggle_handle_down"].disabled = true;
+            _machine_events["env_open_door_last"].disabled = true;
         }
-        createOptionList("toggle_handle_down", transition);
+        createOptionList("env_open_door_last", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["toggle_handle_down"]);
+_operations_view.appendChild(_machine_events["env_open_door_last"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_close_door"] = document.createElement("button");
+_machine_events["env_extend_gear_last"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -1517,183 +1469,199 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_close_door_gr_datalist";
+_param_datalist.id="env_extend_gear_last_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_close_door_gr_datalist");
+gr.setAttribute("list", "env_extend_gear_last_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_close_door"]["gr"] = gr;
+_machine_events["env_extend_gear_last"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_close_door"].style.gridColumn="-1";
-_machine_events["env_close_door"].innerHTML = "env_close_door";
-_machine_events["env_close_door"].parameterNames = ["gr", ];
-_machine_events["env_close_door"].onclick = function() {
+_machine_events["env_extend_gear_last"].style.gridColumn="-1";
+_machine_events["env_extend_gear_last"].innerHTML = "env_extend_gear_last";
+_machine_events["env_extend_gear_last"].parameterNames = ["gr", ];
+_machine_events["env_extend_gear_last"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
-  var transition;
-  if(_transition_list[index]?.["env_close_door"] == null ?? true) {
-      transition = _machine["_tr_env_close_door"]();
-      _transition_list[index]["env_close_door"] = transition;
+  var transition;
+  if(_transition_list[index]?.["env_extend_gear_last"] == null ?? true) {
+      transition = _machine["_tr_env_extend_gear_last"]();
+      _transition_list[index]["env_extend_gear_last"] = transition;
   } else {
-      transition = _transition_list[index]["env_close_door"];
+      transition = _transition_list[index]["env_extend_gear_last"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_close_door is not enabled!");
+        alert("Event env_extend_gear_last is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ];
-    var returnValue = _machine.env_close_door(...parameters);
-    createHistoryElement("env_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ];
+    var returnValue = _machine.env_extend_gear_last(...parameters);
+    createHistoryElement("env_extend_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_close_door"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_close_door", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_extend_gear_last"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_extend_gear_last", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_close_door"] = transition;
+        _transition_list[index]["env_extend_gear_last"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_close_door"].disabled = true;
+            _machine_events["env_extend_gear_last"].disabled = true;
         }
-        createOptionList("env_close_door", transition);
+        createOptionList("env_extend_gear_last", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_close_door"]);
+_operations_view.appendChild(_machine_events["env_extend_gear_last"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["open_valve_door_close"] = document.createElement("button");
+_machine_events["env_open_door_skip"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_open_door_skip_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_open_door_skip_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_open_door_skip"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["open_valve_door_close"].style.gridColumn="-1";
-_machine_events["open_valve_door_close"].innerHTML = "open_valve_door_close";
-_machine_events["open_valve_door_close"].parameterNames = [];
-_machine_events["open_valve_door_close"].onclick = function() {
+_machine_events["env_open_door_skip"].style.gridColumn="-1";
+_machine_events["env_open_door_skip"].innerHTML = "env_open_door_skip";
+_machine_events["env_open_door_skip"].parameterNames = ["gr", ];
+_machine_events["env_open_door_skip"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["open_valve_door_close"] == null ?? true) {
-      transition = _machine["_tr_open_valve_door_close"]();
-      _transition_list[index]["open_valve_door_close"] = transition;
+  if(_transition_list[index]?.["env_open_door_skip"] == null ?? true) {
+      transition = _machine["_tr_env_open_door_skip"]();
+      _transition_list[index]["env_open_door_skip"] = transition;
   } else {
-      transition = _transition_list[index]["open_valve_door_close"];
+      transition = _transition_list[index]["env_open_door_skip"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event open_valve_door_close is not enabled!");
+        alert("Event env_open_door_skip is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.open_valve_door_close(...parameters);
-    createHistoryElement("open_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_open_door_skip(...parameters);
+    createHistoryElement("env_open_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "open_valve_door_close", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_open_door_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_open_door_skip", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["open_valve_door_close"] = transition;
+        _transition_list[index]["env_open_door_skip"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["open_valve_door_close"].disabled = true;
+            _machine_events["env_open_door_skip"].disabled = true;
         }
-        createOptionList("open_valve_door_close", transition);
+        createOptionList("env_open_door_skip", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["open_valve_door_close"]);
+_operations_view.appendChild(_machine_events["env_open_door_skip"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_extend_gear_valve"] = document.createElement("button");
+_machine_events["close_valve_door_close"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_extend_gear_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_extend_gear_valve"].innerHTML = "con_stop_stimulate_extend_gear_valve";
-_machine_events["con_stop_stimulate_extend_gear_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_extend_gear_valve"].onclick = function() {
+_machine_events["close_valve_door_close"].style.gridColumn="-1";
+_machine_events["close_valve_door_close"].innerHTML = "close_valve_door_close";
+_machine_events["close_valve_door_close"].parameterNames = [];
+_machine_events["close_valve_door_close"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_extend_gear_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_extend_gear_valve"]();
-      _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
+  if(_transition_list[index]?.["close_valve_door_close"] == null ?? true) {
+      transition = _machine["_tr_close_valve_door_close"]();
+      _transition_list[index]["close_valve_door_close"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_extend_gear_valve"];
+      transition = _transition_list[index]["close_valve_door_close"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_extend_gear_valve is not enabled!");
+        alert("Event close_valve_door_close is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_extend_gear_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.close_valve_door_close(...parameters);
+    createHistoryElement("close_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_extend_gear_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_door_close", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1702,182 +1670,222 @@ _machine_events["con_stop_stimulate_extend_gear_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
+        _transition_list[index]["close_valve_door_close"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_extend_gear_valve"].disabled = true;
+            _machine_events["close_valve_door_close"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_extend_gear_valve", transition);
+        createOptionList("close_valve_door_close", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_extend_gear_valve"]);
+_operations_view.appendChild(_machine_events["close_valve_door_close"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_open_door_valve"] = document.createElement("button");
+_machine_events["env_start_open_door"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_start_open_door_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_start_open_door_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_start_open_door"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stimulate_open_door_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_open_door_valve"].innerHTML = "con_stimulate_open_door_valve";
-_machine_events["con_stimulate_open_door_valve"].parameterNames = [];
-_machine_events["con_stimulate_open_door_valve"].onclick = function() {
+_machine_events["env_start_open_door"].style.gridColumn="-1";
+_machine_events["env_start_open_door"].innerHTML = "env_start_open_door";
+_machine_events["env_start_open_door"].parameterNames = ["gr", ];
+_machine_events["env_start_open_door"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stimulate_open_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_open_door_valve"]();
-      _transition_list[index]["con_stimulate_open_door_valve"] = transition;
+  if(_transition_list[index]?.["env_start_open_door"] == null ?? true) {
+      transition = _machine["_tr_env_start_open_door"]();
+      _transition_list[index]["env_start_open_door"] = transition;
   } else {
-      transition = _transition_list[index]["con_stimulate_open_door_valve"];
+      transition = _transition_list[index]["env_start_open_door"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stimulate_open_door_valve is not enabled!");
+        alert("Event env_start_open_door is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.con_stimulate_open_door_valve(...parameters);
-    createHistoryElement("con_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_open_door(...parameters);
+    createHistoryElement("env_start_open_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_open_door_valve", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_open_door"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_open_door", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_open_door_valve"] = transition;
+        _transition_list[index]["env_start_open_door"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_open_door_valve"].disabled = true;
+            _machine_events["env_start_open_door"].disabled = true;
         }
-        createOptionList("con_stimulate_open_door_valve", transition);
+        createOptionList("env_start_open_door", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stimulate_open_door_valve"]);
+_operations_view.appendChild(_machine_events["env_start_open_door"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_close_analogical_switch"] = document.createElement("button");
+_machine_events["env_start_close_door"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_start_close_door_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_start_close_door_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_start_close_door"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_close_analogical_switch"].style.gridColumn="-1";
-_machine_events["env_close_analogical_switch"].innerHTML = "env_close_analogical_switch";
-_machine_events["env_close_analogical_switch"].parameterNames = [];
-_machine_events["env_close_analogical_switch"].onclick = function() {
+_machine_events["env_start_close_door"].style.gridColumn="-1";
+_machine_events["env_start_close_door"].innerHTML = "env_start_close_door";
+_machine_events["env_start_close_door"].parameterNames = ["gr", ];
+_machine_events["env_start_close_door"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_close_analogical_switch"] == null ?? true) {
-      transition = _machine["_tr_env_close_analogical_switch"]();
-      _transition_list[index]["env_close_analogical_switch"] = transition;
+  if(_transition_list[index]?.["env_start_close_door"] == null ?? true) {
+      transition = _machine["_tr_env_start_close_door"]();
+      _transition_list[index]["env_start_close_door"] = transition;
   } else {
-      transition = _transition_list[index]["env_close_analogical_switch"];
+      transition = _transition_list[index]["env_start_close_door"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_close_analogical_switch is not enabled!");
+        alert("Event env_start_close_door is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.env_close_analogical_switch(...parameters);
-    createHistoryElement("env_close_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_close_door(...parameters);
+    createHistoryElement("env_start_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "env_close_analogical_switch", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_close_door"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_close_door", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_close_analogical_switch"] = transition;
+        _transition_list[index]["env_start_close_door"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_close_analogical_switch"].disabled = true;
+            _machine_events["env_start_close_door"].disabled = true;
         }
-        createOptionList("env_close_analogical_switch", transition);
+        createOptionList("env_start_close_door", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_close_analogical_switch"]);
+_operations_view.appendChild(_machine_events["env_start_close_door"]);
+
 
-_svg_events["open_switch"] = document.getElementById("architecture").contentDocument.getElementById("open_switch");
-_svg_events["open_switch"].onclick = function() {
-  var parameters = {
-};
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["toggle_handle_down"] = document.createElement("button");
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["toggle_handle_down"].style.gridColumn="-1";
+_machine_events["toggle_handle_down"].innerHTML = "toggle_handle_down";
+_machine_events["toggle_handle_down"].parameterNames = [];
+_machine_events["toggle_handle_down"].onclick = function() {
+  var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_close_analogical_switch"] == null ?? true) {
-      transition = _machine["_tr_env_close_analogical_switch"]();
-      _transition_list[index]["env_close_analogical_switch"] = transition;
+  if(_transition_list[index]?.["toggle_handle_down"] == null ?? true) {
+      transition = _machine["_tr_toggle_handle_down"]();
+      _transition_list[index]["toggle_handle_down"] = transition;
   } else {
-      transition = _transition_list[index]["env_close_analogical_switch"];
+      transition = _transition_list[index]["toggle_handle_down"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_close_analogical_switch is not enabled!");
+        alert("Event toggle_handle_down is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_down!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.env_close_analogical_switch(...parameters);
-    createHistoryElement("env_close_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.toggle_handle_down(...parameters);
+    createHistoryElement("toggle_handle_down(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "env_close_analogical_switch", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "toggle_handle_down", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1886,59 +1894,62 @@ _svg_events["open_switch"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_close_analogical_switch"] = transition;
+        _transition_list[index]["toggle_handle_down"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_close_analogical_switch"].disabled = true;
+            _machine_events["toggle_handle_down"].disabled = true;
         }
-        createOptionList("env_close_analogical_switch", transition);
+        createOptionList("toggle_handle_down", transition);
     }
     alert(error.message);
   }
 }
 
+_operations_view.appendChild(_machine_events["toggle_handle_down"]);
+
+
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_open_analogical_switch"] = document.createElement("button");
+_machine_events["close_valve_door_open"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_open_analogical_switch"].style.gridColumn="-1";
-_machine_events["env_open_analogical_switch"].innerHTML = "env_open_analogical_switch";
-_machine_events["env_open_analogical_switch"].parameterNames = [];
-_machine_events["env_open_analogical_switch"].onclick = function() {
+_machine_events["close_valve_door_open"].style.gridColumn="-1";
+_machine_events["close_valve_door_open"].innerHTML = "close_valve_door_open";
+_machine_events["close_valve_door_open"].parameterNames = [];
+_machine_events["close_valve_door_open"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_open_analogical_switch"] == null ?? true) {
-      transition = _machine["_tr_env_open_analogical_switch"]();
-      _transition_list[index]["env_open_analogical_switch"] = transition;
+  if(_transition_list[index]?.["close_valve_door_open"] == null ?? true) {
+      transition = _machine["_tr_close_valve_door_open"]();
+      _transition_list[index]["close_valve_door_open"] = transition;
   } else {
-      transition = _transition_list[index]["env_open_analogical_switch"];
+      transition = _transition_list[index]["close_valve_door_open"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_open_analogical_switch is not enabled!");
+        alert("Event close_valve_door_open is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_door_open!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.env_open_analogical_switch(...parameters);
-    createHistoryElement("env_open_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.close_valve_door_open(...parameters);
+    createHistoryElement("close_valve_door_open(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "env_open_analogical_switch", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_door_open", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -1947,54 +1958,62 @@ _machine_events["env_open_analogical_switch"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_open_analogical_switch"] = transition;
+        _transition_list[index]["close_valve_door_open"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_open_analogical_switch"].disabled = true;
+            _machine_events["close_valve_door_open"].disabled = true;
         }
-        createOptionList("env_open_analogical_switch", transition);
+        createOptionList("close_valve_door_open", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_open_analogical_switch"]);
+_operations_view.appendChild(_machine_events["close_valve_door_open"]);
 
-_svg_events["close_switch_1"] = document.getElementById("architecture").contentDocument.getElementById("close_switch_1");
-_svg_events["close_switch_1"].onclick = function() {
-  var parameters = {
-};
+
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["con_stimulate_close_door_valve"] = document.createElement("button");
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["con_stimulate_close_door_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_close_door_valve"].innerHTML = "con_stimulate_close_door_valve";
+_machine_events["con_stimulate_close_door_valve"].parameterNames = [];
+_machine_events["con_stimulate_close_door_valve"].onclick = function() {
+  var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_open_analogical_switch"] == null ?? true) {
-      transition = _machine["_tr_env_open_analogical_switch"]();
-      _transition_list[index]["env_open_analogical_switch"] = transition;
+  if(_transition_list[index]?.["con_stimulate_close_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_close_door_valve"]();
+      _transition_list[index]["con_stimulate_close_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["env_open_analogical_switch"];
+      transition = _transition_list[index]["con_stimulate_close_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_open_analogical_switch is not enabled!");
+        alert("Event con_stimulate_close_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_open_analogical_switch!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.env_open_analogical_switch(...parameters);
-    createHistoryElement("env_open_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stimulate_close_door_valve(...parameters);
+    createHistoryElement("con_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "env_open_analogical_switch", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_close_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2003,16 +2022,19 @@ _svg_events["close_switch_1"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_open_analogical_switch"] = transition;
+        _transition_list[index]["con_stimulate_close_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_open_analogical_switch"].disabled = true;
+            _machine_events["con_stimulate_close_door_valve"].disabled = true;
         }
-        createOptionList("env_open_analogical_switch", transition);
+        createOptionList("con_stimulate_close_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
+_operations_view.appendChild(_machine_events["con_stimulate_close_door_valve"]);
+
+
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
 _machine_events["con_stimulate_retract_gear_valve"] = document.createElement("button");
@@ -2054,7 +2076,7 @@ _machine_events["con_stimulate_retract_gear_valve"].onclick = function() {
     var returnValue = _machine.con_stimulate_retract_gear_valve(...parameters);
     createHistoryElement("con_stimulate_retract_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "con_stimulate_retract_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -2079,47 +2101,47 @@ _operations_view.appendChild(_machine_events["con_stimulate_retract_gear_valve"]
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_open_door_valve"] = document.createElement("button");
+_machine_events["open_valve_door_open"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_open_door_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_open_door_valve"].innerHTML = "con_stop_stimulate_open_door_valve";
-_machine_events["con_stop_stimulate_open_door_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_open_door_valve"].onclick = function() {
+_machine_events["open_valve_door_open"].style.gridColumn="-1";
+_machine_events["open_valve_door_open"].innerHTML = "open_valve_door_open";
+_machine_events["open_valve_door_open"].parameterNames = [];
+_machine_events["open_valve_door_open"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_open_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_open_door_valve"]();
-      _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
+  if(_transition_list[index]?.["open_valve_door_open"] == null ?? true) {
+      transition = _machine["_tr_open_valve_door_open"]();
+      _transition_list[index]["open_valve_door_open"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_open_door_valve"];
+      transition = _transition_list[index]["open_valve_door_open"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_open_door_valve is not enabled!");
+        alert("Event open_valve_door_open is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_door_open!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_door_open!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_open_door_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.open_valve_door_open(...parameters);
+    createHistoryElement("open_valve_door_open(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_open_door_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "open_valve_door_open", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2128,62 +2150,142 @@ _machine_events["con_stop_stimulate_open_door_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
+        _transition_list[index]["open_valve_door_open"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_open_door_valve"].disabled = true;
+            _machine_events["open_valve_door_open"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_open_door_valve", transition);
+        createOptionList("open_valve_door_open", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_open_door_valve"]);
+_operations_view.appendChild(_machine_events["open_valve_door_open"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["open_valve_door_open"] = document.createElement("button");
+_machine_events["env_close_door"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_close_door_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_close_door_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_close_door"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["open_valve_door_open"].style.gridColumn="-1";
-_machine_events["open_valve_door_open"].innerHTML = "open_valve_door_open";
-_machine_events["open_valve_door_open"].parameterNames = [];
-_machine_events["open_valve_door_open"].onclick = function() {
+_machine_events["env_close_door"].style.gridColumn="-1";
+_machine_events["env_close_door"].innerHTML = "env_close_door";
+_machine_events["env_close_door"].parameterNames = ["gr", ];
+_machine_events["env_close_door"].onclick = function() {
+  var parameters = {};
+  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
+  var transition;
+  if(_transition_list[index]?.["env_close_door"] == null ?? true) {
+      transition = _machine["_tr_env_close_door"]();
+      _transition_list[index]["env_close_door"] = transition;
+  } else {
+      transition = _transition_list[index]["env_close_door"];
+  }
+  if(!(transition instanceof BSet)) {
+    if(!transition) {
+        alert("Event env_close_door is not enabled!");
+        return;
+    }
+  } else {
+    try  {
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+    } catch {
+        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+    if(! transition.elementOf(parameterTuple).booleanValue()) {
+        alert("Invalid parameters for event env_close_door!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+  }
+  try {
+    var parameters = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ];
+    var returnValue = _machine.env_close_door(...parameters);
+    createHistoryElement("env_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    let parametersJSON = {};
+    parametersJSON["gr"] = _machine_events["env_close_door"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_close_door", params: parametersJSON});
+    updateVisuals();
+  } catch (error) {
+    if(! error instanceof SelectError) {
+        throw error;
+    }
+    if(transition instanceof BSet) {
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        transition = transition.difference(new BSet(parameterTuple));
+        _transition_list[index]["env_close_door"] = transition;
+        if(transition.size().intValue() == 0) {
+            _machine_events["env_close_door"].disabled = true;
+        }
+        createOptionList("env_close_door", transition);
+    }
+    alert(error.message);
+  }
+}
+
+_operations_view.appendChild(_machine_events["env_close_door"]);
+
+
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["open_valve_retract_gear"] = document.createElement("button");
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["open_valve_retract_gear"].style.gridColumn="-1";
+_machine_events["open_valve_retract_gear"].innerHTML = "open_valve_retract_gear";
+_machine_events["open_valve_retract_gear"].parameterNames = [];
+_machine_events["open_valve_retract_gear"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["open_valve_door_open"] == null ?? true) {
-      transition = _machine["_tr_open_valve_door_open"]();
-      _transition_list[index]["open_valve_door_open"] = transition;
+  if(_transition_list[index]?.["open_valve_retract_gear"] == null ?? true) {
+      transition = _machine["_tr_open_valve_retract_gear"]();
+      _transition_list[index]["open_valve_retract_gear"] = transition;
   } else {
-      transition = _transition_list[index]["open_valve_door_open"];
+      transition = _transition_list[index]["open_valve_retract_gear"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event open_valve_door_open is not enabled!");
+        alert("Event open_valve_retract_gear is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event open_valve_door_open!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_retract_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event open_valve_door_open!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_retract_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.open_valve_door_open(...parameters);
-    createHistoryElement("open_valve_door_open(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.open_valve_retract_gear(...parameters);
+    createHistoryElement("open_valve_retract_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "open_valve_door_open", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "open_valve_retract_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2192,22 +2294,22 @@ _machine_events["open_valve_door_open"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["open_valve_door_open"] = transition;
+        _transition_list[index]["open_valve_retract_gear"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["open_valve_door_open"].disabled = true;
+            _machine_events["open_valve_retract_gear"].disabled = true;
         }
-        createOptionList("open_valve_door_open", transition);
+        createOptionList("open_valve_retract_gear", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["open_valve_door_open"]);
+_operations_view.appendChild(_machine_events["open_valve_retract_gear"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_retract_gear_last"] = document.createElement("button");
+_machine_events["env_start_retracting_first"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -2215,183 +2317,199 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_retract_gear_last_gr_datalist";
+_param_datalist.id="env_start_retracting_first_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_retract_gear_last_gr_datalist");
+gr.setAttribute("list", "env_start_retracting_first_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_retract_gear_last"]["gr"] = gr;
+_machine_events["env_start_retracting_first"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_retract_gear_last"].style.gridColumn="-1";
-_machine_events["env_retract_gear_last"].innerHTML = "env_retract_gear_last";
-_machine_events["env_retract_gear_last"].parameterNames = ["gr", ];
-_machine_events["env_retract_gear_last"].onclick = function() {
+_machine_events["env_start_retracting_first"].style.gridColumn="-1";
+_machine_events["env_start_retracting_first"].innerHTML = "env_start_retracting_first";
+_machine_events["env_start_retracting_first"].parameterNames = ["gr", ];
+_machine_events["env_start_retracting_first"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_retract_gear_last"] == null ?? true) {
-      transition = _machine["_tr_env_retract_gear_last"]();
-      _transition_list[index]["env_retract_gear_last"] = transition;
+  if(_transition_list[index]?.["env_start_retracting_first"] == null ?? true) {
+      transition = _machine["_tr_env_start_retracting_first"]();
+      _transition_list[index]["env_start_retracting_first"] = transition;
   } else {
-      transition = _transition_list[index]["env_retract_gear_last"];
+      transition = _transition_list[index]["env_start_retracting_first"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_retract_gear_last is not enabled!");
+        alert("Event env_start_retracting_first is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_retract_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ];
-    var returnValue = _machine.env_retract_gear_last(...parameters);
-    createHistoryElement("env_retract_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_retracting_first(...parameters);
+    createHistoryElement("env_start_retracting_first(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_retract_gear_last"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_retract_gear_last", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_retracting_first"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_retracting_first", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_retract_gear_last"] = transition;
+        _transition_list[index]["env_start_retracting_first"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_retract_gear_last"].disabled = true;
+            _machine_events["env_start_retracting_first"].disabled = true;
         }
-        createOptionList("env_retract_gear_last", transition);
+        createOptionList("env_start_retracting_first", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_retract_gear_last"]);
+_operations_view.appendChild(_machine_events["env_start_retracting_first"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["open_valve_retract_gear"] = document.createElement("button");
+_machine_events["env_retract_gear_skip"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_retract_gear_skip_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_retract_gear_skip_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_retract_gear_skip"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["open_valve_retract_gear"].style.gridColumn="-1";
-_machine_events["open_valve_retract_gear"].innerHTML = "open_valve_retract_gear";
-_machine_events["open_valve_retract_gear"].parameterNames = [];
-_machine_events["open_valve_retract_gear"].onclick = function() {
+_machine_events["env_retract_gear_skip"].style.gridColumn="-1";
+_machine_events["env_retract_gear_skip"].innerHTML = "env_retract_gear_skip";
+_machine_events["env_retract_gear_skip"].parameterNames = ["gr", ];
+_machine_events["env_retract_gear_skip"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["open_valve_retract_gear"] == null ?? true) {
-      transition = _machine["_tr_open_valve_retract_gear"]();
-      _transition_list[index]["open_valve_retract_gear"] = transition;
+  if(_transition_list[index]?.["env_retract_gear_skip"] == null ?? true) {
+      transition = _machine["_tr_env_retract_gear_skip"]();
+      _transition_list[index]["env_retract_gear_skip"] = transition;
   } else {
-      transition = _transition_list[index]["open_valve_retract_gear"];
+      transition = _transition_list[index]["env_retract_gear_skip"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event open_valve_retract_gear is not enabled!");
+        alert("Event env_retract_gear_skip is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event open_valve_retract_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event open_valve_retract_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_retract_gear_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.open_valve_retract_gear(...parameters);
-    createHistoryElement("open_valve_retract_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_retract_gear_skip(...parameters);
+    createHistoryElement("env_retract_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "open_valve_retract_gear", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_retract_gear_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_retract_gear_skip", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_retract_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["open_valve_retract_gear"] = transition;
+        _transition_list[index]["env_retract_gear_skip"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["open_valve_retract_gear"].disabled = true;
+            _machine_events["env_retract_gear_skip"].disabled = true;
         }
-        createOptionList("open_valve_retract_gear", transition);
+        createOptionList("env_retract_gear_skip", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["open_valve_retract_gear"]);
+_operations_view.appendChild(_machine_events["env_retract_gear_skip"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stimulate_close_door_valve"] = document.createElement("button");
+_machine_events["con_stop_stimulate_close_door_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stimulate_close_door_valve"].style.gridColumn="-1";
-_machine_events["con_stimulate_close_door_valve"].innerHTML = "con_stimulate_close_door_valve";
-_machine_events["con_stimulate_close_door_valve"].parameterNames = [];
-_machine_events["con_stimulate_close_door_valve"].onclick = function() {
+_machine_events["con_stop_stimulate_close_door_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_close_door_valve"].innerHTML = "con_stop_stimulate_close_door_valve";
+_machine_events["con_stop_stimulate_close_door_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_close_door_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stimulate_close_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stimulate_close_door_valve"]();
-      _transition_list[index]["con_stimulate_close_door_valve"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_close_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_close_door_valve"]();
+      _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["con_stimulate_close_door_valve"];
+      transition = _transition_list[index]["con_stop_stimulate_close_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stimulate_close_door_valve is not enabled!");
+        alert("Event con_stop_stimulate_close_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stimulate_close_door_valve(...parameters);
-    createHistoryElement("con_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_close_door_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stimulate_close_door_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_close_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2400,62 +2518,62 @@ _machine_events["con_stimulate_close_door_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stimulate_close_door_valve"] = transition;
+        _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stimulate_close_door_valve"].disabled = true;
+            _machine_events["con_stop_stimulate_close_door_valve"].disabled = true;
         }
-        createOptionList("con_stimulate_close_door_valve", transition);
+        createOptionList("con_stop_stimulate_close_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stimulate_close_door_valve"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_close_door_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_close_door_valve"] = document.createElement("button");
+_machine_events["con_stop_stimulate_extend_gear_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_close_door_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_close_door_valve"].innerHTML = "con_stop_stimulate_close_door_valve";
-_machine_events["con_stop_stimulate_close_door_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_close_door_valve"].onclick = function() {
+_machine_events["con_stop_stimulate_extend_gear_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_extend_gear_valve"].innerHTML = "con_stop_stimulate_extend_gear_valve";
+_machine_events["con_stop_stimulate_extend_gear_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_extend_gear_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_close_door_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_close_door_valve"]();
-      _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_extend_gear_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_extend_gear_valve"]();
+      _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_close_door_valve"];
+      transition = _transition_list[index]["con_stop_stimulate_extend_gear_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_close_door_valve is not enabled!");
+        alert("Event con_stop_stimulate_extend_gear_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_close_door_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_close_door_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_close_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_extend_gear_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_close_door_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_extend_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2464,222 +2582,182 @@ _machine_events["con_stop_stimulate_close_door_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_close_door_valve"] = transition;
+        _transition_list[index]["con_stop_stimulate_extend_gear_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_close_door_valve"].disabled = true;
+            _machine_events["con_stop_stimulate_extend_gear_valve"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_close_door_valve", transition);
+        createOptionList("con_stop_stimulate_extend_gear_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_close_door_valve"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_extend_gear_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_start_open_door"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_open_door_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_open_door_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_start_open_door"]["gr"] = gr;
-
+_machine_events["evn_close_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_start_open_door"].style.gridColumn="-1";
-_machine_events["env_start_open_door"].innerHTML = "env_start_open_door";
-_machine_events["env_start_open_door"].parameterNames = ["gr", ];
-_machine_events["env_start_open_door"].onclick = function() {
+_machine_events["evn_close_general_valve"].style.gridColumn="-1";
+_machine_events["evn_close_general_valve"].innerHTML = "evn_close_general_valve";
+_machine_events["evn_close_general_valve"].parameterNames = [];
+_machine_events["evn_close_general_valve"].onclick = function() {
   var parameters = {};
-  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
-  var transition;
-  if(_transition_list[index]?.["env_start_open_door"] == null ?? true) {
-      transition = _machine["_tr_env_start_open_door"]();
-      _transition_list[index]["env_start_open_door"] = transition;
+  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
+  var transition;
+  if(_transition_list[index]?.["evn_close_general_valve"] == null ?? true) {
+      transition = _machine["_tr_evn_close_general_valve"]();
+      _transition_list[index]["evn_close_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_open_door"];
+      transition = _transition_list[index]["evn_close_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_open_door is not enabled!");
+        alert("Event evn_close_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_open_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event evn_close_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_open_door(...parameters);
-    createHistoryElement("env_start_open_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.evn_close_general_valve(...parameters);
+    createHistoryElement("evn_close_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_open_door"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_open_door", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "evn_close_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_open_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_open_door"] = transition;
+        _transition_list[index]["evn_close_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_open_door"].disabled = true;
+            _machine_events["evn_close_general_valve"].disabled = true;
         }
-        createOptionList("env_start_open_door", transition);
+        createOptionList("evn_close_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_open_door"]);
+_operations_view.appendChild(_machine_events["evn_close_general_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_open_door_last"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_open_door_last_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_open_door_last_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_open_door_last"]["gr"] = gr;
-
+_machine_events["con_stimulate_general_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_open_door_last"].style.gridColumn="-1";
-_machine_events["env_open_door_last"].innerHTML = "env_open_door_last";
-_machine_events["env_open_door_last"].parameterNames = ["gr", ];
-_machine_events["env_open_door_last"].onclick = function() {
+_machine_events["con_stimulate_general_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_general_valve"].innerHTML = "con_stimulate_general_valve";
+_machine_events["con_stimulate_general_valve"].parameterNames = [];
+_machine_events["con_stimulate_general_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_open_door_last"] == null ?? true) {
-      transition = _machine["_tr_env_open_door_last"]();
-      _transition_list[index]["env_open_door_last"] = transition;
+  if(_transition_list[index]?.["con_stimulate_general_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_general_valve"]();
+      _transition_list[index]["con_stimulate_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["env_open_door_last"];
+      transition = _transition_list[index]["con_stimulate_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_open_door_last is not enabled!");
+        alert("Event con_stimulate_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_open_door_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ];
-    var returnValue = _machine.env_open_door_last(...parameters);
-    createHistoryElement("env_open_door_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.con_stimulate_general_valve(...parameters);
+    createHistoryElement("con_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_open_door_last"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_open_door_last", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_open_door_last"] = transition;
+        _transition_list[index]["con_stimulate_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_open_door_last"].disabled = true;
+            _machine_events["con_stimulate_general_valve"].disabled = true;
         }
-        createOptionList("env_open_door_last", transition);
+        createOptionList("con_stimulate_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_open_door_last"]);
-
-
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["land_plane"] = document.createElement("button");
-_operations_view.appendChild(_param_div);
-
+_operations_view.appendChild(_machine_events["con_stimulate_general_valve"]);
 
-_machine_events["land_plane"].style.gridColumn="-1";
-_machine_events["land_plane"].innerHTML = "land_plane";
-_machine_events["land_plane"].parameterNames = [];
-_machine_events["land_plane"].onclick = function() {
-  var parameters = {};
+_svg_events["con_stimulate_general_valve"] = document.getElementById("architecture").contentDocument.getElementById("con_stimulate_general_valve");
+_svg_events["con_stimulate_general_valve"].onclick = function() {
+  var parameters = {
+};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["land_plane"] == null ?? true) {
-      transition = _machine["_tr_land_plane"]();
-      _transition_list[index]["land_plane"] = transition;
+  if(_transition_list[index]?.["con_stimulate_general_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_general_valve"]();
+      _transition_list[index]["con_stimulate_general_valve"] = transition;
   } else {
-      transition = _transition_list[index]["land_plane"];
+      transition = _transition_list[index]["con_stimulate_general_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event land_plane is not enabled!");
+        alert("Event con_stimulate_general_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event land_plane!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.land_plane(...parameters);
-    createHistoryElement("land_plane(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stimulate_general_valve(...parameters);
+    createHistoryElement("con_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "land_plane", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_general_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2688,102 +2766,83 @@ _machine_events["land_plane"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["land_plane"] = transition;
+        _transition_list[index]["con_stimulate_general_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["land_plane"].disabled = true;
+            _machine_events["con_stimulate_general_valve"].disabled = true;
         }
-        createOptionList("land_plane", transition);
+        createOptionList("con_stimulate_general_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["land_plane"]);
-
-
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_start_retracting_first"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_retracting_first_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_retracting_first_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_start_retracting_first"]["gr"] = gr;
-
+_machine_events["con_stimulate_extend_gear_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_start_retracting_first"].style.gridColumn="-1";
-_machine_events["env_start_retracting_first"].innerHTML = "env_start_retracting_first";
-_machine_events["env_start_retracting_first"].parameterNames = ["gr", ];
-_machine_events["env_start_retracting_first"].onclick = function() {
+_machine_events["con_stimulate_extend_gear_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_extend_gear_valve"].innerHTML = "con_stimulate_extend_gear_valve";
+_machine_events["con_stimulate_extend_gear_valve"].parameterNames = [];
+_machine_events["con_stimulate_extend_gear_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_start_retracting_first"] == null ?? true) {
-      transition = _machine["_tr_env_start_retracting_first"]();
-      _transition_list[index]["env_start_retracting_first"] = transition;
+  if(_transition_list[index]?.["con_stimulate_extend_gear_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_extend_gear_valve"]();
+      _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_retracting_first"];
+      transition = _transition_list[index]["con_stimulate_extend_gear_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_retracting_first is not enabled!");
+        alert("Event con_stimulate_extend_gear_valve is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_retracting_first!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_extend_gear_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_retracting_first(...parameters);
-    createHistoryElement("env_start_retracting_first(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.con_stimulate_extend_gear_valve(...parameters);
+    createHistoryElement("con_stimulate_extend_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_retracting_first"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_retracting_first", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_extend_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_retracting_first"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_retracting_first"] = transition;
+        _transition_list[index]["con_stimulate_extend_gear_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_retracting_first"].disabled = true;
+            _machine_events["con_stimulate_extend_gear_valve"].disabled = true;
         }
-        createOptionList("env_start_retracting_first", transition);
+        createOptionList("con_stimulate_extend_gear_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_retracting_first"]);
+_operations_view.appendChild(_machine_events["con_stimulate_extend_gear_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_close_door_skip"] = document.createElement("button");
+_machine_events["env_start_extending"] = document.createElement("button");
 var gr_label = document.createElement("label")
 gr_label.textContent = "gr:";
 gr_label.htmlFor="gr";
@@ -2791,119 +2850,119 @@ _param_div.appendChild(gr_label);
 var gr = document.createElement("input");
 gr.id="gr";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="env_close_door_skip_gr_datalist";
+_param_datalist.id="env_start_extending_gr_datalist";
 _param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_close_door_skip_gr_datalist");
+gr.setAttribute("list", "env_start_extending_gr_datalist");
 gr.getValue = function() {return POSITION["get_" + this.value]()}
 gr.parseValue = function(value) {return POSITION["get_" + value]()}
 _param_div.appendChild(gr);
-_machine_events["env_close_door_skip"]["gr"] = gr;
+_machine_events["env_start_extending"]["gr"] = gr;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_close_door_skip"].style.gridColumn="-1";
-_machine_events["env_close_door_skip"].innerHTML = "env_close_door_skip";
-_machine_events["env_close_door_skip"].parameterNames = ["gr", ];
-_machine_events["env_close_door_skip"].onclick = function() {
+_machine_events["env_start_extending"].style.gridColumn="-1";
+_machine_events["env_start_extending"].innerHTML = "env_start_extending";
+_machine_events["env_start_extending"].parameterNames = ["gr", ];
+_machine_events["env_start_extending"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_close_door_skip"] == null ?? true) {
-      transition = _machine["_tr_env_close_door_skip"]();
-      _transition_list[index]["env_close_door_skip"] = transition;
+  if(_transition_list[index]?.["env_start_extending"] == null ?? true) {
+      transition = _machine["_tr_env_start_extending"]();
+      _transition_list[index]["env_start_extending"] = transition;
   } else {
-      transition = _transition_list[index]["env_close_door_skip"];
+      transition = _transition_list[index]["env_start_extending"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_close_door_skip is not enabled!");
+        alert("Event env_start_extending is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_start_extending!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_close_door_skip(...parameters);
-    createHistoryElement("env_close_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ];
+    var returnValue = _machine.env_start_extending(...parameters);
+    createHistoryElement("env_start_extending(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_close_door_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_close_door_skip", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_start_extending"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_start_extending", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_extending"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_close_door_skip"] = transition;
+        _transition_list[index]["env_start_extending"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_close_door_skip"].disabled = true;
+            _machine_events["env_start_extending"].disabled = true;
         }
-        createOptionList("env_close_door_skip", transition);
+        createOptionList("env_start_extending", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_close_door_skip"]);
+_operations_view.appendChild(_machine_events["env_start_extending"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["begin_flying"] = document.createElement("button");
+_machine_events["open_valve_door_close"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["begin_flying"].style.gridColumn="-1";
-_machine_events["begin_flying"].innerHTML = "begin_flying";
-_machine_events["begin_flying"].parameterNames = [];
-_machine_events["begin_flying"].onclick = function() {
+_machine_events["open_valve_door_close"].style.gridColumn="-1";
+_machine_events["open_valve_door_close"].innerHTML = "open_valve_door_close";
+_machine_events["open_valve_door_close"].parameterNames = [];
+_machine_events["open_valve_door_close"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["begin_flying"] == null ?? true) {
-      transition = _machine["_tr_begin_flying"]();
-      _transition_list[index]["begin_flying"] = transition;
+  if(_transition_list[index]?.["open_valve_door_close"] == null ?? true) {
+      transition = _machine["_tr_open_valve_door_close"]();
+      _transition_list[index]["open_valve_door_close"] = transition;
   } else {
-      transition = _transition_list[index]["begin_flying"];
+      transition = _transition_list[index]["open_valve_door_close"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event begin_flying is not enabled!");
+        alert("Event open_valve_door_close is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event open_valve_door_close!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.begin_flying(...parameters);
-    createHistoryElement("begin_flying(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.open_valve_door_close(...parameters);
+    createHistoryElement("open_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "begin_flying", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "open_valve_door_close", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2912,62 +2971,62 @@ _machine_events["begin_flying"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["begin_flying"] = transition;
+        _transition_list[index]["open_valve_door_close"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["begin_flying"].disabled = true;
+            _machine_events["open_valve_door_close"].disabled = true;
         }
-        createOptionList("begin_flying", transition);
+        createOptionList("open_valve_door_close", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["begin_flying"]);
+_operations_view.appendChild(_machine_events["open_valve_door_close"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["evn_open_general_valve"] = document.createElement("button");
+_machine_events["close_valve_retract_gear"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["evn_open_general_valve"].style.gridColumn="-1";
-_machine_events["evn_open_general_valve"].innerHTML = "evn_open_general_valve";
-_machine_events["evn_open_general_valve"].parameterNames = [];
-_machine_events["evn_open_general_valve"].onclick = function() {
+_machine_events["close_valve_retract_gear"].style.gridColumn="-1";
+_machine_events["close_valve_retract_gear"].innerHTML = "close_valve_retract_gear";
+_machine_events["close_valve_retract_gear"].parameterNames = [];
+_machine_events["close_valve_retract_gear"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["evn_open_general_valve"] == null ?? true) {
-      transition = _machine["_tr_evn_open_general_valve"]();
-      _transition_list[index]["evn_open_general_valve"] = transition;
+  if(_transition_list[index]?.["close_valve_retract_gear"] == null ?? true) {
+      transition = _machine["_tr_close_valve_retract_gear"]();
+      _transition_list[index]["close_valve_retract_gear"] = transition;
   } else {
-      transition = _transition_list[index]["evn_open_general_valve"];
+      transition = _transition_list[index]["close_valve_retract_gear"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event evn_open_general_valve is not enabled!");
+        alert("Event close_valve_retract_gear is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event evn_open_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_retract_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.evn_open_general_valve(...parameters);
-    createHistoryElement("evn_open_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.close_valve_retract_gear(...parameters);
+    createHistoryElement("close_valve_retract_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "evn_open_general_valve", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_retract_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -2976,62 +3035,62 @@ _machine_events["evn_open_general_valve"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["evn_open_general_valve"] = transition;
+        _transition_list[index]["close_valve_retract_gear"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["evn_open_general_valve"].disabled = true;
+            _machine_events["close_valve_retract_gear"].disabled = true;
         }
-        createOptionList("evn_open_general_valve", transition);
+        createOptionList("close_valve_retract_gear", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["evn_open_general_valve"]);
+_operations_view.appendChild(_machine_events["close_valve_retract_gear"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["close_valve_door_close"] = document.createElement("button");
+_machine_events["con_stop_stimulate_open_door_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["close_valve_door_close"].style.gridColumn="-1";
-_machine_events["close_valve_door_close"].innerHTML = "close_valve_door_close";
-_machine_events["close_valve_door_close"].parameterNames = [];
-_machine_events["close_valve_door_close"].onclick = function() {
+_machine_events["con_stop_stimulate_open_door_valve"].style.gridColumn="-1";
+_machine_events["con_stop_stimulate_open_door_valve"].innerHTML = "con_stop_stimulate_open_door_valve";
+_machine_events["con_stop_stimulate_open_door_valve"].parameterNames = [];
+_machine_events["con_stop_stimulate_open_door_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["close_valve_door_close"] == null ?? true) {
-      transition = _machine["_tr_close_valve_door_close"]();
-      _transition_list[index]["close_valve_door_close"] = transition;
+  if(_transition_list[index]?.["con_stop_stimulate_open_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stop_stimulate_open_door_valve"]();
+      _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["close_valve_door_close"];
+      transition = _transition_list[index]["con_stop_stimulate_open_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event close_valve_door_close is not enabled!");
+        alert("Event con_stop_stimulate_open_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event close_valve_door_close!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stop_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.close_valve_door_close(...parameters);
-    createHistoryElement("close_valve_door_close(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stop_stimulate_open_door_valve(...parameters);
+    createHistoryElement("con_stop_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "close_valve_door_close", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stop_stimulate_open_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -3040,366 +3099,334 @@ _machine_events["close_valve_door_close"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["close_valve_door_close"] = transition;
+        _transition_list[index]["con_stop_stimulate_open_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["close_valve_door_close"].disabled = true;
+            _machine_events["con_stop_stimulate_open_door_valve"].disabled = true;
         }
-        createOptionList("close_valve_door_close", transition);
+        createOptionList("con_stop_stimulate_open_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["close_valve_door_close"]);
+_operations_view.appendChild(_machine_events["con_stop_stimulate_open_door_valve"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["con_stop_stimulate_general_valve"] = document.createElement("button");
+_machine_events["env_close_door_skip"] = document.createElement("button");
+var gr_label = document.createElement("label")
+gr_label.textContent = "gr:";
+gr_label.htmlFor="gr";
+_param_div.appendChild(gr_label);
+var gr = document.createElement("input");
+gr.id="gr";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="env_close_door_skip_gr_datalist";
+_param_div.appendChild(_param_datalist);
+gr.setAttribute("list", "env_close_door_skip_gr_datalist");
+gr.getValue = function() {return POSITION["get_" + this.value]()}
+gr.parseValue = function(value) {return POSITION["get_" + value]()}
+_param_div.appendChild(gr);
+_machine_events["env_close_door_skip"]["gr"] = gr;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["con_stop_stimulate_general_valve"].style.gridColumn="-1";
-_machine_events["con_stop_stimulate_general_valve"].innerHTML = "con_stop_stimulate_general_valve";
-_machine_events["con_stop_stimulate_general_valve"].parameterNames = [];
-_machine_events["con_stop_stimulate_general_valve"].onclick = function() {
+_machine_events["env_close_door_skip"].style.gridColumn="-1";
+_machine_events["env_close_door_skip"].innerHTML = "env_close_door_skip";
+_machine_events["env_close_door_skip"].parameterNames = ["gr", ];
+_machine_events["env_close_door_skip"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["con_stop_stimulate_general_valve"] == null ?? true) {
-      transition = _machine["_tr_con_stop_stimulate_general_valve"]();
-      _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
+  if(_transition_list[index]?.["env_close_door_skip"] == null ?? true) {
+      transition = _machine["_tr_env_close_door_skip"]();
+      _transition_list[index]["env_close_door_skip"] = transition;
   } else {
-      transition = _transition_list[index]["con_stop_stimulate_general_valve"];
+      transition = _transition_list[index]["env_close_door_skip"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event con_stop_stimulate_general_valve is not enabled!");
+        alert("Event env_close_door_skip is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event con_stop_stimulate_general_valve!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_door_skip!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.con_stop_stimulate_general_valve(...parameters);
-    createHistoryElement("con_stop_stimulate_general_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ];
+    var returnValue = _machine.env_close_door_skip(...parameters);
+    createHistoryElement("env_close_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "con_stop_stimulate_general_valve", params: parametersJSON});
+    parametersJSON["gr"] = _machine_events["env_close_door_skip"]["gr"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_close_door_skip", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.gr ?? _machine_events["env_close_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["con_stop_stimulate_general_valve"] = transition;
+        _transition_list[index]["env_close_door_skip"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["con_stop_stimulate_general_valve"].disabled = true;
+            _machine_events["env_close_door_skip"].disabled = true;
         }
-        createOptionList("con_stop_stimulate_general_valve", transition);
+        createOptionList("env_close_door_skip", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["con_stop_stimulate_general_valve"]);
+_operations_view.appendChild(_machine_events["env_close_door_skip"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_extend_gear_last"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_extend_gear_last_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_extend_gear_last_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_extend_gear_last"]["gr"] = gr;
-
+_machine_events["begin_flying"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_extend_gear_last"].style.gridColumn="-1";
-_machine_events["env_extend_gear_last"].innerHTML = "env_extend_gear_last";
-_machine_events["env_extend_gear_last"].parameterNames = ["gr", ];
-_machine_events["env_extend_gear_last"].onclick = function() {
+_machine_events["begin_flying"].style.gridColumn="-1";
+_machine_events["begin_flying"].innerHTML = "begin_flying";
+_machine_events["begin_flying"].parameterNames = [];
+_machine_events["begin_flying"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_extend_gear_last"] == null ?? true) {
-      transition = _machine["_tr_env_extend_gear_last"]();
-      _transition_list[index]["env_extend_gear_last"] = transition;
+  if(_transition_list[index]?.["begin_flying"] == null ?? true) {
+      transition = _machine["_tr_begin_flying"]();
+      _transition_list[index]["begin_flying"] = transition;
   } else {
-      transition = _transition_list[index]["env_extend_gear_last"];
+      transition = _transition_list[index]["begin_flying"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_extend_gear_last is not enabled!");
+        alert("Event begin_flying is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_extend_gear_last!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event begin_flying!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ];
-    var returnValue = _machine.env_extend_gear_last(...parameters);
-    createHistoryElement("env_extend_gear_last(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.begin_flying(...parameters);
+    createHistoryElement("begin_flying(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_extend_gear_last"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_extend_gear_last", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "begin_flying", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_last"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_extend_gear_last"] = transition;
+        _transition_list[index]["begin_flying"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_extend_gear_last"].disabled = true;
+            _machine_events["begin_flying"].disabled = true;
         }
-        createOptionList("env_extend_gear_last", transition);
+        createOptionList("begin_flying", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_extend_gear_last"]);
+_operations_view.appendChild(_machine_events["begin_flying"]);
 
 
 _param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["env_extend_gear_skip"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_extend_gear_skip_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_extend_gear_skip_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_extend_gear_skip"]["gr"] = gr;
-
+_param_div.classList.add("param");
+_machine_events["toggle_handle_up"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_extend_gear_skip"].style.gridColumn="-1";
-_machine_events["env_extend_gear_skip"].innerHTML = "env_extend_gear_skip";
-_machine_events["env_extend_gear_skip"].parameterNames = ["gr", ];
-_machine_events["env_extend_gear_skip"].onclick = function() {
+_machine_events["toggle_handle_up"].style.gridColumn="-1";
+_machine_events["toggle_handle_up"].innerHTML = "toggle_handle_up";
+_machine_events["toggle_handle_up"].parameterNames = [];
+_machine_events["toggle_handle_up"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_extend_gear_skip"] == null ?? true) {
-      transition = _machine["_tr_env_extend_gear_skip"]();
-      _transition_list[index]["env_extend_gear_skip"] = transition;
+  if(_transition_list[index]?.["toggle_handle_up"] == null ?? true) {
+      transition = _machine["_tr_toggle_handle_up"]();
+      _transition_list[index]["toggle_handle_up"] = transition;
   } else {
-      transition = _transition_list[index]["env_extend_gear_skip"];
+      transition = _transition_list[index]["toggle_handle_up"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_extend_gear_skip is not enabled!");
+        alert("Event toggle_handle_up is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_extend_gear_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_extend_gear_skip(...parameters);
-    createHistoryElement("env_extend_gear_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.toggle_handle_up(...parameters);
+    createHistoryElement("toggle_handle_up(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_extend_gear_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_extend_gear_skip", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "toggle_handle_up", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_extend_gear_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_extend_gear_skip"] = transition;
+        _transition_list[index]["toggle_handle_up"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_extend_gear_skip"].disabled = true;
+            _machine_events["toggle_handle_up"].disabled = true;
         }
-        createOptionList("env_extend_gear_skip", transition);
+        createOptionList("toggle_handle_up", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_extend_gear_skip"]);
+_operations_view.appendChild(_machine_events["toggle_handle_up"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_start_close_door"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_start_close_door_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_start_close_door_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_start_close_door"]["gr"] = gr;
-
+_machine_events["close_valve_extend_gear"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_start_close_door"].style.gridColumn="-1";
-_machine_events["env_start_close_door"].innerHTML = "env_start_close_door";
-_machine_events["env_start_close_door"].parameterNames = ["gr", ];
-_machine_events["env_start_close_door"].onclick = function() {
+_machine_events["close_valve_extend_gear"].style.gridColumn="-1";
+_machine_events["close_valve_extend_gear"].innerHTML = "close_valve_extend_gear";
+_machine_events["close_valve_extend_gear"].parameterNames = [];
+_machine_events["close_valve_extend_gear"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_start_close_door"] == null ?? true) {
-      transition = _machine["_tr_env_start_close_door"]();
-      _transition_list[index]["env_start_close_door"] = transition;
+  if(_transition_list[index]?.["close_valve_extend_gear"] == null ?? true) {
+      transition = _machine["_tr_close_valve_extend_gear"]();
+      _transition_list[index]["close_valve_extend_gear"] = transition;
   } else {
-      transition = _transition_list[index]["env_start_close_door"];
+      transition = _transition_list[index]["close_valve_extend_gear"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_start_close_door is not enabled!");
+        alert("Event close_valve_extend_gear is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_start_close_door!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event close_valve_extend_gear!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ];
-    var returnValue = _machine.env_start_close_door(...parameters);
-    createHistoryElement("env_start_close_door(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.close_valve_extend_gear(...parameters);
+    createHistoryElement("close_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_start_close_door"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_start_close_door", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "close_valve_extend_gear", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_start_close_door"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_start_close_door"] = transition;
+        _transition_list[index]["close_valve_extend_gear"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_start_close_door"].disabled = true;
+            _machine_events["close_valve_extend_gear"].disabled = true;
         }
-        createOptionList("env_start_close_door", transition);
+        createOptionList("close_valve_extend_gear", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_start_close_door"]);
+_operations_view.appendChild(_machine_events["close_valve_extend_gear"]);
 
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["open_valve_extend_gear"] = document.createElement("button");
+_machine_events["con_stimulate_open_door_valve"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["open_valve_extend_gear"].style.gridColumn="-1";
-_machine_events["open_valve_extend_gear"].innerHTML = "open_valve_extend_gear";
-_machine_events["open_valve_extend_gear"].parameterNames = [];
-_machine_events["open_valve_extend_gear"].onclick = function() {
+_machine_events["con_stimulate_open_door_valve"].style.gridColumn="-1";
+_machine_events["con_stimulate_open_door_valve"].innerHTML = "con_stimulate_open_door_valve";
+_machine_events["con_stimulate_open_door_valve"].parameterNames = [];
+_machine_events["con_stimulate_open_door_valve"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["open_valve_extend_gear"] == null ?? true) {
-      transition = _machine["_tr_open_valve_extend_gear"]();
-      _transition_list[index]["open_valve_extend_gear"] = transition;
+  if(_transition_list[index]?.["con_stimulate_open_door_valve"] == null ?? true) {
+      transition = _machine["_tr_con_stimulate_open_door_valve"]();
+      _transition_list[index]["con_stimulate_open_door_valve"] = transition;
   } else {
-      transition = _transition_list[index]["open_valve_extend_gear"];
+      transition = _transition_list[index]["con_stimulate_open_door_valve"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event open_valve_extend_gear is not enabled!");
+        alert("Event con_stimulate_open_door_valve is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event open_valve_extend_gear!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event con_stimulate_open_door_valve!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.open_valve_extend_gear(...parameters);
-    createHistoryElement("open_valve_extend_gear(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.con_stimulate_open_door_valve(...parameters);
+    createHistoryElement("con_stimulate_open_door_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "open_valve_extend_gear", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "con_stimulate_open_door_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -3408,17 +3435,17 @@ _machine_events["open_valve_extend_gear"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["open_valve_extend_gear"] = transition;
+        _transition_list[index]["con_stimulate_open_door_valve"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["open_valve_extend_gear"].disabled = true;
+            _machine_events["con_stimulate_open_door_valve"].disabled = true;
         }
-        createOptionList("open_valve_extend_gear", transition);
+        createOptionList("con_stimulate_open_door_valve", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["open_valve_extend_gear"]);
+_operations_view.appendChild(_machine_events["con_stimulate_open_door_valve"]);
 
 
 _param_div = document.createElement("div");
@@ -3462,7 +3489,7 @@ _machine_events["con_stop_stimulate_retract_gear_valve"].onclick = function() {
     var returnValue = _machine.con_stop_stimulate_retract_gear_valve(...parameters);
     createHistoryElement("con_stop_stimulate_retract_gear_valve(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "con_stop_stimulate_retract_gear_valve", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -3487,127 +3514,103 @@ _operations_view.appendChild(_machine_events["con_stop_stimulate_retract_gear_va
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["env_open_door_skip"] = document.createElement("button");
-var gr_label = document.createElement("label")
-gr_label.textContent = "gr:";
-gr_label.htmlFor="gr";
-_param_div.appendChild(gr_label);
-var gr = document.createElement("input");
-gr.id="gr";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="env_open_door_skip_gr_datalist";
-_param_div.appendChild(_param_datalist);
-gr.setAttribute("list", "env_open_door_skip_gr_datalist");
-gr.getValue = function() {return POSITION["get_" + this.value]()}
-gr.parseValue = function(value) {return POSITION["get_" + value]()}
-_param_div.appendChild(gr);
-_machine_events["env_open_door_skip"]["gr"] = gr;
-
+_machine_events["env_close_analogical_switch"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["env_open_door_skip"].style.gridColumn="-1";
-_machine_events["env_open_door_skip"].innerHTML = "env_open_door_skip";
-_machine_events["env_open_door_skip"].parameterNames = ["gr", ];
-_machine_events["env_open_door_skip"].onclick = function() {
+_machine_events["env_close_analogical_switch"].style.gridColumn="-1";
+_machine_events["env_close_analogical_switch"].innerHTML = "env_close_analogical_switch";
+_machine_events["env_close_analogical_switch"].parameterNames = [];
+_machine_events["env_close_analogical_switch"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["env_open_door_skip"] == null ?? true) {
-      transition = _machine["_tr_env_open_door_skip"]();
-      _transition_list[index]["env_open_door_skip"] = transition;
+  if(_transition_list[index]?.["env_close_analogical_switch"] == null ?? true) {
+      transition = _machine["_tr_env_close_analogical_switch"]();
+      _transition_list[index]["env_close_analogical_switch"] = transition;
   } else {
-      transition = _transition_list[index]["env_open_door_skip"];
+      transition = _transition_list[index]["env_close_analogical_switch"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event env_open_door_skip is not enabled!");
+        alert("Event env_close_analogical_switch is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event env_open_door_skip!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ];
-    var returnValue = _machine.env_open_door_skip(...parameters);
-    createHistoryElement("env_open_door_skip(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.env_close_analogical_switch(...parameters);
+    createHistoryElement("env_close_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["gr"] = _machine_events["env_open_door_skip"]["gr"].getValue().toString();
-
-    _current_trace.push({name: "env_open_door_skip", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_close_analogical_switch", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.gr ?? _machine_events["env_open_door_skip"]["gr"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["env_open_door_skip"] = transition;
+        _transition_list[index]["env_close_analogical_switch"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["env_open_door_skip"].disabled = true;
+            _machine_events["env_close_analogical_switch"].disabled = true;
         }
-        createOptionList("env_open_door_skip", transition);
+        createOptionList("env_close_analogical_switch", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["env_open_door_skip"]);
-
-
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["toggle_handle_up"] = document.createElement("button");
-_operations_view.appendChild(_param_div);
-
+_operations_view.appendChild(_machine_events["env_close_analogical_switch"]);
 
-_machine_events["toggle_handle_up"].style.gridColumn="-1";
-_machine_events["toggle_handle_up"].innerHTML = "toggle_handle_up";
-_machine_events["toggle_handle_up"].parameterNames = [];
-_machine_events["toggle_handle_up"].onclick = function() {
-  var parameters = {};
+_svg_events["open_switch"] = document.getElementById("architecture").contentDocument.getElementById("open_switch");
+_svg_events["open_switch"].onclick = function() {
+  var parameters = {
+};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["toggle_handle_up"] == null ?? true) {
-      transition = _machine["_tr_toggle_handle_up"]();
-      _transition_list[index]["toggle_handle_up"] = transition;
+  if(_transition_list[index]?.["env_close_analogical_switch"] == null ?? true) {
+      transition = _machine["_tr_env_close_analogical_switch"]();
+      _transition_list[index]["env_close_analogical_switch"] = transition;
   } else {
-      transition = _transition_list[index]["toggle_handle_up"];
+      transition = _transition_list[index]["env_close_analogical_switch"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event toggle_handle_up is not enabled!");
+        alert("Event env_close_analogical_switch is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event toggle_handle_up!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event env_close_analogical_switch!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.toggle_handle_up(...parameters);
-    createHistoryElement("toggle_handle_up(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.env_close_analogical_switch(...parameters);
+    createHistoryElement("env_close_analogical_switch(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "toggle_handle_up", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "env_close_analogical_switch", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -3616,19 +3619,16 @@ _machine_events["toggle_handle_up"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["toggle_handle_up"] = transition;
+        _transition_list[index]["env_close_analogical_switch"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["toggle_handle_up"].disabled = true;
+            _machine_events["env_close_analogical_switch"].disabled = true;
         }
-        createOptionList("toggle_handle_up", transition);
+        createOptionList("env_close_analogical_switch", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["toggle_handle_up"]);
-
-
 
 
 updateVisuals();
@@ -3649,8 +3649,7 @@ function displayTrace(trace) {
       let parameters = Object.keys(transition.params).map(param => _machine_events[transition.name][param].parseValue(transition.params[param]))
       let returnValue = _machine[transition.name](...parameters);
       createHistoryElement(transition.name + "(" + parameters.join(", ") + ")" + (returnValue? " (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-      let parametersJSON = {};
-
+      let parametersJSON = transition.params;
       _current_trace.push({name: transition.name, params: parametersJSON});
     }
     updateVisuals();
@@ -3688,7 +3687,6 @@ function exportTrace() {
     metadata: {
       fileType: "Trace",
       formatVersion: 1,
-      savedAt: "2022-05-18T12:00:01.661297Z",
       creator: "B2Program JS",
       modelName: "LandingGear_R6"
     }
@@ -3715,4 +3713,4 @@ async function runTrace(ms) {
       currentHistoryElement = _history_view.querySelector(".active");
       index = currentHistoryElement.index + 1;
     }
-}
+}
\ No newline at end of file
diff --git a/B2Program/LightModel/PitmanController_TIME_MC_v4-visualisation.js b/B2Program/LightModel/PitmanController_TIME_MC_v4-visualisation.js
index 7825719f114abc03a0e40e12bcba9ef6e5f9dfaa..caa3efaf7255d663d62ae7bb5841d8b05224cc3f 100644
--- a/B2Program/LightModel/PitmanController_TIME_MC_v4-visualisation.js
+++ b/B2Program/LightModel/PitmanController_TIME_MC_v4-visualisation.js
@@ -533,482 +533,457 @@ var _machine_events = {};
 var _svg_events = {};
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["ENV_Pitman_Reset_to_Neutral"] = document.createElement("button");
+_machine_events["RTIME_BlinkerOn"] = document.createElement("button");
+var delta_label = document.createElement("label")
+delta_label.textContent = "delta:";
+delta_label.htmlFor="delta";
+_param_div.appendChild(delta_label);
+var delta = document.createElement("input");
+delta.id="delta";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="RTIME_BlinkerOn_delta_datalist";
+_param_div.appendChild(_param_datalist);
+delta.setAttribute("list", "RTIME_BlinkerOn_delta_datalist");
+delta.getValue = function() {return new BInteger(parseInt(this.value))}
+delta.parseValue = function(value) {return new BInteger(parseInt(value))}
+_param_div.appendChild(delta);
+_machine_events["RTIME_BlinkerOn"]["delta"] = delta;
+
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["ENV_Pitman_Reset_to_Neutral"].style.gridColumn="-1";
-_machine_events["ENV_Pitman_Reset_to_Neutral"].innerHTML = "ENV_Pitman_Reset_to_Neutral";
-_machine_events["ENV_Pitman_Reset_to_Neutral"].parameterNames = [];
-_machine_events["ENV_Pitman_Reset_to_Neutral"].onclick = function() {
+_machine_events["RTIME_BlinkerOn"].style.gridColumn="-1";
+_machine_events["RTIME_BlinkerOn"].innerHTML = "RTIME_BlinkerOn";
+_machine_events["RTIME_BlinkerOn"].parameterNames = ["delta", ];
+_machine_events["RTIME_BlinkerOn"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Pitman_Reset_to_Neutral"] == null ?? true) {
-      transition = _machine["_tr_ENV_Pitman_Reset_to_Neutral"]();
-      _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
+  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
+      transition = _machine["_tr_RTIME_BlinkerOn"]();
+      _transition_list[index]["RTIME_BlinkerOn"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Pitman_Reset_to_Neutral"];
+      transition = _transition_list[index]["RTIME_BlinkerOn"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Pitman_Reset_to_Neutral is not enabled!");
+        alert("Event RTIME_BlinkerOn is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.ENV_Pitman_Reset_to_Neutral(...parameters);
-    createHistoryElement("ENV_Pitman_Reset_to_Neutral(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
+    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "ENV_Pitman_Reset_to_Neutral", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
+        _transition_list[index]["RTIME_BlinkerOn"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Pitman_Reset_to_Neutral"].disabled = true;
+            _machine_events["RTIME_BlinkerOn"].disabled = true;
         }
-        createOptionList("ENV_Pitman_Reset_to_Neutral", transition);
+        createOptionList("RTIME_BlinkerOn", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["ENV_Pitman_Reset_to_Neutral"]);
+_operations_view.appendChild(_machine_events["RTIME_BlinkerOn"]);
 
-_svg_events["PitmanNeutral"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("PitmanNeutral");
-_svg_events["PitmanNeutral"].onclick = function() {
+_svg_events["A-left"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("A-left");
+_svg_events["A-left"].onclick = function() {
   var parameters = {
 };
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Pitman_Reset_to_Neutral"] == null ?? true) {
-      transition = _machine["_tr_ENV_Pitman_Reset_to_Neutral"]();
-      _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
+  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
+      transition = _machine["_tr_RTIME_BlinkerOn"]();
+      _transition_list[index]["RTIME_BlinkerOn"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Pitman_Reset_to_Neutral"];
+      transition = _transition_list[index]["RTIME_BlinkerOn"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Pitman_Reset_to_Neutral is not enabled!");
+        alert("Event RTIME_BlinkerOn is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [];
-    var returnValue = _machine.ENV_Pitman_Reset_to_Neutral(...parameters);
-    createHistoryElement("ENV_Pitman_Reset_to_Neutral(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
+    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "ENV_Pitman_Reset_to_Neutral", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
+        _transition_list[index]["RTIME_BlinkerOn"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Pitman_Reset_to_Neutral"].disabled = true;
+            _machine_events["RTIME_BlinkerOn"].disabled = true;
         }
-        createOptionList("ENV_Pitman_Reset_to_Neutral", transition);
+        createOptionList("RTIME_BlinkerOn", transition);
     }
     alert(error.message);
   }
 }
 
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["ENV_Pitman_Tip_blinking_start"] = document.createElement("button");
-var newPos_label = document.createElement("label")
-newPos_label.textContent = "newPos:";
-newPos_label.htmlFor="newPos";
-_param_div.appendChild(newPos_label);
-var newPos = document.createElement("input");
-newPos.id="newPos";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="ENV_Pitman_Tip_blinking_start_newPos_datalist";
-_param_div.appendChild(_param_datalist);
-newPos.setAttribute("list", "ENV_Pitman_Tip_blinking_start_newPos_datalist");
-newPos.getValue = function() {return PITMAN_POSITION["get_" + this.value]()}
-newPos.parseValue = function(value) {return PITMAN_POSITION["get_" + value]()}
-_param_div.appendChild(newPos);
-_machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"] = newPos;
-
-_operations_view.appendChild(_param_div);
-
-
-_machine_events["ENV_Pitman_Tip_blinking_start"].style.gridColumn="-1";
-_machine_events["ENV_Pitman_Tip_blinking_start"].innerHTML = "ENV_Pitman_Tip_blinking_start";
-_machine_events["ENV_Pitman_Tip_blinking_start"].parameterNames = ["newPos", ];
-_machine_events["ENV_Pitman_Tip_blinking_start"].onclick = function() {
-  var parameters = {};
+_svg_events["B-left"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("B-left");
+_svg_events["B-left"].onclick = function() {
+  var parameters = {
+};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Pitman_Tip_blinking_start"] == null ?? true) {
-      transition = _machine["_tr_ENV_Pitman_Tip_blinking_start"]();
-      _transition_list[index]["ENV_Pitman_Tip_blinking_start"] = transition;
+  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
+      transition = _machine["_tr_RTIME_BlinkerOn"]();
+      _transition_list[index]["RTIME_BlinkerOn"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Pitman_Tip_blinking_start"];
+      transition = _transition_list[index]["RTIME_BlinkerOn"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Pitman_Tip_blinking_start is not enabled!");
+        alert("Event RTIME_BlinkerOn is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Pitman_Tip_blinking_start!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Pitman_Tip_blinking_start!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue(), ];
-    var returnValue = _machine.ENV_Pitman_Tip_blinking_start(...parameters);
-    createHistoryElement("ENV_Pitman_Tip_blinking_start(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
+    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["newPos"] = _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue().toString();
-
-    _current_trace.push({name: "ENV_Pitman_Tip_blinking_start", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Pitman_Tip_blinking_start"] = transition;
+        _transition_list[index]["RTIME_BlinkerOn"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Pitman_Tip_blinking_start"].disabled = true;
+            _machine_events["RTIME_BlinkerOn"].disabled = true;
         }
-        createOptionList("ENV_Pitman_Tip_blinking_start", transition);
+        createOptionList("RTIME_BlinkerOn", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["ENV_Pitman_Tip_blinking_start"]);
-
-
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["RTIME_Nothing"] = document.createElement("button");
-var delta_label = document.createElement("label")
-delta_label.textContent = "delta:";
-delta_label.htmlFor="delta";
-_param_div.appendChild(delta_label);
-var delta = document.createElement("input");
-delta.id="delta";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="RTIME_Nothing_delta_datalist";
-_param_div.appendChild(_param_datalist);
-delta.setAttribute("list", "RTIME_Nothing_delta_datalist");
-delta.getValue = function() {return new BInteger(parseInt(this.value))}
-delta.parseValue = function(value) {return new BInteger(parseInt(value))}
-_param_div.appendChild(delta);
-_machine_events["RTIME_Nothing"]["delta"] = delta;
-var newOnCycle_label = document.createElement("label")
-newOnCycle_label.textContent = "newOnCycle:";
-newOnCycle_label.htmlFor="newOnCycle";
-_param_div.appendChild(newOnCycle_label);
-var newOnCycle = document.createElement("input");
-newOnCycle.id="newOnCycle";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="RTIME_Nothing_newOnCycle_datalist";
-_param_div.appendChild(_param_datalist);
-newOnCycle.setAttribute("list", "RTIME_Nothing_newOnCycle_datalist");
-newOnCycle.getValue = function() {return new BBoolean(this.value == "true")}
-newOnCycle.parseValue = function(value) {return new BBoolean(value == "true")}
-_param_div.appendChild(newOnCycle);
-_machine_events["RTIME_Nothing"]["newOnCycle"] = newOnCycle;
-
-_operations_view.appendChild(_param_div);
-
-
-_machine_events["RTIME_Nothing"].style.gridColumn="-1";
-_machine_events["RTIME_Nothing"].innerHTML = "RTIME_Nothing";
-_machine_events["RTIME_Nothing"].parameterNames = ["delta", "newOnCycle", ];
-_machine_events["RTIME_Nothing"].onclick = function() {
-  var parameters = {};
+_svg_events["C-left"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("C-left");
+_svg_events["C-left"].onclick = function() {
+  var parameters = {
+};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_Nothing"] == null ?? true) {
-      transition = _machine["_tr_RTIME_Nothing"]();
-      _transition_list[index]["RTIME_Nothing"] = transition;
+  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
+      transition = _machine["_tr_RTIME_BlinkerOn"]();
+      _transition_list[index]["RTIME_BlinkerOn"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_Nothing"];
+      transition = _transition_list[index]["RTIME_BlinkerOn"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_Nothing is not enabled!");
+        alert("Event RTIME_BlinkerOn is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Nothing"]["delta"].getValue(), parameters?.newOnCycle ?? _machine_events["RTIME_Nothing"]["newOnCycle"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_Nothing!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_Nothing!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_Nothing"]["delta"].getValue(), parameters?.newOnCycle ?? _machine_events["RTIME_Nothing"]["newOnCycle"].getValue(), ];
-    var returnValue = _machine.RTIME_Nothing(...parameters);
-    createHistoryElement("RTIME_Nothing(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
+    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_Nothing"]["delta"].getValue().toString();
-    parametersJSON["newOnCycle"] = _machine_events["RTIME_Nothing"]["newOnCycle"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_Nothing", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Nothing"]["delta"].getValue(), parameters?.newOnCycle ?? _machine_events["RTIME_Nothing"]["newOnCycle"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_Nothing"] = transition;
+        _transition_list[index]["RTIME_BlinkerOn"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_Nothing"].disabled = true;
+            _machine_events["RTIME_BlinkerOn"].disabled = true;
         }
-        createOptionList("RTIME_Nothing", transition);
+        createOptionList("RTIME_BlinkerOn", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["RTIME_Nothing"]);
-
-
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["ENV_Pitman_DirectionBlinking"] = document.createElement("button");
-var newPos_label = document.createElement("label")
-newPos_label.textContent = "newPos:";
-newPos_label.htmlFor="newPos";
-_param_div.appendChild(newPos_label);
-var newPos = document.createElement("input");
-newPos.id="newPos";
+_machine_events["RTIME_Tip_blinking_Timeout"] = document.createElement("button");
+var delta_label = document.createElement("label")
+delta_label.textContent = "delta:";
+delta_label.htmlFor="delta";
+_param_div.appendChild(delta_label);
+var delta = document.createElement("input");
+delta.id="delta";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="ENV_Pitman_DirectionBlinking_newPos_datalist";
+_param_datalist.id="RTIME_Tip_blinking_Timeout_delta_datalist";
 _param_div.appendChild(_param_datalist);
-newPos.setAttribute("list", "ENV_Pitman_DirectionBlinking_newPos_datalist");
-newPos.getValue = function() {return PITMAN_POSITION["get_" + this.value]()}
-newPos.parseValue = function(value) {return PITMAN_POSITION["get_" + value]()}
-_param_div.appendChild(newPos);
-_machine_events["ENV_Pitman_DirectionBlinking"]["newPos"] = newPos;
+delta.setAttribute("list", "RTIME_Tip_blinking_Timeout_delta_datalist");
+delta.getValue = function() {return new BInteger(parseInt(this.value))}
+delta.parseValue = function(value) {return new BInteger(parseInt(value))}
+_param_div.appendChild(delta);
+_machine_events["RTIME_Tip_blinking_Timeout"]["delta"] = delta;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["ENV_Pitman_DirectionBlinking"].style.gridColumn="-1";
-_machine_events["ENV_Pitman_DirectionBlinking"].innerHTML = "ENV_Pitman_DirectionBlinking";
-_machine_events["ENV_Pitman_DirectionBlinking"].parameterNames = ["newPos", ];
-_machine_events["ENV_Pitman_DirectionBlinking"].onclick = function() {
+_machine_events["RTIME_Tip_blinking_Timeout"].style.gridColumn="-1";
+_machine_events["RTIME_Tip_blinking_Timeout"].innerHTML = "RTIME_Tip_blinking_Timeout";
+_machine_events["RTIME_Tip_blinking_Timeout"].parameterNames = ["delta", ];
+_machine_events["RTIME_Tip_blinking_Timeout"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Pitman_DirectionBlinking"] == null ?? true) {
-      transition = _machine["_tr_ENV_Pitman_DirectionBlinking"]();
-      _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+  if(_transition_list[index]?.["RTIME_Tip_blinking_Timeout"] == null ?? true) {
+      transition = _machine["_tr_RTIME_Tip_blinking_Timeout"]();
+      _transition_list[index]["RTIME_Tip_blinking_Timeout"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Pitman_DirectionBlinking"];
+      transition = _transition_list[index]["RTIME_Tip_blinking_Timeout"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Pitman_DirectionBlinking is not enabled!");
+        alert("Event RTIME_Tip_blinking_Timeout is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_Tip_blinking_Timeout!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_Tip_blinking_Timeout!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ];
-    var returnValue = _machine.ENV_Pitman_DirectionBlinking(...parameters);
-    createHistoryElement("ENV_Pitman_DirectionBlinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_Tip_blinking_Timeout(...parameters);
+    createHistoryElement("RTIME_Tip_blinking_Timeout(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["newPos"] = _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue().toString();
-
-    _current_trace.push({name: "ENV_Pitman_DirectionBlinking", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_Tip_blinking_Timeout", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+        _transition_list[index]["RTIME_Tip_blinking_Timeout"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Pitman_DirectionBlinking"].disabled = true;
+            _machine_events["RTIME_Tip_blinking_Timeout"].disabled = true;
         }
-        createOptionList("ENV_Pitman_DirectionBlinking", transition);
+        createOptionList("RTIME_Tip_blinking_Timeout", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["ENV_Pitman_DirectionBlinking"]);
+_operations_view.appendChild(_machine_events["RTIME_Tip_blinking_Timeout"]);
 
-_svg_events["PitmanUpward"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("PitmanUpward");
-_svg_events["PitmanUpward"].onclick = function() {
-  var parameters = {
-    newPos: new PITMAN_POSITION(enum_PITMAN_POSITION.Upward7),
-};
+
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["ENV_Hazard_blinking"] = document.createElement("button");
+var newSwitchPos_label = document.createElement("label")
+newSwitchPos_label.textContent = "newSwitchPos:";
+newSwitchPos_label.htmlFor="newSwitchPos";
+_param_div.appendChild(newSwitchPos_label);
+var newSwitchPos = document.createElement("input");
+newSwitchPos.id="newSwitchPos";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="ENV_Hazard_blinking_newSwitchPos_datalist";
+_param_div.appendChild(_param_datalist);
+newSwitchPos.setAttribute("list", "ENV_Hazard_blinking_newSwitchPos_datalist");
+newSwitchPos.getValue = function() {return SWITCH_STATUS["get_" + this.value]()}
+newSwitchPos.parseValue = function(value) {return SWITCH_STATUS["get_" + value]()}
+_param_div.appendChild(newSwitchPos);
+_machine_events["ENV_Hazard_blinking"]["newSwitchPos"] = newSwitchPos;
+
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["ENV_Hazard_blinking"].style.gridColumn="-1";
+_machine_events["ENV_Hazard_blinking"].innerHTML = "ENV_Hazard_blinking";
+_machine_events["ENV_Hazard_blinking"].parameterNames = ["newSwitchPos", ];
+_machine_events["ENV_Hazard_blinking"].onclick = function() {
+  var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Pitman_DirectionBlinking"] == null ?? true) {
-      transition = _machine["_tr_ENV_Pitman_DirectionBlinking"]();
-      _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+  if(_transition_list[index]?.["ENV_Hazard_blinking"] == null ?? true) {
+      transition = _machine["_tr_ENV_Hazard_blinking"]();
+      _transition_list[index]["ENV_Hazard_blinking"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Pitman_DirectionBlinking"];
+      transition = _transition_list[index]["ENV_Hazard_blinking"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Pitman_DirectionBlinking is not enabled!");
+        alert("Event ENV_Hazard_blinking is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ];
-    var returnValue = _machine.ENV_Pitman_DirectionBlinking(...parameters);
-    createHistoryElement("ENV_Pitman_DirectionBlinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ];
+    var returnValue = _machine.ENV_Hazard_blinking(...parameters);
+    createHistoryElement("ENV_Hazard_blinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["newPos"] = _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue().toString();
-
-    _current_trace.push({name: "ENV_Pitman_DirectionBlinking", params: parametersJSON});
+    parametersJSON["newSwitchPos"] = _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Hazard_blinking", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+        _transition_list[index]["ENV_Hazard_blinking"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Pitman_DirectionBlinking"].disabled = true;
+            _machine_events["ENV_Hazard_blinking"].disabled = true;
         }
-        createOptionList("ENV_Pitman_DirectionBlinking", transition);
+        createOptionList("ENV_Hazard_blinking", transition);
     }
     alert(error.message);
   }
 }
 
-_svg_events["PitmanDownward"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("PitmanDownward");
-_svg_events["PitmanDownward"].onclick = function() {
+_operations_view.appendChild(_machine_events["ENV_Hazard_blinking"]);
+
+_svg_events["warningLightOuter"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("warningLightOuter");
+_svg_events["warningLightOuter"].onclick = function() {
   var parameters = {
-    newPos: new PITMAN_POSITION(enum_PITMAN_POSITION.Downward7),
 };
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Pitman_DirectionBlinking"] == null ?? true) {
-      transition = _machine["_tr_ENV_Pitman_DirectionBlinking"]();
-      _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+  if(_transition_list[index]?.["ENV_Hazard_blinking"] == null ?? true) {
+      transition = _machine["_tr_ENV_Hazard_blinking"]();
+      _transition_list[index]["ENV_Hazard_blinking"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Pitman_DirectionBlinking"];
+      transition = _transition_list[index]["ENV_Hazard_blinking"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Pitman_DirectionBlinking is not enabled!");
+        alert("Event ENV_Hazard_blinking is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ];
-    var returnValue = _machine.ENV_Pitman_DirectionBlinking(...parameters);
-    createHistoryElement("ENV_Pitman_DirectionBlinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ];
+    var returnValue = _machine.ENV_Hazard_blinking(...parameters);
+    createHistoryElement("ENV_Hazard_blinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["newPos"] = _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue().toString();
-
-    _current_trace.push({name: "ENV_Pitman_DirectionBlinking", params: parametersJSON});
+    parametersJSON["newSwitchPos"] = _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Hazard_blinking", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+        _transition_list[index]["ENV_Hazard_blinking"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Pitman_DirectionBlinking"].disabled = true;
+            _machine_events["ENV_Hazard_blinking"].disabled = true;
         }
-        createOptionList("ENV_Pitman_DirectionBlinking", transition);
+        createOptionList("ENV_Hazard_blinking", transition);
     }
     alert(error.message);
   }
@@ -1016,7 +991,7 @@ _svg_events["PitmanDownward"].onclick = function() {
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["RTIME_BlinkerOn"] = document.createElement("button");
+_machine_events["RTIME_Passes"] = document.createElement("button");
 var delta_label = document.createElement("label")
 delta_label.textContent = "delta:";
 delta_label.htmlFor="delta";
@@ -1024,240 +999,288 @@ _param_div.appendChild(delta_label);
 var delta = document.createElement("input");
 delta.id="delta";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="RTIME_BlinkerOn_delta_datalist";
+_param_datalist.id="RTIME_Passes_delta_datalist";
 _param_div.appendChild(_param_datalist);
-delta.setAttribute("list", "RTIME_BlinkerOn_delta_datalist");
+delta.setAttribute("list", "RTIME_Passes_delta_datalist");
 delta.getValue = function() {return new BInteger(parseInt(this.value))}
 delta.parseValue = function(value) {return new BInteger(parseInt(value))}
 _param_div.appendChild(delta);
-_machine_events["RTIME_BlinkerOn"]["delta"] = delta;
+_machine_events["RTIME_Passes"]["delta"] = delta;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["RTIME_BlinkerOn"].style.gridColumn="-1";
-_machine_events["RTIME_BlinkerOn"].innerHTML = "RTIME_BlinkerOn";
-_machine_events["RTIME_BlinkerOn"].parameterNames = ["delta", ];
-_machine_events["RTIME_BlinkerOn"].onclick = function() {
+_machine_events["RTIME_Passes"].style.gridColumn="-1";
+_machine_events["RTIME_Passes"].innerHTML = "RTIME_Passes";
+_machine_events["RTIME_Passes"].parameterNames = ["delta", ];
+_machine_events["RTIME_Passes"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
-      transition = _machine["_tr_RTIME_BlinkerOn"]();
-      _transition_list[index]["RTIME_BlinkerOn"] = transition;
+  if(_transition_list[index]?.["RTIME_Passes"] == null ?? true) {
+      transition = _machine["_tr_RTIME_Passes"]();
+      _transition_list[index]["RTIME_Passes"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_BlinkerOn"];
+      transition = _transition_list[index]["RTIME_Passes"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_BlinkerOn is not enabled!");
+        alert("Event RTIME_Passes is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Passes"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_Passes!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_Passes!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
-    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_Passes"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_Passes(...parameters);
+    createHistoryElement("RTIME_Passes(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_Passes"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_Passes", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Passes"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_BlinkerOn"] = transition;
+        _transition_list[index]["RTIME_Passes"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_BlinkerOn"].disabled = true;
+            _machine_events["RTIME_Passes"].disabled = true;
         }
-        createOptionList("RTIME_BlinkerOn", transition);
+        createOptionList("RTIME_Passes", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["RTIME_BlinkerOn"]);
+_operations_view.appendChild(_machine_events["RTIME_Passes"]);
 
-_svg_events["A-left"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("A-left");
-_svg_events["A-left"].onclick = function() {
-  var parameters = {
-};
+
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["ENV_Pitman_Reset_to_Neutral"] = document.createElement("button");
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["ENV_Pitman_Reset_to_Neutral"].style.gridColumn="-1";
+_machine_events["ENV_Pitman_Reset_to_Neutral"].innerHTML = "ENV_Pitman_Reset_to_Neutral";
+_machine_events["ENV_Pitman_Reset_to_Neutral"].parameterNames = [];
+_machine_events["ENV_Pitman_Reset_to_Neutral"].onclick = function() {
+  var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
-      transition = _machine["_tr_RTIME_BlinkerOn"]();
-      _transition_list[index]["RTIME_BlinkerOn"] = transition;
+  if(_transition_list[index]?.["ENV_Pitman_Reset_to_Neutral"] == null ?? true) {
+      transition = _machine["_tr_ENV_Pitman_Reset_to_Neutral"]();
+      _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_BlinkerOn"];
+      transition = _transition_list[index]["ENV_Pitman_Reset_to_Neutral"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_BlinkerOn is not enabled!");
+        alert("Event ENV_Pitman_Reset_to_Neutral is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
-    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.ENV_Pitman_Reset_to_Neutral(...parameters);
+    createHistoryElement("ENV_Pitman_Reset_to_Neutral(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Pitman_Reset_to_Neutral", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_BlinkerOn"] = transition;
+        _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_BlinkerOn"].disabled = true;
+            _machine_events["ENV_Pitman_Reset_to_Neutral"].disabled = true;
         }
-        createOptionList("RTIME_BlinkerOn", transition);
+        createOptionList("ENV_Pitman_Reset_to_Neutral", transition);
     }
     alert(error.message);
   }
 }
 
-_svg_events["B-left"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("B-left");
-_svg_events["B-left"].onclick = function() {
+_operations_view.appendChild(_machine_events["ENV_Pitman_Reset_to_Neutral"]);
+
+_svg_events["PitmanNeutral"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("PitmanNeutral");
+_svg_events["PitmanNeutral"].onclick = function() {
   var parameters = {
 };
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
-      transition = _machine["_tr_RTIME_BlinkerOn"]();
-      _transition_list[index]["RTIME_BlinkerOn"] = transition;
+  if(_transition_list[index]?.["ENV_Pitman_Reset_to_Neutral"] == null ?? true) {
+      transition = _machine["_tr_ENV_Pitman_Reset_to_Neutral"]();
+      _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_BlinkerOn"];
+      transition = _transition_list[index]["ENV_Pitman_Reset_to_Neutral"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_BlinkerOn is not enabled!");
+        alert("Event ENV_Pitman_Reset_to_Neutral is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_Reset_to_Neutral!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
-    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [];
+    var returnValue = _machine.ENV_Pitman_Reset_to_Neutral(...parameters);
+    createHistoryElement("ENV_Pitman_Reset_to_Neutral(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Pitman_Reset_to_Neutral", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_BlinkerOn"] = transition;
+        _transition_list[index]["ENV_Pitman_Reset_to_Neutral"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_BlinkerOn"].disabled = true;
+            _machine_events["ENV_Pitman_Reset_to_Neutral"].disabled = true;
         }
-        createOptionList("RTIME_BlinkerOn", transition);
+        createOptionList("ENV_Pitman_Reset_to_Neutral", transition);
     }
     alert(error.message);
   }
 }
 
-_svg_events["C-left"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("C-left");
-_svg_events["C-left"].onclick = function() {
-  var parameters = {
-};
+_param_div = document.createElement("div");
+_param_div.classList.add("param");
+_machine_events["RTIME_Nothing"] = document.createElement("button");
+var delta_label = document.createElement("label")
+delta_label.textContent = "delta:";
+delta_label.htmlFor="delta";
+_param_div.appendChild(delta_label);
+var delta = document.createElement("input");
+delta.id="delta";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="RTIME_Nothing_delta_datalist";
+_param_div.appendChild(_param_datalist);
+delta.setAttribute("list", "RTIME_Nothing_delta_datalist");
+delta.getValue = function() {return new BInteger(parseInt(this.value))}
+delta.parseValue = function(value) {return new BInteger(parseInt(value))}
+_param_div.appendChild(delta);
+_machine_events["RTIME_Nothing"]["delta"] = delta;
+var newOnCycle_label = document.createElement("label")
+newOnCycle_label.textContent = "newOnCycle:";
+newOnCycle_label.htmlFor="newOnCycle";
+_param_div.appendChild(newOnCycle_label);
+var newOnCycle = document.createElement("input");
+newOnCycle.id="newOnCycle";
+_param_datalist = document.createElement("datalist");
+_param_datalist.id="RTIME_Nothing_newOnCycle_datalist";
+_param_div.appendChild(_param_datalist);
+newOnCycle.setAttribute("list", "RTIME_Nothing_newOnCycle_datalist");
+newOnCycle.getValue = function() {return new BBoolean(this.value == "true")}
+newOnCycle.parseValue = function(value) {return new BBoolean(value == "true")}
+_param_div.appendChild(newOnCycle);
+_machine_events["RTIME_Nothing"]["newOnCycle"] = newOnCycle;
+
+_operations_view.appendChild(_param_div);
+
+
+_machine_events["RTIME_Nothing"].style.gridColumn="-1";
+_machine_events["RTIME_Nothing"].innerHTML = "RTIME_Nothing";
+_machine_events["RTIME_Nothing"].parameterNames = ["delta", "newOnCycle", ];
+_machine_events["RTIME_Nothing"].onclick = function() {
+  var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_BlinkerOn"] == null ?? true) {
-      transition = _machine["_tr_RTIME_BlinkerOn"]();
-      _transition_list[index]["RTIME_BlinkerOn"] = transition;
+  if(_transition_list[index]?.["RTIME_Nothing"] == null ?? true) {
+      transition = _machine["_tr_RTIME_Nothing"]();
+      _transition_list[index]["RTIME_Nothing"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_BlinkerOn"];
+      transition = _transition_list[index]["RTIME_Nothing"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_BlinkerOn is not enabled!");
+        alert("Event RTIME_Nothing is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Nothing"]["delta"].getValue(), parameters?.newOnCycle ?? _machine_events["RTIME_Nothing"]["newOnCycle"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_Nothing!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_BlinkerOn!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_Nothing!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_BlinkerOn(...parameters);
-    createHistoryElement("RTIME_BlinkerOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_Nothing"]["delta"].getValue(), parameters?.newOnCycle ?? _machine_events["RTIME_Nothing"]["newOnCycle"].getValue(), ];
+    var returnValue = _machine.RTIME_Nothing(...parameters);
+    createHistoryElement("RTIME_Nothing(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOn"]["delta"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_BlinkerOn", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_Nothing"]["delta"].getValue().toString();
+    parametersJSON["newOnCycle"] = _machine_events["RTIME_Nothing"]["newOnCycle"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_Nothing", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOn"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Nothing"]["delta"].getValue(), parameters?.newOnCycle ?? _machine_events["RTIME_Nothing"]["newOnCycle"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_BlinkerOn"] = transition;
+        _transition_list[index]["RTIME_Nothing"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_BlinkerOn"].disabled = true;
+            _machine_events["RTIME_Nothing"].disabled = true;
         }
-        createOptionList("RTIME_BlinkerOn", transition);
+        createOptionList("RTIME_Nothing", transition);
     }
     alert(error.message);
   }
 }
 
+_operations_view.appendChild(_machine_events["RTIME_Nothing"]);
+
+
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
 _machine_events["ENV_Turn_EngineOff"] = document.createElement("button");
@@ -1299,7 +1322,7 @@ _machine_events["ENV_Turn_EngineOff"].onclick = function() {
     var returnValue = _machine.ENV_Turn_EngineOff(...parameters);
     createHistoryElement("ENV_Turn_EngineOff(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "ENV_Turn_EngineOff", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1355,7 +1378,7 @@ _svg_events["engine-start"].onclick = function() {
     var returnValue = _machine.ENV_Turn_EngineOff(...parameters);
     createHistoryElement("ENV_Turn_EngineOff(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "ENV_Turn_EngineOff", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1377,133 +1400,190 @@ _svg_events["engine-start"].onclick = function() {
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["ENV_Hazard_blinking"] = document.createElement("button");
-var newSwitchPos_label = document.createElement("label")
-newSwitchPos_label.textContent = "newSwitchPos:";
-newSwitchPos_label.htmlFor="newSwitchPos";
-_param_div.appendChild(newSwitchPos_label);
-var newSwitchPos = document.createElement("input");
-newSwitchPos.id="newSwitchPos";
+_machine_events["ENV_Pitman_DirectionBlinking"] = document.createElement("button");
+var newPos_label = document.createElement("label")
+newPos_label.textContent = "newPos:";
+newPos_label.htmlFor="newPos";
+_param_div.appendChild(newPos_label);
+var newPos = document.createElement("input");
+newPos.id="newPos";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="ENV_Hazard_blinking_newSwitchPos_datalist";
+_param_datalist.id="ENV_Pitman_DirectionBlinking_newPos_datalist";
 _param_div.appendChild(_param_datalist);
-newSwitchPos.setAttribute("list", "ENV_Hazard_blinking_newSwitchPos_datalist");
-newSwitchPos.getValue = function() {return SWITCH_STATUS["get_" + this.value]()}
-newSwitchPos.parseValue = function(value) {return SWITCH_STATUS["get_" + value]()}
-_param_div.appendChild(newSwitchPos);
-_machine_events["ENV_Hazard_blinking"]["newSwitchPos"] = newSwitchPos;
+newPos.setAttribute("list", "ENV_Pitman_DirectionBlinking_newPos_datalist");
+newPos.getValue = function() {return PITMAN_POSITION["get_" + this.value]()}
+newPos.parseValue = function(value) {return PITMAN_POSITION["get_" + value]()}
+_param_div.appendChild(newPos);
+_machine_events["ENV_Pitman_DirectionBlinking"]["newPos"] = newPos;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["ENV_Hazard_blinking"].style.gridColumn="-1";
-_machine_events["ENV_Hazard_blinking"].innerHTML = "ENV_Hazard_blinking";
-_machine_events["ENV_Hazard_blinking"].parameterNames = ["newSwitchPos", ];
-_machine_events["ENV_Hazard_blinking"].onclick = function() {
+_machine_events["ENV_Pitman_DirectionBlinking"].style.gridColumn="-1";
+_machine_events["ENV_Pitman_DirectionBlinking"].innerHTML = "ENV_Pitman_DirectionBlinking";
+_machine_events["ENV_Pitman_DirectionBlinking"].parameterNames = ["newPos", ];
+_machine_events["ENV_Pitman_DirectionBlinking"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Hazard_blinking"] == null ?? true) {
-      transition = _machine["_tr_ENV_Hazard_blinking"]();
-      _transition_list[index]["ENV_Hazard_blinking"] = transition;
+  if(_transition_list[index]?.["ENV_Pitman_DirectionBlinking"] == null ?? true) {
+      transition = _machine["_tr_ENV_Pitman_DirectionBlinking"]();
+      _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Hazard_blinking"];
+      transition = _transition_list[index]["ENV_Pitman_DirectionBlinking"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Hazard_blinking is not enabled!");
+        alert("Event ENV_Pitman_DirectionBlinking is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ];
-    var returnValue = _machine.ENV_Hazard_blinking(...parameters);
-    createHistoryElement("ENV_Hazard_blinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ];
+    var returnValue = _machine.ENV_Pitman_DirectionBlinking(...parameters);
+    createHistoryElement("ENV_Pitman_DirectionBlinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["newSwitchPos"] = _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue().toString();
-
-    _current_trace.push({name: "ENV_Hazard_blinking", params: parametersJSON});
+    parametersJSON["newPos"] = _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Pitman_DirectionBlinking", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Hazard_blinking"] = transition;
+        _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Hazard_blinking"].disabled = true;
+            _machine_events["ENV_Pitman_DirectionBlinking"].disabled = true;
         }
-        createOptionList("ENV_Hazard_blinking", transition);
+        createOptionList("ENV_Pitman_DirectionBlinking", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["ENV_Hazard_blinking"]);
+_operations_view.appendChild(_machine_events["ENV_Pitman_DirectionBlinking"]);
 
-_svg_events["warningLightOuter"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("warningLightOuter");
-_svg_events["warningLightOuter"].onclick = function() {
+_svg_events["PitmanUpward"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("PitmanUpward");
+_svg_events["PitmanUpward"].onclick = function() {
   var parameters = {
+    newPos: new PITMAN_POSITION(enum_PITMAN_POSITION.Upward7),
 };
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["ENV_Hazard_blinking"] == null ?? true) {
-      transition = _machine["_tr_ENV_Hazard_blinking"]();
-      _transition_list[index]["ENV_Hazard_blinking"] = transition;
+  if(_transition_list[index]?.["ENV_Pitman_DirectionBlinking"] == null ?? true) {
+      transition = _machine["_tr_ENV_Pitman_DirectionBlinking"]();
+      _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
   } else {
-      transition = _transition_list[index]["ENV_Hazard_blinking"];
+      transition = _transition_list[index]["ENV_Pitman_DirectionBlinking"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event ENV_Hazard_blinking is not enabled!");
+        alert("Event ENV_Pitman_DirectionBlinking is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event ENV_Hazard_blinking!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ];
-    var returnValue = _machine.ENV_Hazard_blinking(...parameters);
-    createHistoryElement("ENV_Hazard_blinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ];
+    var returnValue = _machine.ENV_Pitman_DirectionBlinking(...parameters);
+    createHistoryElement("ENV_Pitman_DirectionBlinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["newSwitchPos"] = _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue().toString();
+    parametersJSON["newPos"] = _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Pitman_DirectionBlinking", params: parametersJSON});
+    updateVisuals();
+  } catch (error) {
+    if(! error instanceof SelectError) {
+        throw error;
+    }
+    if(transition instanceof BSet) {
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        transition = transition.difference(new BSet(parameterTuple));
+        _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+        if(transition.size().intValue() == 0) {
+            _machine_events["ENV_Pitman_DirectionBlinking"].disabled = true;
+        }
+        createOptionList("ENV_Pitman_DirectionBlinking", transition);
+    }
+    alert(error.message);
+  }
+}
 
-    _current_trace.push({name: "ENV_Hazard_blinking", params: parametersJSON});
+_svg_events["PitmanDownward"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("PitmanDownward");
+_svg_events["PitmanDownward"].onclick = function() {
+  var parameters = {
+    newPos: new PITMAN_POSITION(enum_PITMAN_POSITION.Downward7),
+};
+  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
+  var transition;
+  if(_transition_list[index]?.["ENV_Pitman_DirectionBlinking"] == null ?? true) {
+      transition = _machine["_tr_ENV_Pitman_DirectionBlinking"]();
+      _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
+  } else {
+      transition = _transition_list[index]["ENV_Pitman_DirectionBlinking"];
+  }
+  if(!(transition instanceof BSet)) {
+    if(!transition) {
+        alert("Event ENV_Pitman_DirectionBlinking is not enabled!");
+        return;
+    }
+  } else {
+    try  {
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+    } catch {
+        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+    if(! transition.elementOf(parameterTuple).booleanValue()) {
+        alert("Invalid parameters for event ENV_Pitman_DirectionBlinking!\nPossible values are:\n" + transition.toString());
+        return;
+    }
+  }
+  try {
+    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ];
+    var returnValue = _machine.ENV_Pitman_DirectionBlinking(...parameters);
+    createHistoryElement("ENV_Pitman_DirectionBlinking(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    let parametersJSON = {};
+    parametersJSON["newPos"] = _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Pitman_DirectionBlinking", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.newSwitchPos ?? _machine_events["ENV_Hazard_blinking"]["newSwitchPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_DirectionBlinking"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["ENV_Hazard_blinking"] = transition;
+        _transition_list[index]["ENV_Pitman_DirectionBlinking"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["ENV_Hazard_blinking"].disabled = true;
+            _machine_events["ENV_Pitman_DirectionBlinking"].disabled = true;
         }
-        createOptionList("ENV_Hazard_blinking", transition);
+        createOptionList("ENV_Pitman_DirectionBlinking", transition);
     }
     alert(error.message);
   }
@@ -1511,7 +1591,7 @@ _svg_events["warningLightOuter"].onclick = function() {
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["RTIME_Tip_blinking_Timeout"] = document.createElement("button");
+_machine_events["RTIME_BlinkerOff"] = document.createElement("button");
 var delta_label = document.createElement("label")
 delta_label.textContent = "delta:";
 delta_label.htmlFor="delta";
@@ -1519,156 +1599,130 @@ _param_div.appendChild(delta_label);
 var delta = document.createElement("input");
 delta.id="delta";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="RTIME_Tip_blinking_Timeout_delta_datalist";
+_param_datalist.id="RTIME_BlinkerOff_delta_datalist";
 _param_div.appendChild(_param_datalist);
-delta.setAttribute("list", "RTIME_Tip_blinking_Timeout_delta_datalist");
+delta.setAttribute("list", "RTIME_BlinkerOff_delta_datalist");
 delta.getValue = function() {return new BInteger(parseInt(this.value))}
 delta.parseValue = function(value) {return new BInteger(parseInt(value))}
 _param_div.appendChild(delta);
-_machine_events["RTIME_Tip_blinking_Timeout"]["delta"] = delta;
+_machine_events["RTIME_BlinkerOff"]["delta"] = delta;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["RTIME_Tip_blinking_Timeout"].style.gridColumn="-1";
-_machine_events["RTIME_Tip_blinking_Timeout"].innerHTML = "RTIME_Tip_blinking_Timeout";
-_machine_events["RTIME_Tip_blinking_Timeout"].parameterNames = ["delta", ];
-_machine_events["RTIME_Tip_blinking_Timeout"].onclick = function() {
+_machine_events["RTIME_BlinkerOff"].style.gridColumn="-1";
+_machine_events["RTIME_BlinkerOff"].innerHTML = "RTIME_BlinkerOff";
+_machine_events["RTIME_BlinkerOff"].parameterNames = ["delta", ];
+_machine_events["RTIME_BlinkerOff"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_Tip_blinking_Timeout"] == null ?? true) {
-      transition = _machine["_tr_RTIME_Tip_blinking_Timeout"]();
-      _transition_list[index]["RTIME_Tip_blinking_Timeout"] = transition;
+  if(_transition_list[index]?.["RTIME_BlinkerOff"] == null ?? true) {
+      transition = _machine["_tr_RTIME_BlinkerOff"]();
+      _transition_list[index]["RTIME_BlinkerOff"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_Tip_blinking_Timeout"];
+      transition = _transition_list[index]["RTIME_BlinkerOff"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_Tip_blinking_Timeout is not enabled!");
+        alert("Event RTIME_BlinkerOff is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_Tip_blinking_Timeout!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_Tip_blinking_Timeout!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_Tip_blinking_Timeout(...parameters);
-    createHistoryElement("RTIME_Tip_blinking_Timeout(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_BlinkerOff(...parameters);
+    createHistoryElement("RTIME_BlinkerOff(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_Tip_blinking_Timeout", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOff"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_BlinkerOff", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Tip_blinking_Timeout"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_Tip_blinking_Timeout"] = transition;
+        _transition_list[index]["RTIME_BlinkerOff"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_Tip_blinking_Timeout"].disabled = true;
+            _machine_events["RTIME_BlinkerOff"].disabled = true;
         }
-        createOptionList("RTIME_Tip_blinking_Timeout", transition);
+        createOptionList("RTIME_BlinkerOff", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["RTIME_Tip_blinking_Timeout"]);
-
-
-_param_div = document.createElement("div");
-_param_div.classList.add("param");
-_machine_events["RTIME_Passes"] = document.createElement("button");
-var delta_label = document.createElement("label")
-delta_label.textContent = "delta:";
-delta_label.htmlFor="delta";
-_param_div.appendChild(delta_label);
-var delta = document.createElement("input");
-delta.id="delta";
-_param_datalist = document.createElement("datalist");
-_param_datalist.id="RTIME_Passes_delta_datalist";
-_param_div.appendChild(_param_datalist);
-delta.setAttribute("list", "RTIME_Passes_delta_datalist");
-delta.getValue = function() {return new BInteger(parseInt(this.value))}
-delta.parseValue = function(value) {return new BInteger(parseInt(value))}
-_param_div.appendChild(delta);
-_machine_events["RTIME_Passes"]["delta"] = delta;
-
-_operations_view.appendChild(_param_div);
-
+_operations_view.appendChild(_machine_events["RTIME_BlinkerOff"]);
 
-_machine_events["RTIME_Passes"].style.gridColumn="-1";
-_machine_events["RTIME_Passes"].innerHTML = "RTIME_Passes";
-_machine_events["RTIME_Passes"].parameterNames = ["delta", ];
-_machine_events["RTIME_Passes"].onclick = function() {
-  var parameters = {};
+_svg_events["C-right"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("C-right");
+_svg_events["C-right"].onclick = function() {
+  var parameters = {
+};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_Passes"] == null ?? true) {
-      transition = _machine["_tr_RTIME_Passes"]();
-      _transition_list[index]["RTIME_Passes"] = transition;
+  if(_transition_list[index]?.["RTIME_BlinkerOff"] == null ?? true) {
+      transition = _machine["_tr_RTIME_BlinkerOff"]();
+      _transition_list[index]["RTIME_BlinkerOff"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_Passes"];
+      transition = _transition_list[index]["RTIME_BlinkerOff"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_Passes is not enabled!");
+        alert("Event RTIME_BlinkerOff is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Passes"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_Passes!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_Passes!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_Passes"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_Passes(...parameters);
-    createHistoryElement("RTIME_Passes(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ];
+    var returnValue = _machine.RTIME_BlinkerOff(...parameters);
+    createHistoryElement("RTIME_BlinkerOff(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_Passes"]["delta"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_Passes", params: parametersJSON});
+    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOff"]["delta"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "RTIME_BlinkerOff", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_Passes"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_Passes"] = transition;
+        _transition_list[index]["RTIME_BlinkerOff"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_Passes"].disabled = true;
+            _machine_events["RTIME_BlinkerOff"].disabled = true;
         }
-        createOptionList("RTIME_Passes", transition);
+        createOptionList("RTIME_BlinkerOff", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["RTIME_Passes"]);
-
-
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
 _machine_events["ENV_Turn_EngineOn"] = document.createElement("button");
@@ -1710,7 +1764,7 @@ _machine_events["ENV_Turn_EngineOn"].onclick = function() {
     var returnValue = _machine.ENV_Turn_EngineOn(...parameters);
     createHistoryElement("ENV_Turn_EngineOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "ENV_Turn_EngineOn", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1766,7 +1820,7 @@ _svg_events["front-window"].onclick = function() {
     var returnValue = _machine.ENV_Turn_EngineOn(...parameters);
     createHistoryElement("ENV_Turn_EngineOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "ENV_Turn_EngineOn", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1820,7 +1874,7 @@ _svg_events["key-on-position"].onclick = function() {
     var returnValue = _machine.ENV_Turn_EngineOn(...parameters);
     createHistoryElement("ENV_Turn_EngineOn(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "ENV_Turn_EngineOn", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -1842,137 +1896,83 @@ _svg_events["key-on-position"].onclick = function() {
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["RTIME_BlinkerOff"] = document.createElement("button");
-var delta_label = document.createElement("label")
-delta_label.textContent = "delta:";
-delta_label.htmlFor="delta";
-_param_div.appendChild(delta_label);
-var delta = document.createElement("input");
-delta.id="delta";
+_machine_events["ENV_Pitman_Tip_blinking_start"] = document.createElement("button");
+var newPos_label = document.createElement("label")
+newPos_label.textContent = "newPos:";
+newPos_label.htmlFor="newPos";
+_param_div.appendChild(newPos_label);
+var newPos = document.createElement("input");
+newPos.id="newPos";
 _param_datalist = document.createElement("datalist");
-_param_datalist.id="RTIME_BlinkerOff_delta_datalist";
+_param_datalist.id="ENV_Pitman_Tip_blinking_start_newPos_datalist";
 _param_div.appendChild(_param_datalist);
-delta.setAttribute("list", "RTIME_BlinkerOff_delta_datalist");
-delta.getValue = function() {return new BInteger(parseInt(this.value))}
-delta.parseValue = function(value) {return new BInteger(parseInt(value))}
-_param_div.appendChild(delta);
-_machine_events["RTIME_BlinkerOff"]["delta"] = delta;
+newPos.setAttribute("list", "ENV_Pitman_Tip_blinking_start_newPos_datalist");
+newPos.getValue = function() {return PITMAN_POSITION["get_" + this.value]()}
+newPos.parseValue = function(value) {return PITMAN_POSITION["get_" + value]()}
+_param_div.appendChild(newPos);
+_machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"] = newPos;
 
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["RTIME_BlinkerOff"].style.gridColumn="-1";
-_machine_events["RTIME_BlinkerOff"].innerHTML = "RTIME_BlinkerOff";
-_machine_events["RTIME_BlinkerOff"].parameterNames = ["delta", ];
-_machine_events["RTIME_BlinkerOff"].onclick = function() {
+_machine_events["ENV_Pitman_Tip_blinking_start"].style.gridColumn="-1";
+_machine_events["ENV_Pitman_Tip_blinking_start"].innerHTML = "ENV_Pitman_Tip_blinking_start";
+_machine_events["ENV_Pitman_Tip_blinking_start"].parameterNames = ["newPos", ];
+_machine_events["ENV_Pitman_Tip_blinking_start"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["RTIME_BlinkerOff"] == null ?? true) {
-      transition = _machine["_tr_RTIME_BlinkerOff"]();
-      _transition_list[index]["RTIME_BlinkerOff"] = transition;
+  if(_transition_list[index]?.["ENV_Pitman_Tip_blinking_start"] == null ?? true) {
+      transition = _machine["_tr_ENV_Pitman_Tip_blinking_start"]();
+      _transition_list[index]["ENV_Pitman_Tip_blinking_start"] = transition;
   } else {
-      transition = _transition_list[index]["RTIME_BlinkerOff"];
+      transition = _transition_list[index]["ENV_Pitman_Tip_blinking_start"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event RTIME_BlinkerOff is not enabled!");
+        alert("Event ENV_Pitman_Tip_blinking_start is not enabled!");
         return;
     }
   } else {
     try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_Tip_blinking_start!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event ENV_Pitman_Tip_blinking_start!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_BlinkerOff(...parameters);
-    createHistoryElement("RTIME_BlinkerOff(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var parameters = [parameters?.newPos ?? _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue(), ];
+    var returnValue = _machine.ENV_Pitman_Tip_blinking_start(...parameters);
+    createHistoryElement("ENV_Pitman_Tip_blinking_start(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOff"]["delta"].getValue().toString();
-
-    _current_trace.push({name: "RTIME_BlinkerOff", params: parametersJSON});
+    parametersJSON["newPos"] = _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue().toString();
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "ENV_Pitman_Tip_blinking_start", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
         throw error;
     }
     if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
+        var parameterTuple = [parameters?.newPos ?? _machine_events["ENV_Pitman_Tip_blinking_start"]["newPos"].getValue(), ].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_BlinkerOff"] = transition;
+        _transition_list[index]["ENV_Pitman_Tip_blinking_start"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_BlinkerOff"].disabled = true;
+            _machine_events["ENV_Pitman_Tip_blinking_start"].disabled = true;
         }
-        createOptionList("RTIME_BlinkerOff", transition);
+        createOptionList("ENV_Pitman_Tip_blinking_start", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["RTIME_BlinkerOff"]);
-
-_svg_events["C-right"] = document.getElementById("LichtUebersicht_v4").contentDocument.getElementById("C-right");
-_svg_events["C-right"].onclick = function() {
-  var parameters = {
-};
-  let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
-  var transition;
-  if(_transition_list[index]?.["RTIME_BlinkerOff"] == null ?? true) {
-      transition = _machine["_tr_RTIME_BlinkerOff"]();
-      _transition_list[index]["RTIME_BlinkerOff"] = transition;
-  } else {
-      transition = _transition_list[index]["RTIME_BlinkerOff"];
-  }
-  if(!(transition instanceof BSet)) {
-    if(!transition) {
-        alert("Event RTIME_BlinkerOff is not enabled!");
-        return;
-    }
-  } else {
-    try  {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
-    } catch {
-        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-    if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event RTIME_BlinkerOff!\nPossible values are:\n" + transition.toString());
-        return;
-    }
-  }
-  try {
-    var parameters = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ];
-    var returnValue = _machine.RTIME_BlinkerOff(...parameters);
-    createHistoryElement("RTIME_BlinkerOff(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-    let parametersJSON = {};
-    parametersJSON["delta"] = _machine_events["RTIME_BlinkerOff"]["delta"].getValue().toString();
+_operations_view.appendChild(_machine_events["ENV_Pitman_Tip_blinking_start"]);
 
-    _current_trace.push({name: "RTIME_BlinkerOff", params: parametersJSON});
-    updateVisuals();
-  } catch (error) {
-    if(! error instanceof SelectError) {
-        throw error;
-    }
-    if(transition instanceof BSet) {
-        var parameterTuple = [parameters?.delta ?? _machine_events["RTIME_BlinkerOff"]["delta"].getValue(), ].reduce((a, e) => new BTuple(a, e));
-        transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["RTIME_BlinkerOff"] = transition;
-        if(transition.size().intValue() == 0) {
-            _machine_events["RTIME_BlinkerOff"].disabled = true;
-        }
-        createOptionList("RTIME_BlinkerOff", transition);
-    }
-    alert(error.message);
-  }
-}
 
 
 
@@ -1994,8 +1994,7 @@ function displayTrace(trace) {
       let parameters = Object.keys(transition.params).map(param => _machine_events[transition.name][param].parseValue(transition.params[param]))
       let returnValue = _machine[transition.name](...parameters);
       createHistoryElement(transition.name + "(" + parameters.join(", ") + ")" + (returnValue? " (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-      let parametersJSON = {};
-
+      let parametersJSON = transition.params;
       _current_trace.push({name: transition.name, params: parametersJSON});
     }
     updateVisuals();
diff --git a/B2Program/TrafficLight/TrafficLight-visualisation.js b/B2Program/TrafficLight/TrafficLight-visualisation.js
index 3353be88b4cb92a40235fa4a02eb52969c5e6b19..e757ac59e86e8a6a8589c171643a69b4e74333e1 100644
--- a/B2Program/TrafficLight/TrafficLight-visualisation.js
+++ b/B2Program/TrafficLight/TrafficLight-visualisation.js
@@ -80,7 +80,7 @@ _var_div.id = "_check_inv_3";
 _machine_vars["_check_inv_3"] = _var_div;
 _var_label = document.createElement("label");
 _var_label.htmlFor = "_check_inv_3";
-_var_label.innerHTML = "tl_peds=red or tl_cars=red";
+_var_label.innerHTML = "tl_peds=redortl_cars=red";
 _state_view_invariant.appendChild(_var_label);
 _state_view_invariant.appendChild(_var_div);
 
@@ -264,47 +264,47 @@ var _machine_events = {};
 var _svg_events = {};
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["cars_y"] = document.createElement("button");
+_machine_events["cars_g"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["cars_y"].style.gridColumn="-1";
-_machine_events["cars_y"].innerHTML = "cars_y";
-_machine_events["cars_y"].parameterNames = [];
-_machine_events["cars_y"].onclick = function() {
+_machine_events["cars_g"].style.gridColumn="-1";
+_machine_events["cars_g"].innerHTML = "cars_g";
+_machine_events["cars_g"].parameterNames = [];
+_machine_events["cars_g"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["cars_y"] == null ?? true) {
-      transition = _machine["_tr_cars_y"]();
-      _transition_list[index]["cars_y"] = transition;
+  if(_transition_list[index]?.["cars_g"] == null ?? true) {
+      transition = _machine["_tr_cars_g"]();
+      _transition_list[index]["cars_g"] = transition;
   } else {
-      transition = _transition_list[index]["cars_y"];
+      transition = _transition_list[index]["cars_g"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event cars_y is not enabled!");
+        alert("Event cars_g is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.cars_y(...parameters);
-    createHistoryElement("cars_y(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.cars_g(...parameters);
+    createHistoryElement("cars_g(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "cars_y", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "cars_g", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -313,54 +313,54 @@ _machine_events["cars_y"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["cars_y"] = transition;
+        _transition_list[index]["cars_g"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["cars_y"].disabled = true;
+            _machine_events["cars_g"].disabled = true;
         }
-        createOptionList("cars_y", transition);
+        createOptionList("cars_g", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["cars_y"]);
+_operations_view.appendChild(_machine_events["cars_g"]);
 
-_svg_events["cars_yellow_2"] = document.getElementById("traffic_light").contentDocument.getElementById("cars_yellow_2");
-_svg_events["cars_yellow_2"].onclick = function() {
+_svg_events["cars_green"] = document.getElementById("traffic_light").contentDocument.getElementById("cars_green");
+_svg_events["cars_green"].onclick = function() {
   var parameters = {
 };
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["cars_y"] == null ?? true) {
-      transition = _machine["_tr_cars_y"]();
-      _transition_list[index]["cars_y"] = transition;
+  if(_transition_list[index]?.["cars_g"] == null ?? true) {
+      transition = _machine["_tr_cars_g"]();
+      _transition_list[index]["cars_g"] = transition;
   } else {
-      transition = _transition_list[index]["cars_y"];
+      transition = _transition_list[index]["cars_g"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event cars_y is not enabled!");
+        alert("Event cars_g is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.cars_y(...parameters);
-    createHistoryElement("cars_y(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.cars_g(...parameters);
+    createHistoryElement("cars_g(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "cars_y", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "cars_g", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -369,11 +369,11 @@ _svg_events["cars_yellow_2"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["cars_y"] = transition;
+        _transition_list[index]["cars_g"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["cars_y"].disabled = true;
+            _machine_events["cars_g"].disabled = true;
         }
-        createOptionList("cars_y", transition);
+        createOptionList("cars_g", transition);
     }
     alert(error.message);
   }
@@ -420,7 +420,7 @@ _machine_events["peds_g"].onclick = function() {
     var returnValue = _machine.peds_g(...parameters);
     createHistoryElement("peds_g(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "peds_g", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -476,7 +476,7 @@ _svg_events["peds_green"].onclick = function() {
     var returnValue = _machine.peds_g(...parameters);
     createHistoryElement("peds_g(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "peds_g", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -498,47 +498,47 @@ _svg_events["peds_green"].onclick = function() {
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["cars_r"] = document.createElement("button");
+_machine_events["cars_y"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["cars_r"].style.gridColumn="-1";
-_machine_events["cars_r"].innerHTML = "cars_r";
-_machine_events["cars_r"].parameterNames = [];
-_machine_events["cars_r"].onclick = function() {
+_machine_events["cars_y"].style.gridColumn="-1";
+_machine_events["cars_y"].innerHTML = "cars_y";
+_machine_events["cars_y"].parameterNames = [];
+_machine_events["cars_y"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["cars_r"] == null ?? true) {
-      transition = _machine["_tr_cars_r"]();
-      _transition_list[index]["cars_r"] = transition;
+  if(_transition_list[index]?.["cars_y"] == null ?? true) {
+      transition = _machine["_tr_cars_y"]();
+      _transition_list[index]["cars_y"] = transition;
   } else {
-      transition = _transition_list[index]["cars_r"];
+      transition = _transition_list[index]["cars_y"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event cars_r is not enabled!");
+        alert("Event cars_y is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.cars_r(...parameters);
-    createHistoryElement("cars_r(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.cars_y(...parameters);
+    createHistoryElement("cars_y(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "cars_r", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "cars_y", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -547,54 +547,54 @@ _machine_events["cars_r"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["cars_r"] = transition;
+        _transition_list[index]["cars_y"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["cars_r"].disabled = true;
+            _machine_events["cars_y"].disabled = true;
         }
-        createOptionList("cars_r", transition);
+        createOptionList("cars_y", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["cars_r"]);
+_operations_view.appendChild(_machine_events["cars_y"]);
 
-_svg_events["cars_red"] = document.getElementById("traffic_light").contentDocument.getElementById("cars_red");
-_svg_events["cars_red"].onclick = function() {
+_svg_events["cars_yellow_2"] = document.getElementById("traffic_light").contentDocument.getElementById("cars_yellow_2");
+_svg_events["cars_yellow_2"].onclick = function() {
   var parameters = {
 };
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["cars_r"] == null ?? true) {
-      transition = _machine["_tr_cars_r"]();
-      _transition_list[index]["cars_r"] = transition;
+  if(_transition_list[index]?.["cars_y"] == null ?? true) {
+      transition = _machine["_tr_cars_y"]();
+      _transition_list[index]["cars_y"] = transition;
   } else {
-      transition = _transition_list[index]["cars_r"];
+      transition = _transition_list[index]["cars_y"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event cars_r is not enabled!");
+        alert("Event cars_y is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_y!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.cars_r(...parameters);
-    createHistoryElement("cars_r(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.cars_y(...parameters);
+    createHistoryElement("cars_y(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "cars_r", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "cars_y", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -603,11 +603,11 @@ _svg_events["cars_red"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["cars_r"] = transition;
+        _transition_list[index]["cars_y"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["cars_r"].disabled = true;
+            _machine_events["cars_y"].disabled = true;
         }
-        createOptionList("cars_r", transition);
+        createOptionList("cars_y", transition);
     }
     alert(error.message);
   }
@@ -654,7 +654,7 @@ _machine_events["peds_r"].onclick = function() {
     var returnValue = _machine.peds_r(...parameters);
     createHistoryElement("peds_r(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "peds_r", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -710,7 +710,7 @@ _svg_events["peds_red"].onclick = function() {
     var returnValue = _machine.peds_r(...parameters);
     createHistoryElement("peds_r(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "peds_r", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -771,7 +771,7 @@ _machine_events["cars_ry"].onclick = function() {
     var returnValue = _machine.cars_ry(...parameters);
     createHistoryElement("cars_ry(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "cars_ry", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -827,7 +827,7 @@ _svg_events["cars_yellow_1"].onclick = function() {
     var returnValue = _machine.cars_ry(...parameters);
     createHistoryElement("cars_ry(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
+    _current_trace = _current_trace.slice(0, index + 1)
     _current_trace.push({name: "cars_ry", params: parametersJSON});
     updateVisuals();
   } catch (error) {
@@ -849,47 +849,47 @@ _svg_events["cars_yellow_1"].onclick = function() {
 
 _param_div = document.createElement("div");
 _param_div.classList.add("param");
-_machine_events["cars_g"] = document.createElement("button");
+_machine_events["cars_r"] = document.createElement("button");
 _operations_view.appendChild(_param_div);
 
 
-_machine_events["cars_g"].style.gridColumn="-1";
-_machine_events["cars_g"].innerHTML = "cars_g";
-_machine_events["cars_g"].parameterNames = [];
-_machine_events["cars_g"].onclick = function() {
+_machine_events["cars_r"].style.gridColumn="-1";
+_machine_events["cars_r"].innerHTML = "cars_r";
+_machine_events["cars_r"].parameterNames = [];
+_machine_events["cars_r"].onclick = function() {
   var parameters = {};
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["cars_g"] == null ?? true) {
-      transition = _machine["_tr_cars_g"]();
-      _transition_list[index]["cars_g"] = transition;
+  if(_transition_list[index]?.["cars_r"] == null ?? true) {
+      transition = _machine["_tr_cars_r"]();
+      _transition_list[index]["cars_r"] = transition;
   } else {
-      transition = _transition_list[index]["cars_g"];
+      transition = _transition_list[index]["cars_r"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event cars_g is not enabled!");
+        alert("Event cars_r is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.cars_g(...parameters);
-    createHistoryElement("cars_g(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.cars_r(...parameters);
+    createHistoryElement("cars_r(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "cars_g", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "cars_r", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -898,54 +898,54 @@ _machine_events["cars_g"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["cars_g"] = transition;
+        _transition_list[index]["cars_r"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["cars_g"].disabled = true;
+            _machine_events["cars_r"].disabled = true;
         }
-        createOptionList("cars_g", transition);
+        createOptionList("cars_r", transition);
     }
     alert(error.message);
   }
 }
 
-_operations_view.appendChild(_machine_events["cars_g"]);
+_operations_view.appendChild(_machine_events["cars_r"]);
 
-_svg_events["cars_green"] = document.getElementById("traffic_light").contentDocument.getElementById("cars_green");
-_svg_events["cars_green"].onclick = function() {
+_svg_events["cars_red"] = document.getElementById("traffic_light").contentDocument.getElementById("cars_red");
+_svg_events["cars_red"].onclick = function() {
   var parameters = {
 };
   let index = [..._history_view.children].indexOf(_history_view.querySelector(".active"));
   var transition;
-  if(_transition_list[index]?.["cars_g"] == null ?? true) {
-      transition = _machine["_tr_cars_g"]();
-      _transition_list[index]["cars_g"] = transition;
+  if(_transition_list[index]?.["cars_r"] == null ?? true) {
+      transition = _machine["_tr_cars_r"]();
+      _transition_list[index]["cars_r"] = transition;
   } else {
-      transition = _transition_list[index]["cars_g"];
+      transition = _transition_list[index]["cars_r"];
   }
   if(!(transition instanceof BSet)) {
     if(!transition) {
-        alert("Event cars_g is not enabled!");
+        alert("Event cars_r is not enabled!");
         return;
     }
   } else {
     try  {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
     } catch {
-        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
         return;
     }
     if(! transition.elementOf(parameterTuple).booleanValue()) {
-        alert("Invalid parameters for event cars_g!\nPossible values are:\n" + transition.toString());
+        alert("Invalid parameters for event cars_r!\nPossible values are:\n" + transition.toString());
         return;
     }
   }
   try {
     var parameters = [];
-    var returnValue = _machine.cars_g(...parameters);
-    createHistoryElement("cars_g(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
+    var returnValue = _machine.cars_r(...parameters);
+    createHistoryElement("cars_r(" + parameters.join(", ") + ")" + (returnValue? " -> (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
     let parametersJSON = {};
-
-    _current_trace.push({name: "cars_g", params: parametersJSON});
+    _current_trace = _current_trace.slice(0, index + 1)
+    _current_trace.push({name: "cars_r", params: parametersJSON});
     updateVisuals();
   } catch (error) {
     if(! error instanceof SelectError) {
@@ -954,11 +954,11 @@ _svg_events["cars_green"].onclick = function() {
     if(transition instanceof BSet) {
         var parameterTuple = [].reduce((a, e) => new BTuple(a, e));
         transition = transition.difference(new BSet(parameterTuple));
-        _transition_list[index]["cars_g"] = transition;
+        _transition_list[index]["cars_r"] = transition;
         if(transition.size().intValue() == 0) {
-            _machine_events["cars_g"].disabled = true;
+            _machine_events["cars_r"].disabled = true;
         }
-        createOptionList("cars_g", transition);
+        createOptionList("cars_r", transition);
     }
     alert(error.message);
   }
@@ -984,8 +984,7 @@ function displayTrace(trace) {
       let parameters = Object.keys(transition.params).map(param => _machine_events[transition.name][param].parseValue(transition.params[param]))
       let returnValue = _machine[transition.name](...parameters);
       createHistoryElement(transition.name + "(" + parameters.join(", ") + ")" + (returnValue? " (" + returnValue.toString() + ")": ""), _history_view.querySelector(".active").index + 1);
-      let parametersJSON = {};
-
+      let parametersJSON = transition.params;
       _current_trace.push({name: transition.name, params: parametersJSON});
     }
     updateVisuals();
@@ -1049,4 +1048,4 @@ async function runTrace(ms) {
       currentHistoryElement = _history_view.querySelector(".active");
       index = currentHistoryElement.index + 1;
     }
-}
+}
\ No newline at end of file