 }
 
 // get edge
-int get_edge(String e_type, String msg) {
+int get_edge(String e_type, String msg, int from) {
   int i;
   String t, n;
   for (i = 0; i < 10; i++) {
     t = edges[i].type;
     n = edges[i].name;
-    if (t == e_type && n == msg) {
+    if (t == e_type && (n == msg || (msg == "*" && edges[i].from == from))) {
       return i;
     }
   }

  if (graph_loaded) {
    run_state = new_state;
  }
  // next line... jsut for fun (remove later ;)
  //digitalWrite(led, (int)run_state);
  if (!previous_state && run_state) { // rising edge
    enq_message("graph_init");

    set_run_state(0);
    return;
  }
  e_index = get_edge("msg", msg, -1);
  if (e_index < 0) {
    e_index = get_edge("flo", msg, -1);
  }
  if (e_index < 0) {
    #ifdef DUBUG_BUILD
