diff --git a/pd/nw/todo.txt b/pd/nw/todo.txt
index 4e887c5c83bdcd9a712dd5d725c2f1f2614a91c3..6e5c2609b11e3d73671c47368b2955a707e4d1a3 100644
--- a/pd/nw/todo.txt
+++ b/pd/nw/todo.txt
@@ -146,6 +146,10 @@ Everything else: (A [*] means we've fixed it)
 [ ] change x_x1..y2 to simple x_bbox[4], and change current x_bbox to
     x_cachebbox (or something like that)
 [ ] figure out why gatom_retext sends a fill color to GUI
+[ ] look into changing 'x' format specifier from \"x%.6lx\" to more generic
+    \"%.6lx\". (Not exactly sure what good the "x" does there.)  It's only
+    specified in s_inter and in editor_new, so it should be easy to amend
+    if need be.
 
 Crashers
 --------
diff --git a/pd/src/g_all_guis.c b/pd/src/g_all_guis.c
index 67e3cd43e0b537768ba4e4dad900e21be5075e96..ca7e1f75cd1fb5566c51a0d990e6d8e4760f7057 100644
--- a/pd/src/g_all_guis.c
+++ b/pd/src/g_all_guis.c
@@ -233,9 +233,9 @@ void iemgui_label(t_iemgui *x, t_symbol *s)
         sys_vgui(".x%lx.c itemconfigure %lxLABEL -text {%s} \n",
             glist_getcanvas(x->x_glist), x,
             s!=s_empty?x->x_lab->s_name:"");
-        gui_vmess("gui_iemgui_label_set", "sss",
-            canvas_tag(glist_getcanvas(x->x_glist)),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_set", "xxs",
+            glist_getcanvas(x->x_glist),
+            x,
             s != s_empty ? x->x_lab->s_name : "");
         iemgui_shouldvis(x, IEM_GUI_DRAW_MODE_CONFIG);
     }
@@ -251,9 +251,9 @@ void iemgui_label_pos(t_iemgui *x, t_symbol *s, int ac, t_atom *av)
         //    glist_getcanvas(x->x_glist), x,
         //    text_xpix((t_object *)x,x->x_glist)+x->x_ldx,
         //    text_ypix((t_object *)x,x->x_glist)+x->x_ldy);
-        gui_vmess("gui_iemgui_label_coords", "ssii",
-            canvas_tag(glist_getcanvas(x->x_glist)),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_coords", "xxii",
+            glist_getcanvas(x->x_glist),
+            x,
             x->x_ldx,
             x->x_ldy);
         iemgui_shouldvis(x, IEM_GUI_DRAW_MODE_CONFIG);
@@ -270,9 +270,9 @@ void iemgui_label_font(t_iemgui *x, t_symbol *s, int ac, t_atom *av)
     {
         //sys_vgui(".x%lx.c itemconfigure %lxLABEL -font %s\n",
         //    glist_getcanvas(x->x_glist), x, iemgui_font(x));
-        gui_vmess("gui_iemgui_label_font", "sss",
-            canvas_tag(glist_getcanvas(x->x_glist)),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_font", "xxs",
+            glist_getcanvas(x->x_glist),
+            x,
             iemgui_font(x));
         iemgui_shouldvis(x, IEM_GUI_DRAW_MODE_CONFIG);
     }
@@ -517,7 +517,7 @@ void iemgui_select(t_gobj *z, t_glist *glist, int selected)
         x->x_selected = NULL;
     //sys_vgui(".x%lx.c itemconfigure {x%lx&&border} -stroke %s\n", canvas, x,
     //  x->x_selected && x->x_glist == canvas ? selection_color : border_color);
-    gui_vmess("gui_text_select_color", "ss", canvas_tag(canvas), gobj_tag(x));
+    gui_vmess("gui_text_select_color", "xx", canvas, x);
     x->x_draw((void *)z, glist, IEM_GUI_DRAW_MODE_SELECT);
     if (selected < 2)
     {
@@ -959,12 +959,12 @@ void iemgui_tag_selected(t_iemgui *x) {
     if(x->x_selected)
     {
         //sys_vgui(".x%lx.c addtag selected withtag x%lx\n", canvas, x);
-        gui_vmess("gui_text_select", "ss", canvas_tag(canvas), gobj_tag(x));
+        gui_vmess("gui_text_select", "xx", canvas, x);
     }
     else
     {
         //sys_vgui(".x%lx.c dtag x%lx selected\n", canvas, x);
-        gui_vmess("gui_text_deselect", "ss", canvas_tag(canvas), gobj_tag(x));
+        gui_vmess("gui_text_deselect", "xx", canvas, x);
     }
 }
 
@@ -979,9 +979,9 @@ void iemgui_label_draw_new(t_iemgui *x) {
     //     x->x_lab!=s_empty?x->x_lab->s_name:"",
     //     iemgui_font(x), x->x_lcol, x, x);
     sprintf(col, "#%6.6x", x->x_lcol);
-    gui_vmess("gui_iemgui_label_new", "ssiisss",
-        canvas_tag(canvas),
-        gobj_tag(x),
+    gui_vmess("gui_iemgui_label_new", "xxiisss",
+        canvas,
+        x,
         x->x_ldx,
         x->x_ldy,
         col,
@@ -995,9 +995,9 @@ void iemgui_label_draw_move(t_iemgui *x) {
     int y1=text_ypix(&x->x_obj, x->x_glist);
     //sys_vgui(".x%lx.c coords %lxLABEL %d %d\n",
     //    canvas, x, x1+x->x_ldx, y1+x->x_ldy);
-    gui_vmess("gui_iemgui_label_coords", "ssii",
-        canvas_tag(glist_getcanvas(x->x_glist)),
-        gobj_tag(x),
+    gui_vmess("gui_iemgui_label_coords", "xxii",
+        glist_getcanvas(x->x_glist),
+        x,
         x->x_ldx,
         x->x_ldy);
 }
@@ -1011,18 +1011,18 @@ void iemgui_label_draw_config(t_iemgui *x) {
         //         "-fill $pd_colors(selection) -text {%s} \n",
         //     canvas, x, iemgui_font(x), 
         //     x->x_lab!=s_empty?x->x_lab->s_name:"");
-        gui_vmess("gui_iemgui_label_font", "sss",
-            canvas_tag(glist_getcanvas(x->x_glist)),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_font", "xxs",
+            glist_getcanvas(x->x_glist),
+            x,
             iemgui_font(x));
-        gui_vmess("gui_iemgui_label_set", "sss",
-            canvas_tag(glist_getcanvas(x->x_glist)),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_set", "xxs",
+            glist_getcanvas(x->x_glist),
+            x,
             x->x_lab != s_empty ? x->x_lab->s_name: "");
         sprintf(col, "#%6.6x", x->x_lcol);
-        gui_vmess("gui_iemgui_label_color", "sss",
-            canvas_tag(canvas),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_color", "xxs",
+            canvas,
+            x,
             col);
     }
     else
@@ -1031,18 +1031,18 @@ void iemgui_label_draw_config(t_iemgui *x) {
         //         "-fill #%6.6x -text {%s} \n",
         //     canvas, x, iemgui_font(x),
         //     x->x_lcol, x->x_lab!=s_empty?x->x_lab->s_name:"");
-        gui_vmess("gui_iemgui_label_font", "sss",
-            canvas_tag(glist_getcanvas(x->x_glist)),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_font", "xxs",
+            glist_getcanvas(x->x_glist),
+            x,
             iemgui_font(x));
-        gui_vmess("gui_iemgui_label_set", "sss",
-            canvas_tag(glist_getcanvas(x->x_glist)),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_set", "xxs",
+            glist_getcanvas(x->x_glist),
+            x,
             x->x_lab != s_empty ? x->x_lab->s_name: "");
         sprintf(col, "#%6.6x", x->x_lcol);
-        gui_vmess("gui_iemgui_label_color", "sss",
-            canvas_tag(canvas),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_color", "xxs",
+            canvas,
+            x,
             col);
     }
     if (x->x_selected == canvas && x->x_glist == canvas)
@@ -1061,18 +1061,18 @@ void iemgui_label_draw_select(t_iemgui *x) {
     {
         //sys_vgui(".x%lx.c itemconfigure %lxLABEL "
         //    "-fill $pd_colors(selection)\n", canvas, x);
-        gui_vmess("gui_iemgui_label_select", "ssi",
-            canvas_tag(canvas),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_select", "xxi",
+            canvas,
+            x,
             1);
     }
     else
     {
         //sys_vgui(".x%lx.c itemconfigure %lxLABEL -fill #%6.6x\n",
         //    canvas, x, x->x_lcol);
-        gui_vmess("gui_iemgui_label_select", "ssi",
-            canvas_tag(canvas),
-            gobj_tag(x),
+        gui_vmess("gui_iemgui_label_select", "xxi",
+            canvas,
+            x,
             0);
     }
 }
@@ -1113,8 +1113,8 @@ void iemgui_draw_io(t_iemgui *x, int old_sr_flags)
         //     iem_get_tag(canvas, x), i, x,
         //     x->x_selected == x->x_glist ? "iemgui selected" : "iemgui");
         sprintf(tagbuf, "%so%d", iem_get_tag(canvas, x), i);
-        gui_vmess("gui_canvas_drawio", "sssiiiiiisiii", canvas_tag(canvas),
-            gobj_tag(x), tagbuf,
+        gui_vmess("gui_canvas_drawio", "xxsiiiiiisiii", canvas,
+            x, tagbuf,
             x1+i*k, y2-1, x1+i*k + IOWIDTH, y2, x1, y1, "o", i,
             0, 1);
     }
@@ -1124,8 +1124,8 @@ void iemgui_draw_io(t_iemgui *x, int old_sr_flags)
             //sys_vgui(".x%lx.c delete %so%d\n",
             //    canvas, iem_get_tag(canvas, x), i);
             sprintf(tagbuf, "%so%d", iem_get_tag(canvas, x), i);
-            gui_vmess("gui_eraseio", "ss",
-                canvas_tag(canvas), tagbuf);
+            gui_vmess("gui_eraseio", "xs",
+                canvas, tagbuf);
         }
 
     a = old_sr_flags & IEM_GUI_OLD_RCV_FLAG;
@@ -1142,8 +1142,8 @@ void iemgui_draw_io(t_iemgui *x, int old_sr_flags)
         //     iem_get_tag(canvas, x), i, x,
         //     x->x_selected == x->x_glist ? "iemgui selected" : "iemgui");
         sprintf(tagbuf, "%si%d", iem_get_tag(canvas, x), i);
-        gui_vmess("gui_canvas_drawio", "sssiiiiiisiii", canvas_tag(canvas),
-            gobj_tag(x), tagbuf,
+        gui_vmess("gui_canvas_drawio", "xxsiiiiiisiii", canvas,
+            x, tagbuf,
             x1+i*k, y1, x1+i*k + IOWIDTH, y1+1, x1, y1, "i", i,
             0, 1);
     }
@@ -1153,8 +1153,8 @@ void iemgui_draw_io(t_iemgui *x, int old_sr_flags)
             //sys_vgui(".x%lx.c delete %si%d\n",
             //    canvas, iem_get_tag(canvas, x), i);
             sprintf(tagbuf, "%si%d", iem_get_tag(canvas, x), i);
-            gui_vmess("gui_eraseio", "ss",
-                canvas_tag(canvas), tagbuf);
+            gui_vmess("gui_eraseio", "xs",
+                canvas, tagbuf);
         }
 }
 
@@ -1173,8 +1173,8 @@ void iemgui_io_draw_move(t_iemgui *x) {
         //sys_vgui(".x%lx.c coords %so%d %d %d %d %d\n",
         //    canvas, iem_get_tag(canvas, x), i, x1+i*k, y2-1, x1+i*k+IOWIDTH, y2);
         sprintf(tagbuf, "%so%d", iem_get_tag(canvas, x), i);
-        gui_start_vmess("gui_configure_item", "ss",
-            canvas_tag(canvas), tagbuf);
+        gui_start_vmess("gui_configure_item", "xs",
+            canvas, tagbuf);
         gui_start_array();
         gui_s("x");
         gui_i(i*k);
@@ -1188,8 +1188,8 @@ void iemgui_io_draw_move(t_iemgui *x) {
         //sys_vgui(".x%lx.c coords %si%d %d %d %d %d\n",
         //    canvas, iem_get_tag(canvas, x), i, x1+i*k, y1, x1+i*k+IOWIDTH, y1+1);
         sprintf(tagbuf, "%si%d", iem_get_tag(canvas, x), i);
-        gui_start_vmess("gui_configure_item", "ss",
-            canvas_tag(canvas), tagbuf);
+        gui_start_vmess("gui_configure_item", "xs",
+            canvas, tagbuf);
         gui_start_array();
         gui_s("x");
         gui_i(i*k);
@@ -1209,13 +1209,13 @@ void iemgui_base_draw_new(t_iemgui *x) {
     //         "-stroke $pd_colors(iemgui_border) -fill #%6.6x "
     //         "-tags {%lxBASE x%lx text iemgui border}\n",
     //     canvas, x1,y1,x2,y2, x->x_bcol, x, x);
-    gui_vmess("gui_text_create_gobj", "sssiii", canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_text_create_gobj", "xxsiii", canvas, x,
         "iemgui", x1, y1, glist_istoplevel(x->x_glist));
     char colorbuf[MAXPDSTRING];
     sprintf(colorbuf, "#%6.6x", x->x_bcol);
-    gui_vmess("gui_text_drawborder", "sssiiiii",
-        canvas_tag(canvas),
-        gobj_tag(x),
+    gui_vmess("gui_text_drawborder", "xxsiiiii",
+        canvas,
+        x,
         colorbuf,
         0,
         x1, y1, x2, y2);
@@ -1228,8 +1228,8 @@ void iemgui_base_draw_move(t_iemgui *x) {
     c->c_wb->w_getrectfn((t_gobj *)x,x->x_glist,&x1,&y1,&x2,&y2);
     gop_redraw=gr;
     //sys_vgui(".x%lx.c coords %lxBASE %d %d %d %d\n", canvas, x, x1, y1, x2, y2);
-    gui_vmess("gui_iemgui_redraw_border", "ssiiii",
-        canvas_tag(canvas), gobj_tag(x), x1, y1, x2, y2);
+    gui_vmess("gui_iemgui_redraw_border", "xxiiii",
+        canvas, x, x1, y1, x2, y2);
 }
 
 void iemgui_base_draw_config(t_iemgui *x) {
@@ -1239,8 +1239,8 @@ void iemgui_base_draw_config(t_iemgui *x) {
     char tagbuf[MAXPDSTRING];
     char bcol[8]; sprintf(bcol, "#%6.6x", x->x_bcol);
     sprintf(tagbuf, "x%lxborder", (long unsigned int)x);
-    gui_start_vmess("gui_configure_item", "ss",
-        canvas_tag(canvas), tagbuf);
+    gui_start_vmess("gui_configure_item", "xs",
+        canvas, tagbuf);
     gui_start_array();
     gui_s("fill");
     gui_s(bcol);
@@ -1275,7 +1275,7 @@ void iemgui_draw_move(t_iemgui *x) {
 void iemgui_draw_erase(t_iemgui *x) {
     t_canvas *canvas=glist_getcanvas(x->x_glist);
     //sys_vgui(".x%lx.c delete x%lx\n", canvas, x);
-    gui_vmess("gui_gobj_erase", "ss", canvas_tag(canvas), gobj_tag(x));
+    gui_vmess("gui_gobj_erase", "xx", canvas, x);
     scalehandle_draw_erase2(x);
 }
 
diff --git a/pd/src/g_array.c b/pd/src/g_array.c
index de817fa2f6fc2a411d92c260bfaededf7e485af4..adf403da468551d6fa6b294c489ba6eb5fb39fd6 100644
--- a/pd/src/g_array.c
+++ b/pd/src/g_array.c
@@ -1566,8 +1566,8 @@ static void garray_doredraw(t_gobj *client, t_glist *glist)
             t_scalar *sc = x->x_scalar;
             char tagbuf[MAXPDSTRING];
             sprintf(tagbuf, "scalar%lx", (long unsigned int)sc->sc_vec);
-            gui_vmess("gui_text_select", "ss",
-                canvas_tag(glist_getcanvas(glist)), tagbuf);
+            gui_vmess("gui_text_select", "xs",
+                glist_getcanvas(glist), tagbuf);
         }
     }
 }
diff --git a/pd/src/g_bang.c b/pd/src/g_bang.c
index eea5825ce8ca252c50712a8165381820f73b2f60..31692bb6b90246d8b63f6a316ee2ded26318a6f6 100644
--- a/pd/src/g_bang.c
+++ b/pd/src/g_bang.c
@@ -35,8 +35,8 @@ void bng_draw_update(t_gobj *xgobj, t_glist *glist)
 //            x->x_flashed?x->x_gui.x_fcol:x->x_gui.x_bcol);
         sprintf(flashcol, "#%6.6x",
             x->x_flashed ? x->x_gui.x_fcol : x->x_gui.x_bcol);
-        gui_vmess("gui_bng_flash", "sss",
-            canvas_tag(glist_getcanvas(glist)), tagbuf, flashcol);
+        gui_vmess("gui_bng_flash", "xss",
+            glist_getcanvas(glist), tagbuf, flashcol);
     }
     x->x_gui.x_changed = x->x_flashed;
 }
@@ -58,7 +58,7 @@ void bng_draw_new(t_bng *x, t_glist *glist)
     //         "-tags {%lxBUT x%lx text iemgui border}\n",
     //     canvas, cx, cy, cr, x->x_flashed?x->x_gui.x_fcol:x->x_gui.x_bcol,
     //     x, x);
-    gui_vmess("gui_create_bng", "ssfff", canvas_tag(canvas), tagbuf,
+    gui_vmess("gui_create_bng", "xsfff", canvas, tagbuf,
         cx - x1 - 0.5, cy - y1 - 0.5, cr);
 }
 
@@ -80,8 +80,8 @@ void bng_draw_move(t_bng *x, t_glist *glist)
     sprintf(tagbuf, "x%lxbutton", (long unsigned int)x);
     char col[8];
     sprintf(col, "#%6.6x", x->x_flashed ? x->x_gui.x_fcol : x->x_gui.x_bcol);
-    gui_start_vmess("gui_configure_item", "ss",
-        canvas_tag(canvas), tagbuf);
+    gui_start_vmess("gui_configure_item", "xs",
+        canvas, tagbuf);
     gui_start_array();
     gui_s("cx");
     gui_f(cx - x1 - 0.5); // 0.5 is fudge factor... might be better
@@ -105,8 +105,8 @@ void bng_draw_config(t_bng* x, t_glist* glist)
     sprintf(tagbuf, "x%lxbutton", (long unsigned int)x);
     char fcol[8];
     sprintf(fcol, "#%6.6x", x->x_flashed ? x->x_gui.x_fcol : x->x_gui.x_bcol);
-    gui_start_vmess("gui_configure_item", "ss",
-        canvas_tag(canvas), tagbuf);
+    gui_start_vmess("gui_configure_item", "xs",
+        canvas, tagbuf);
     gui_start_array();
     gui_s("fill");
     gui_s(fcol);
diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c
index cc94d4108bfa7f6e0457b0c3ba3aeb2383e0e773..5f51ec290b5c95605366b3966eb6bbb21d025ba1 100644
--- a/pd/src/g_canvas.c
+++ b/pd/src/g_canvas.c
@@ -248,27 +248,6 @@ void canvas_makefilename(t_canvas *x, char *file, char *result, int resultsize)
     //fprintf(stderr,"resulting file = <%s>\n", result);          
 }
 
-// Generic tag format to use for the gui
-// Try removing the leading dot, since
-// we don't need it anymore
-// Both this and gobj_tag are static which
-// means you shouldn't send twice in the same
-// gui_vmess (and there shouldn't be a reason
-// for doing that anyway)
-char *canvas_tag(t_canvas *x)
-{
-    static char s[MAXPDSTRING];
-    sprintf(s, ".x%lx", (long unsigned int)x);
-    return s;
-}
-
-char *gobj_tag(void *x)
-{
-    static char s[MAXPDSTRING];
-    sprintf(s, "x%lx", (long unsigned int)x);
-    return s;
-}
-
 void canvas_rename(t_canvas *x, t_symbol *s, t_symbol *dir)
 {
     canvas_unbind(x);
@@ -729,8 +708,8 @@ void canvas_reflecttitle(t_canvas *x)
     //sys_vgui("wm title .x%lx {%s%c%s - %s}\n", 
     //    x, x->gl_name->s_name, (x->gl_dirty? '*' : ' '), namebuf,
     //        canvas_getdir(x)->s_name);
-    gui_vmess("gui_canvas_set_title", "ssssi",
-        canvas_tag(x), x->gl_name->s_name,
+    gui_vmess("gui_canvas_set_title", "xsssi",
+        x, x->gl_name->s_name,
         namebuf, canvas_getdir(x)->s_name, x->gl_dirty);
 //}
 #endif
@@ -804,8 +783,8 @@ void canvas_drawredrect(t_canvas *x, int doit)
         //sys_vgui(".x%lx.c create line "
         //    "%d %d %d %d %d %d %d %d %d %d -fill #ff8080 -tags GOP\n",
         //    glist_getcanvas(x), x1, y1, x2, y1, x2, y2, x1, y2, x1, y1);
-        gui_vmess("gui_canvas_drawredrect", "siiii",
-            canvas_tag(glist_getcanvas(x)),
+        gui_vmess("gui_canvas_drawredrect", "xiiii",
+            glist_getcanvas(x),
             x1, y1, x2, y2);
         //dpsaha@vt.edu for drawing the GOP_blobs
         if (x->gl_goprect && x->gl_edit)
@@ -814,8 +793,8 @@ void canvas_drawredrect(t_canvas *x, int doit)
     else
     {
         //sys_vgui(".x%lx.c delete GOP\n",  glist_getcanvas(x));
-        gui_vmess("gui_canvas_deleteredrect", "s",
-            canvas_tag(glist_getcanvas(x)));
+        gui_vmess("gui_canvas_deleteredrect", "x",
+            glist_getcanvas(x));
     }
 }
 
@@ -862,8 +841,8 @@ void canvas_map(t_canvas *x, t_floatarg f)
             //sys_vgui(".x%lx.c dtag all selected\n", x);
             //sys_vgui("foreach item [.x%lx.c find withtag {(!root)}] "
             //         "{ .x%lx.c delete $item }\n", x, x);
-            gui_vmess("gui_canvas_erase_all_gobjs", "s",
-                canvas_tag(x));
+            gui_vmess("gui_canvas_erase_all_gobjs", "x",
+                x);
             x->gl_mapped = 0;
         }
     }
@@ -1072,8 +1051,8 @@ void canvas_eraselinesfor(t_canvas *x, t_text *text)
                 //    glist_getcanvas(x), oc);
                 char tagbuf[MAXPDSTRING];
                 sprintf(tagbuf, "l%lx", (long unsigned int)oc);
-                gui_vmess("gui_canvas_delete_line", "ss",
-                    canvas_tag(glist_getcanvas(x)), tagbuf);
+                gui_vmess("gui_canvas_delete_line", "xs",
+                    glist_getcanvas(x), tagbuf);
             }
         }
     }
diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h
index 34d31f471bd94a1e32153221023049336b457ca4..c130fe1b429952a7d2976e69ee62f5a02b9f9e3d 100644
--- a/pd/src/g_canvas.h
+++ b/pd/src/g_canvas.h
@@ -562,8 +562,6 @@ EXTERN t_gobj *canvas_findhitbox(t_canvas *x, int xpos, int ypos,
     int *x1p, int *y1p, int *x2p, int *y2p);
 EXTERN int canvas_setdeleting(t_canvas *x, int flag);
 EXTERN int canvas_hasarray(t_canvas *x);
-EXTERN char *canvas_tag(t_canvas *x); /* canvas as string to send to gui */
-EXTERN char *gobj_tag(void *x); /* gobj as string to send to gui */
 
 /* ---- for parsing @pd_extra and other sys paths in filenames  --------------------- */
 
diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c
index fb3565d822c7597669a0961b305086563894fe49..d900479fd629245cc4efeedf9d49edc3ca12819a 100644
--- a/pd/src/g_editor.c
+++ b/pd/src/g_editor.c
@@ -152,8 +152,8 @@ static void canvas_nlet_conf (t_canvas *x, int type) {
 
     /* this is rather confusing, but the canvas_cnct_[xlet]_tag already
        includes the type and index concatenated to the end. */
-    gui_vmess("gui_configure_io", "ssiii",
-        canvas_tag(x), type == 'o' ? x->gl_editor->canvas_cnct_outlet_tag :
+    gui_vmess("gui_configure_io", "xsiii",
+        x, type == 'o' ? x->gl_editor->canvas_cnct_outlet_tag :
             x->gl_editor->canvas_cnct_inlet_tag,
         isiemgui, issignal, 1);
 }
@@ -444,7 +444,7 @@ void glist_selectline(t_glist *x, t_outconnect *oc, int index1,
         //sys_vgui(".x%lx.c addtag selected withtag l%lx\n",
         //    glist_getcanvas(x), x->gl_editor->e_selectline_tag);
         sprintf(tagbuf, "l%lx", (long unsigned int)oc);
-        gui_vmess("gui_canvas_select_line", "ss", canvas_tag(x), tagbuf);
+        gui_vmess("gui_canvas_select_line", "xs", x, tagbuf);
         c_selection = x;
         canvas_draw_gop_resize_hooks(x);
     }
@@ -476,7 +476,7 @@ void glist_deselectline(t_glist *x)
         //    glist_getcanvas(x)->gl_editor->e_selectline_tag);
         canvas_draw_gop_resize_hooks(x);
         sprintf(tagbuf, "l%lx", (long unsigned int)x->gl_editor->e_selectline_tag);
-        gui_vmess("gui_canvas_deselect_line", "ss", canvas_tag(x), tagbuf);
+        gui_vmess("gui_canvas_deselect_line", "xs", x, tagbuf);
     }    
 }
 
@@ -875,8 +875,8 @@ void canvas_disconnect(t_canvas *x,
         {
             //sys_vgui(".x%lx.c delete l%lx\n", x, oc);
             sprintf(tagbuf, "l%lx", (long unsigned int)oc);
-            gui_vmess("gui_canvas_delete_line", "ss",
-                canvas_tag(x), tagbuf);
+            gui_vmess("gui_canvas_delete_line", "xs",
+                x, tagbuf);
             // jsarlo
             if(x->gl_editor && x->gl_editor->gl_magic_glass)
             {
@@ -2223,7 +2223,7 @@ void canvas_setcursor(t_canvas *x, unsigned int cursornum)
         if (xwas != x || cursorwas != cursornum)
         {
             //sys_vgui(".x%lx configure -cursor %s\n", x, cursorlist[cursornum]);
-            gui_vmess("gui_canvas_cursor", "ss", canvas_tag(x),
+            gui_vmess("gui_canvas_cursor", "xs", x,
                 cursorlist[cursornum]);
             xwas = x;
             cursorwas = cursornum;
@@ -2328,8 +2328,8 @@ static void canvas_rightclick(t_canvas *x, int xpos, int ypos, t_gobj *y_sel)
     else isobject = 0;
     //sys_vgui("pdtk_canvas_popup .x%lx %d %d %d %d %d\n",
     //    x, xpos, ypos, canprop, canopen, isobject);
-    gui_vmess("gui_canvas_popup", "siiiii",
-        canvas_tag(x), xpos, ypos, canprop, canopen, isobject);
+    gui_vmess("gui_canvas_popup", "xiiiii",
+        x, xpos, ypos, canprop, canopen, isobject);
 }
 
 /* ----  editors -- perhaps this and "vis" should go to g_editor.c ------- */
@@ -2341,7 +2341,7 @@ static t_editor *editor_new(t_glist *owner)
     x->e_connectbuf = binbuf_new();
     x->e_deleted = binbuf_new();
     x->e_glist = owner;
-    sprintf(buf, ".x%lx", (t_int)owner);
+    sprintf(buf, "x%.6lx", (t_int)owner);
     x->e_guiconnect = guiconnect_new(&owner->gl_pd, gensym(buf));
     x->gl_magic_glass = magicGlass_new(owner);
     x->canvas_cnct_inlet_tag[0] = 0;
@@ -2442,7 +2442,7 @@ void canvas_vis(t_canvas *x, t_floatarg f)
             //sys_vgui("raise .x%lx\n", x);
             //sys_vgui("focus .x%lx.c\n", x);
             //sys_vgui("wm deiconify .x%lx\n", x);  
-            gui_vmess("gui_raise_window", "s", canvas_tag(x));
+            gui_vmess("gui_raise_window", "x", x);
         }
         else
         {
@@ -2456,8 +2456,8 @@ void canvas_vis(t_canvas *x, t_floatarg f)
 
             canvas_args_to_string(argsbuf, x);
 
-            gui_vmess("gui_canvas_new", "siisissis",
-                canvas_tag(x),
+            gui_vmess("gui_canvas_new", "xiisissis",
+                x,
                 (int)(x->gl_screenx2 - x->gl_screenx1),
                 (int)(x->gl_screeny2 - x->gl_screeny1),
                 geobuf,
@@ -2555,7 +2555,7 @@ void canvas_vis(t_canvas *x, t_floatarg f)
         if (glist_isvisible(x))
             canvas_map(x, 0);
         canvas_destroy_editor(x);
-        gui_vmess("gui_close_window", "s", canvas_tag(x));
+        gui_vmess("gui_close_window", "x", x);
         // delete properties windows of objects in the patcher we're closing
         g = x->gl_list;
         while (g)
@@ -3414,8 +3414,8 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which,
                         //    "$pd_colors(signal_cord_width)" :
                         //    "$pd_colors(control_cord_width)"),
                         //(issignal ? "signal" : "control"));
-                        gui_vmess("gui_canvas_line", "ssiiiiiiiiii",
-                            canvas_tag(x), "newcord",
+                        gui_vmess("gui_canvas_line", "xsiiiiiiiiii",
+                            x, "newcord",
                             xpos, ypos, xpos, ypos, xpos, ypos, xpos, ypos, xpos, ypos);
                     }   
                     else
@@ -3438,8 +3438,8 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which,
                             //         x,
                             //         x->gl_editor->canvas_cnct_outlet_tag);
 
-                            gui_vmess("gui_highlight_io", "ss",
-                                canvas_tag(x),
+                            gui_vmess("gui_highlight_io", "xs",
+                                x,
                                 x->gl_editor->canvas_cnct_outlet_tag);
 
                             //sys_vgui(".x%x.c raise %s\n",
@@ -3499,8 +3499,8 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which,
                         //         "-strokewidth $highlight_width\n",
                         //    x, x->gl_editor->canvas_cnct_inlet_tag);
 
-                        gui_vmess("gui_highlight_io", "ss",
-                            canvas_tag(x),
+                        gui_vmess("gui_highlight_io", "xs",
+                            x,
                             x->gl_editor->canvas_cnct_inlet_tag);
 
                         //sys_vgui(".x%x.c raise %s\n",
@@ -3728,7 +3728,7 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which,
         //sys_vgui(".x%lx.c create prect %d %d %d %d -tags x "
         //         "-stroke $pd_colors(selection_rectangle)\n",
         //    x, xpos, ypos, xpos, ypos);
-        gui_vmess("gui_create_selection_rectangle", "siiii", canvas_tag(x),
+        gui_vmess("gui_create_selection_rectangle", "xiiii", x,
             xpos, ypos, xpos, ypos);
         x->gl_editor->e_xwas = xpos;
         x->gl_editor->e_ywas = ypos;
@@ -3868,8 +3868,8 @@ void canvas_drawconnection(t_canvas *x, int lx1, int ly1, int lx2, int ly2,
     //        "$pd_colors(control_cord_width)"), 
     //    tag, (issignal ? "signal" : "control"));
     sprintf(tagbuf, "l%lx", (long unsigned int)tag);
-    gui_vmess("gui_canvas_line", "ssiiiiiiiiii",
-        canvas_tag(x), tagbuf, lx1, ly1, lx1, ly1 + yoff,
+    gui_vmess("gui_canvas_line", "xsiiiiiiiiii",
+        x, tagbuf, lx1, ly1, lx1, ly1 + yoff,
         lx1 + halfx, ly1 + halfy, lx2, ly2 - yoff, lx2, ly2);
 }
 
@@ -3914,8 +3914,8 @@ void canvas_updateconnection(t_canvas *x, int lx1, int ly1, int lx2, int ly2,
             //    lx1, ly1 + yoff, lx1 + halfx, ly1 + halfy,
             //    lx2, ly2 - yoff, lx2, ly2);
             sprintf(cord_tag, "l%lx", (long unsigned int)tag);
-            gui_vmess("gui_canvas_updateline", "ssiiiii",
-                canvas_tag(x), cord_tag,
+            gui_vmess("gui_canvas_updateline", "xsiiiii",
+                x, cord_tag,
                 lx1, ly1, lx2, ly2, yoff);
 //                lx1, ly1, lx1, ly1 + yoff, lx1 + halfx, ly1 + halfy,
 //                lx2, ly2 - yoff, lx2, ly2);
@@ -3928,8 +3928,8 @@ void canvas_updateconnection(t_canvas *x, int lx1, int ly1, int lx2, int ly2,
             //    x, lx1, ly1,
             //    lx1, ly1 + yoff, lx1 + halfx, ly1 + halfy,
             //    lx2, ly2 - yoff, lx2, ly2);
-            gui_vmess("gui_canvas_updateline", "ssiiiii",
-                canvas_tag(x), "newcord",
+            gui_vmess("gui_canvas_updateline", "xsiiiii",
+                x, "newcord",
                 lx1, ly1, lx2, ly2, yoff);
 //                lx1, ly1, lx1, ly1 + yoff, lx1 + halfx, ly1 + halfy, lx2, ly2 - yoff,
 //                lx2, ly2);
@@ -4529,7 +4529,7 @@ void canvas_doconnect(t_canvas *x, int xpos, int ypos, int which, int doit)
     if (doit && !glob_shift)
     {
         sys_vgui(".x%lx.c delete x\n", x);
-        gui_vmess("gui_canvas_delete_line", "ss", canvas_tag(x), "newcord");
+        gui_vmess("gui_canvas_delete_line", "xs", x, "newcord");
     }
     else
     {
@@ -4599,8 +4599,8 @@ void canvas_doconnect(t_canvas *x, int xpos, int ypos, int which, int doit)
                     //         "-strokewidth $highlight_width\n",
                     //    x, x->gl_editor->canvas_cnct_inlet_tag);
 
-                    gui_vmess("gui_highlight_io", "ss",
-                        canvas_tag(x),
+                    gui_vmess("gui_highlight_io", "xs",
+                        x,
                         x->gl_editor->canvas_cnct_inlet_tag);
 
                     //sys_vgui(".x%x.c raise %s\n",
@@ -4678,7 +4678,7 @@ static void canvas_doregion(t_canvas *x, int xpos, int ypos, int doit)
         else hiy = x->gl_editor->e_ywas, loy = ypos;
         canvas_selectinrect(x, lox, loy, hix, hiy);
         //sys_vgui(".x%lx.c delete x\n", x);
-        gui_vmess("gui_hide_selection_rectangle", "s", canvas_tag(x));
+        gui_vmess("gui_hide_selection_rectangle", "x", x);
         x->gl_editor->e_onmotion = MA_NONE;
     }
     else
@@ -4686,8 +4686,8 @@ static void canvas_doregion(t_canvas *x, int xpos, int ypos, int doit)
         //sys_vgui(".x%lx.c coords x %d %d %d %d\n",
         //    x, x->gl_editor->e_xwas,
         //        x->gl_editor->e_ywas, xpos, ypos);
-        gui_vmess("gui_move_selection_rectangle", "siiii",
-            canvas_tag(x),
+        gui_vmess("gui_move_selection_rectangle", "xiiii",
+            x,
             x->gl_editor->e_xwas, x->gl_editor->e_ywas, xpos, ypos);
     }
 }
@@ -4915,7 +4915,7 @@ void canvas_displaceselection(t_canvas *x, int dx, int dy)
     if (dx || dy)
     {
         //sys_vgui("pdtk_canvas_displace_withtag .x%lx.c %d %d\n", x, dx, dy);
-        gui_vmess("gui_canvas_displace_withtag", "sii", canvas_tag(x), dx, dy);
+        gui_vmess("gui_canvas_displace_withtag", "xii", x, dx, dy);
         if (resortin) canvas_resortinlets(x);
         if (resortout) canvas_resortoutlets(x);
         //scrollbar_update(x);
@@ -5428,18 +5428,18 @@ void glob_verifyquit(void *dummy, t_floatarg f)
                 /* if this is an abstraction */
                 //sys_vgui("pdtk_canvas_menuclose .x%lx {.x%lx menuclose 3;}\n",
                 //     g2, g2);
-                gui_vmess("gui_canvas_menuclose", "ssi",
-                    canvas_tag(g2),
-                    canvas_tag(g2),
+                gui_vmess("gui_canvas_menuclose", "xxi",
+                    g2,
+                    g2,
                     3);
             }
             else
             {
                 //sys_vgui("pdtk_canvas_menuclose .x%lx {.x%lx menuclose 3;}\n",
                 //     canvas_getrootfor(g2), g2);
-                gui_vmess("gui_canvas_menuclose", "ssi",
-                    canvas_tag(canvas_getrootfor(g2)),
-                    canvas_tag(g2),
+                gui_vmess("gui_canvas_menuclose", "xxi",
+                    canvas_getrootfor(g2),
+                    g2,
                     3);
             }
             //canvas_vis(g2, 1);
@@ -5506,18 +5506,18 @@ void canvas_menuclose(t_canvas *x, t_floatarg fforce)
                 /* if this is an abstraction */
                 //sys_vgui("pdtk_canvas_menuclose .x%lx {.x%lx menuclose 2;}\n",
                 //     g, g);
-                gui_vmess("gui_canvas_menuclose", "ssi",
-                    canvas_tag(g),
-                    canvas_tag(g),
+                gui_vmess("gui_canvas_menuclose", "xxi",
+                    g,
+                    g,
                     2);
             }
             else
             {
                 //sys_vgui("pdtk_canvas_menuclose .x%lx {.x%lx menuclose 2;}\n",
                 //     canvas_getrootfor(g), g);
-                gui_vmess("gui_canvas_menuclose", "ssi",
-                    canvas_tag(canvas_getrootfor(g)),
-                    canvas_tag(g),
+                gui_vmess("gui_canvas_menuclose", "xxi",
+                    canvas_getrootfor(g),
+                    g,
                     2);
             }
             return;
@@ -5572,9 +5572,9 @@ post("farging...");
                 /* if this is an abstraction */
                 //sys_vgui("pdtk_canvas_menuclose .x%lx {.x%lx menuclose 2;}\n",
                 //     g, g);
-                gui_vmess("gui_canvas_menuclose", "ssi",
-                    canvas_tag(g),
-                    canvas_tag(g),
+                gui_vmess("gui_canvas_menuclose", "xxi",
+                    g,
+                    g,
                     2);
             }
             else
@@ -5582,9 +5582,9 @@ post("farging...");
 post("dildo");
                 //sys_vgui("pdtk_canvas_menuclose .x%lx {.x%lx menuclose 2;}\n",
                 //     canvas_getrootfor(g), g);
-                gui_vmess("gui_canvas_menuclose", "ssi",
-                    canvas_tag(canvas_getrootfor(g)),
-                    canvas_tag(g),
+                gui_vmess("gui_canvas_menuclose", "xxi",
+                    canvas_getrootfor(g),
+                    g,
                     2);
             }
             //sys_vgui("pdtk_canvas_menuclose .x%lx {.x%lx menuclose 2;\n}\n",
diff --git a/pd/src/g_graph.c b/pd/src/g_graph.c
index 2071cc48dfbe9ed1dce1b86f885833c31d8684cf..2eaef2576c84dd92d4a98c59e56cd3640f3a3853 100644
--- a/pd/src/g_graph.c
+++ b/pd/src/g_graph.c
@@ -506,8 +506,8 @@ void canvas_resortinlets(t_canvas *x)
             //        "$signal_nlet" : "$pd_colors_control_nlet)"));
             sprintf(xlet_tag, "%si%d", rtext_gettag(rt), i);
             char xlet_tag[MAXPDSTRING];
-            gui_vmess("gui_configure_io", "ssiii",
-                canvas_tag(x),
+            gui_vmess("gui_configure_io", "xsiii",
+                x,
                 xlet_tag,
                 0,
                 obj_issignalinlet(ob, i),
@@ -900,8 +900,8 @@ post("inside graph vis");
         int xpix, ypix;
         xpix = text_xpix(&x->gl_obj, parent_glist);
         ypix = text_ypix(&x->gl_obj, parent_glist);
-        gui_vmess("gui_text_create_gobj", "sssiii",
-            canvas_tag(glist_getcanvas(x->gl_owner)),
+        gui_vmess("gui_text_create_gobj", "xssiii",
+            glist_getcanvas(x->gl_owner),
             tag, "graph", xpix, ypix, 1);
         if (canvas_showtext(x))
             rtext_draw(glist_findrtext(parent_glist, &x->gl_obj));
@@ -933,14 +933,14 @@ post("inside graph vis");
             //    glist_getcanvas(x->gl_owner),
                 ////parent_glist,
             //    x1, y1, x1, y2, x2, y2, x2, y1, x1, y1, tag);
-            gui_vmess("gui_text_drawborder", "sssiiiii",
-                canvas_tag(glist_getcanvas(x->gl_owner)),
+            gui_vmess("gui_text_drawborder", "xssiiiii",
+                glist_getcanvas(x->gl_owner),
                 tag,
                 "none",
                 0, x1, y1, x2, y2);
             glist_noselect(x->gl_owner);
-            gui_vmess("gui_graph_fill_border", "ssi",
-                canvas_tag(glist_getcanvas(x->gl_owner)),
+            gui_vmess("gui_graph_fill_border", "xsi",
+                glist_getcanvas(x->gl_owner),
                 tag);
         }
         else if (gobj_shouldvis(gr, parent_glist))
@@ -948,8 +948,8 @@ post("inside graph vis");
             //sys_vgui(".x%lx.c delete %sfill\n",
             //    glist_getcanvas(x->gl_owner), tag);
                ////parent_glist, tag);
-            gui_vmess("gui_gobj_erase", "ss",
-                canvas_tag(glist_getcanvas(x->gl_owner)),
+            gui_vmess("gui_gobj_erase", "xs",
+                glist_getcanvas(x->gl_owner),
                 tag);
         }
         return;
@@ -977,8 +977,8 @@ post("inside graph vis");
         char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "%sR", tag);
 
-        gui_vmess("gui_text_drawborder", "sssiiiii",
-            canvas_tag(glist_getcanvas(x->gl_owner)),
+        gui_vmess("gui_text_drawborder", "xssiiiii",
+            glist_getcanvas(x->gl_owner),
             tag,
             "none",
             0, x1, y1, x2, y2);
@@ -999,8 +999,8 @@ post("inside graph vis");
                 //    tag,
                 //    (glist_isselected(x, gr) ?
                 //        "$pd_colors(selection)" : "$pd_colors(graph_border)"));
-                gui_vmess("gui_graph_label", "ssissisi",
-                    canvas_tag(glist_getcanvas(x)),
+                gui_vmess("gui_graph_label", "xsissisi",
+                    glist_getcanvas(x),
                     tag,
                     i,
                     arrayname->s_name,
@@ -1033,8 +1033,8 @@ post("inside graph vis");
                 //    glist_getcanvas(x->gl_owner),
                 //    (int)glist_xtopixels(x, f), (int)lpix,
                 //    (int)glist_xtopixels(x, f), (int)lpix + tickpix, tag);
-                gui_vmess("gui_graph_vtick", "ssiiiiii",
-                    canvas_tag(glist_getcanvas(x->gl_owner)),
+                gui_vmess("gui_graph_vtick", "xsiiiiii",
+                    glist_getcanvas(x->gl_owner),
                     tag,
                     (int)glist_xtopixels(x, f),
                     (int)upix,
@@ -1056,8 +1056,8 @@ post("inside graph vis");
                 //    glist_getcanvas(x->gl_owner),
                 //    (int)glist_xtopixels(x, f), (int)lpix,
                 //    (int)glist_xtopixels(x, f), (int)lpix + tickpix, tag);
-                gui_vmess("gui_graph_vtick", "ssiiiiii",
-                    canvas_tag(glist_getcanvas(x->gl_owner)),
+                gui_vmess("gui_graph_vtick", "xsiiiiii",
+                    glist_getcanvas(x->gl_owner),
                     tag,
                     (int)glist_xtopixels(x, f),
                     (int)upix,
@@ -1088,8 +1088,8 @@ post("inside graph vis");
                 //    glist_getcanvas(x->gl_owner),
                 //    x2, (int)glist_ytopixels(x, f), 
                 //    x2 - tickpix, (int)glist_ytopixels(x, f), tag);
-                gui_vmess("gui_graph_htick", "ssiiiiii",
-                    canvas_tag(glist_getcanvas(x->gl_owner)),
+                gui_vmess("gui_graph_htick", "xsiiiiii",
+                    glist_getcanvas(x->gl_owner),
                     tag,
                     (int)glist_ytopixels(x, f),
                     x1,
@@ -1111,8 +1111,8 @@ post("inside graph vis");
                 //    glist_getcanvas(x->gl_owner),
                 //    x2, (int)glist_ytopixels(x, f), 
                 //    x2 - tickpix, (int)glist_ytopixels(x, f), tag);
-                gui_vmess("gui_graph_htick", "ssiiiiii",
-                    canvas_tag(glist_getcanvas(x->gl_owner)),
+                gui_vmess("gui_graph_htick", "xsiiiiii",
+                    glist_getcanvas(x->gl_owner),
                     tag,
                     (int)glist_ytopixels(x, f),
                     x1,
@@ -1132,8 +1132,8 @@ post("inside graph vis");
             //    (int)glist_ytopixels(x, x->gl_xlabely),
             //    x->gl_xlabel[i]->s_name, sys_font, 
             //         glist_getfont(x), sys_fontweight, tag);
-            gui_vmess("gui_graph_tick_label", "ssiissisii",
-                canvas_tag(glist_getcanvas(x)),
+            gui_vmess("gui_graph_tick_label", "xsiissisii",
+                glist_getcanvas(x),
                 tag,
                 (int)glist_xtopixels(x, atof(x->gl_xlabel[i]->s_name)),
                 (int)glist_ytopixels(x, x->gl_xlabely),
@@ -1155,8 +1155,8 @@ post("inside graph vis");
             //    (int)glist_ytopixels(x, atof(x->gl_ylabel[i]->s_name)),
             //    x->gl_ylabel[i]->s_name, sys_font,
             //    glist_getfont(x), sys_fontweight, tag);
-            gui_vmess("gui_graph_tick_label", "ssiissisii",
-                canvas_tag(glist_getcanvas(x)),
+            gui_vmess("gui_graph_tick_label", "xsiissisii",
+                glist_getcanvas(x),
                 tag,
                 (int)glist_xtopixels(x, x->gl_ylabelx),
                 (int)glist_ytopixels(x, atof(x->gl_ylabel[i]->s_name)),
@@ -1197,8 +1197,8 @@ post("inside graph vis");
         for (g = x->gl_list; g; g = g->g_next)
             gobj_vis(g, x, 0);
 
-        gui_vmess("gui_gobj_erase", "ss",
-            canvas_tag(glist_getcanvas(x->gl_owner)),
+        gui_vmess("gui_gobj_erase", "xs",
+            glist_getcanvas(x->gl_owner),
             tag);
 
         // here we check for changes in scrollbar because of legacy
@@ -1508,11 +1508,11 @@ static void graph_select(t_gobj *z, t_glist *glist, int state)
             //     (state? "$pd_colors(selection)" : "$pd_colors(graph_border)"),
             //     (state? "$pd_colors(selection)" : "$pd_colors(graph_border)"));
             if (state)
-                gui_vmess("gui_text_select", "ss",
-                    canvas_tag(canvas), rtext_gettag(y));
+                gui_vmess("gui_text_select", "xs",
+                    canvas, rtext_gettag(y));
             else
-                gui_vmess("gui_text_deselect", "ss",
-                    canvas_tag(canvas), rtext_gettag(y));
+                gui_vmess("gui_text_deselect", "xs",
+                    canvas, rtext_gettag(y));
         }
 
         t_gobj *g;
diff --git a/pd/src/g_magicglass.c b/pd/src/g_magicglass.c
index f96113177d6da781c5edce62464f090a0f6cc611..0afa60871636f12c542b853bc93a5c61ab06fd8e 100644
--- a/pd/src/g_magicglass.c
+++ b/pd/src/g_magicglass.c
@@ -117,8 +117,8 @@ void magicGlass_updateText(t_magicGlass *x, int moved)
         //         x->x_y - (int)(sys_fontheight(x->x_display_font)/2) - 3,
         //         bgSize,
         //         x->x_y + (int)(sys_fontheight(x->x_display_font)/2) + 3);
-        gui_vmess("gui_cord_inspector_update", "ssiiiiii",
-            canvas_tag(x->x_c), x->x_string,
+        gui_vmess("gui_cord_inspector_update", "xsiiiiii",
+            x->x_c, x->x_string,
             x->x_x, x->x_y, bgSize, 
             x->x_y - (int)(sys_fontheight(x->x_display_font)/2) - 3,
             x->x_y + (int)(sys_fontheight(x->x_display_font)/2) + 3,
@@ -144,10 +144,10 @@ void magicGlass_drawNew(t_magicGlass *x)
     //         x->x_c);
     //sys_vgui(".x%x.c raise magicGlassText\n",
     //         x->x_c);
-    gui_vmess("gui_text_create_gobj", "sssiii",
-        canvas_tag(x->x_c), "cord_inspector", "cord_inspector", 0, 0, 0);
-    gui_vmess("gui_create_cord_inspector", "s",
-        canvas_tag(x->x_c)); 
+    gui_vmess("gui_text_create_gobj", "xssiii",
+        x->x_c, "cord_inspector", "cord_inspector", 0, 0, 0);
+    gui_vmess("gui_create_cord_inspector", "x",
+        x->x_c); 
     magicGlass_updateText(x, 0);
     clock_delay(x->x_flashClock, MG_CLOCK_FLASH_DELAY);
 }
@@ -158,8 +158,8 @@ void magicGlass_undraw(t_magicGlass *x)
     //sys_vgui(".x%x.c delete magicGlassBg\n", x->x_c);
     //sys_vgui(".x%x.c delete magicGlassLine\n", x->x_c);
     //sys_vgui(".x%x.c delete magicGlassText\n", x->x_c);
-    gui_vmess("gui_erase_cord_inspector", "s",
-        canvas_tag(x->x_c));
+    gui_vmess("gui_erase_cord_inspector", "x",
+        x->x_c);
 }
 
 void magicGlass_flashText(t_magicGlass *x)
@@ -168,8 +168,8 @@ void magicGlass_flashText(t_magicGlass *x)
     //sys_vgui(".x%x.c itemconfigure magicGlassText "
     //         "-fill $pd_colors(magic_glass_text)\n",
     //     x->x_c);
-    gui_vmess("gui_cord_inspector_flash", "s",
-        canvas_tag(x->x_c));
+    gui_vmess("gui_cord_inspector_flash", "x",
+        x->x_c);
 }
 
 void magicGlass_clearText(t_magicGlass *x)
diff --git a/pd/src/g_mycanvas.c b/pd/src/g_mycanvas.c
index 155264b2c8c6ded21e18d8433a315924c9be8f98..1b7abe86fe5a3987730cbb3816cfaec32a589179 100644
--- a/pd/src/g_mycanvas.c
+++ b/pd/src/g_mycanvas.c
@@ -35,10 +35,10 @@ void my_canvas_draw_new(t_my_canvas *x, t_glist *glist)
     //    x->x_gui.x_bcol, x, x);
     char colorbuf[MAXPDSTRING];
     sprintf(colorbuf, "#%6.6x", x->x_gui.x_bcol);
-    gui_vmess("gui_text_create_gobj", "sssiii", canvas_tag(canvas),
-        gobj_tag(x), "iemgui", x1, y1, glist_istoplevel(canvas));
-    gui_vmess("gui_create_mycanvas", "sssiiiiii", canvas_tag(canvas),
-        gobj_tag(x), colorbuf, x1, y1, x1+x->x_vis_w, y1+x->x_vis_h,
+    gui_vmess("gui_text_create_gobj", "xxsiii", canvas,
+        x, "iemgui", x1, y1, glist_istoplevel(canvas));
+    gui_vmess("gui_create_mycanvas", "xxsiiiiii", canvas,
+        x, colorbuf, x1, y1, x1+x->x_vis_w, y1+x->x_vis_h,
         x1+x->x_gui.x_w, y1+x->x_gui.x_h);
 }
 
@@ -53,8 +53,8 @@ void my_canvas_draw_move(t_my_canvas *x, t_glist *glist)
     //    canvas, x, x1, y1, x1+x->x_vis_w, y1+x->x_vis_h);
     //sys_vgui(".x%lx.c coords %lxBASE %d %d %d %d\n",
     //    canvas, x, x1, y1, x1+x->x_gui.x_w, y1+x->x_gui.x_h);
-    gui_vmess("gui_mycanvas_coords", "ssiiii",
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_mycanvas_coords", "xxiiii",
+        canvas, x,
         x->x_vis_w, x->x_vis_h, x->x_gui.x_w, x->x_gui.x_h);
 }
 
@@ -69,8 +69,8 @@ void my_canvas_draw_config(t_my_canvas* x, t_glist* glist)
     //    x->x_gui.x_selected == canvas && x->x_gui.x_glist == canvas ?
     //    "$pd_colors(selection)" : bcol);
     isselected = x->x_gui.x_selected == canvas && x->x_gui.x_glist == canvas;
-    gui_vmess("gui_update_mycanvas", "sssi",
-        canvas_tag(canvas), gobj_tag(x), bcol, isselected);
+    gui_vmess("gui_update_mycanvas", "xxsi",
+        canvas, x, bcol, isselected);
 }
 
 void my_canvas_draw_select(t_my_canvas* x, t_glist* glist)
@@ -81,8 +81,8 @@ void my_canvas_draw_select(t_my_canvas* x, t_glist* glist)
     //sys_vgui(".x%lx.c itemconfigure %lxBASE -stroke %s\n", canvas, x,
     //    x->x_gui.x_selected == canvas && x->x_gui.x_glist == canvas ?
     //    "$pd_colors(selection)" : bcol);
-    gui_vmess("gui_mycanvas_select_color", "sss",
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_mycanvas_select_color", "xxs",
+        canvas, x,
         x->x_gui.x_selected == canvas && x->x_gui.x_glist == canvas ?
             "blue" : bcol); 
 }
diff --git a/pd/src/g_numbox.c b/pd/src/g_numbox.c
index 8f2571fa337eb8e287c2b7718327baca9e041650..d34fc5cc07ed0e3609c350e630a42677d3ddd569 100644
--- a/pd/src/g_numbox.c
+++ b/pd/src/g_numbox.c
@@ -140,8 +140,8 @@ static void my_numbox_draw_update(t_gobj *client, t_glist *glist)
         //sys_vgui(
         //    ".x%lx.c itemconfigure %lxNUMBER -fill #%6.6x -text {%s}\n",
         //        glist_getcanvas(glist), x, IEM_GUI_COLOR_EDITED, cp);
-        gui_vmess("gui_text_set", "sss", canvas_tag(glist_getcanvas(glist)),
-            gobj_tag(x), cp);
+        gui_vmess("gui_text_set", "xxs", glist_getcanvas(glist),
+            x, cp);
             
         x->x_buf[sl] = 0;
     }
@@ -156,8 +156,8 @@ static void my_numbox_draw_update(t_gobj *client, t_glist *glist)
         //    glist_getcanvas(glist), x,
         //    x->x_gui.x_selected == glist_getcanvas(glist) && 
         //        !x->x_gui.x_change ? selection_color : fcol, x->x_buf);
-        gui_vmess("gui_text_set", "sss", canvas_tag(glist_getcanvas(glist)),
-            gobj_tag(x), x->x_buf);
+        gui_vmess("gui_text_set", "xxs", glist_getcanvas(glist),
+            x, x->x_buf);
         x->x_buf[0] = 0;
     }
 }
@@ -176,8 +176,8 @@ static void my_numbox_draw_new(t_my_numbox *x, t_glist *glist)
     //    canvas, x1, y1, x2-4, y1, x2, y1+4, x2, y2, x1, y2,
     //    x->x_hide_frame <= 1 ? "$pd_colors(iemgui_border)" : bcol,
     //    bcol, x, x);
-    gui_vmess("gui_create_numbox", "isssiiiiiiiiiiiiii", x->x_numwidth,
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_create_numbox", "ixxsiiiiiiiiiiiiii", x->x_numwidth,
+        canvas, x,
         bcol, x1, y1, x2-4, y1, x2, y1+4, x2, y2, x1, y2, x1, y1, half,
         glist_istoplevel(canvas));
     /* Not sure when it is necessary to hide the frame... */
@@ -193,8 +193,8 @@ static void my_numbox_draw_new(t_my_numbox *x, t_glist *glist)
     //    x->x_gui.x_fcol, x, x);
     char colorbuf[MAXPDSTRING];
     sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-    gui_vmess("gui_numbox_drawtext", "sssisiiii",
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_numbox_drawtext", "xxsisiiii",
+        canvas, x,
         x->x_buf, x->x_gui.x_fontsize, colorbuf, x1+half+2, y1+half+d, x1, y1);
 }
 
@@ -234,8 +234,8 @@ static void my_numbox_draw_config(t_my_numbox* x,t_glist* glist)
     char bgcol[MAXPDSTRING];
     sprintf(bgcol, "#%6.6x", x->x_gui.x_bcol);
     
-    gui_vmess("gui_update_numbox", "sssssii",
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_update_numbox", "xxsssii",
+        canvas, x,
         fcol, bgcol, iemgui_typeface, x->x_gui.x_fontsize, sys_fontweight);
 }
 
diff --git a/pd/src/g_radio.c b/pd/src/g_radio.c
index ecc221ebbc96f169f5fb05fd14c7d33c60b66452..9b69bc981a8e1f94993bf149e0f377493810a705 100644
--- a/pd/src/g_radio.c
+++ b/pd/src/g_radio.c
@@ -35,8 +35,8 @@ void radio_draw_update(t_gobj *client, t_glist *glist)
     char fcol[8], bcol[8];
     sprintf(fcol, "#%6.6x", x->x_gui.x_fcol);
     sprintf(bcol, "#%6.6x", x->x_gui.x_bcol);
-    gui_vmess("gui_radio_update", "sssii", canvas_tag(canvas),
-        gobj_tag(x), fcol, x->x_drawn, x->x_on);
+    gui_vmess("gui_radio_update", "xxsii", canvas,
+        x, fcol, x->x_drawn, x->x_on);
     x->x_drawn = x->x_on;
 }
 
@@ -55,8 +55,8 @@ void radio_draw_new(t_radio *x, t_glist *glist)
             //"-stroke $pd_colors(iemgui_border) "
             //"-tags {%lxBASE%d %lxBASE x%lx text iemgui border}\n",
             //canvas, x1, yi, x1+d, yi, x, i, x, x);
-            gui_vmess("gui_create_radio", "ssiiiiiii",
-              canvas_tag(canvas), gobj_tag(x), x1, yi, x1+d, yi, i, x1, y1);
+            gui_vmess("gui_create_radio", "xxiiiiiii",
+              canvas, x, x1, yi, x1+d, yi, i, x1, y1);
         }
         //sys_vgui(".x%lx.c create prect %d %d %d %d -fill #%6.6x "
         //    "-stroke #%6.6x -tags {%lxBUT%d x%lx text iemgui}\n",
@@ -68,8 +68,8 @@ void radio_draw_new(t_radio *x, t_glist *glist)
         sprintf(tagbuf, "x%lx", (long unsigned int)x);
         char colorbuf[MAXPDSTRING];
         sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-        gui_vmess("gui_create_radio_buttons", "sssiiiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_create_radio_buttons", "xxsiiiiiiii",
+            canvas, x,
             colorbuf, x1+s, yi+s, x1+d-s, yi+d-s, x1, y1, i, x->x_on==i);
         yi += d;
         x->x_drawn = x->x_on;
@@ -80,8 +80,8 @@ void radio_draw_new(t_radio *x, t_glist *glist)
             //"-stroke $pd_colors(iemgui_border) "
             //"-tags {%lxBASE%d %lxBASE x%lx text iemgui border}\n",
             //canvas, xi, y1, xi, y1+d, x, i, x, x);
-            gui_vmess("gui_create_radio", "ssiiiiiii", canvas_tag(canvas),
-                gobj_tag(x), xi, y1, xi, y1+d, i, x1, y1);
+            gui_vmess("gui_create_radio", "xxiiiiiii", canvas,
+                x, xi, y1, xi, y1+d, i, x1, y1);
         }
         //sys_vgui(".x%lx.c create prect %d %d %d %d -fill #%6.6x "
         //    "-stroke #%6.6x -tags {%lxBUT%d x%lx text iemgui}\n",
@@ -91,8 +91,8 @@ void radio_draw_new(t_radio *x, t_glist *glist)
         //    x, i, x);
         char colorbuf[MAXPDSTRING];
         sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-        gui_vmess("gui_create_radio_buttons", "sssiiiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_create_radio_buttons", "xxsiiiiiiii",
+            canvas, x,
             colorbuf, xi+s, y1+s, xi+d-s, yi+d-s, x1, y1, i, x->x_on==i);
         xi += d;
         x->x_drawn = x->x_on;
@@ -112,8 +112,8 @@ void radio_draw_move(t_radio *x, t_glist *glist)
         //    canvas, x, i, x1, yi, x1+d, yi);
         //sys_vgui(".x%lx.c coords %lxBUT%d %d %d %d %d\n",
         //    canvas, x, i, x1+s, yi+s, x1+d-s, yi+d-s);
-        gui_vmess("gui_radio_button_coords", "ssiiiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_radio_button_coords", "xxiiiiiiii",
+            canvas, x,
             x1, y1, xi, yi, i, s, d, x->x_orient);
         yi += d;
     } else {
@@ -121,8 +121,8 @@ void radio_draw_move(t_radio *x, t_glist *glist)
         //    canvas, x, i, xi, y1, xi, y1+d);
         //sys_vgui(".x%lx.c coords %lxBUT%d %d %d %d %d\n",
         //    canvas, x, i, xi+s, y1+s, xi+d-s, y1+d-s);
-        gui_vmess("gui_radio_button_coords", "ssiiiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_radio_button_coords", "xxiiiiiiii",
+            canvas, x,
             x1, y1, xi, yi, i, s, d, x->x_orient);
         xi += d;
     }
@@ -142,8 +142,8 @@ void radio_draw_config(t_radio *x, t_glist *glist)
     }
         char col[8];
         sprintf(col, "#%6.6x", x->x_gui.x_fcol);
-        gui_vmess("gui_radio_update", "sssii",
-            canvas_tag(canvas), gobj_tag(x), col, 0, x->x_on);
+        gui_vmess("gui_radio_update", "xxsii",
+            canvas, x, col, 0, x->x_on);
 
 }
 
diff --git a/pd/src/g_readwrite.c b/pd/src/g_readwrite.c
index fce01645408b3c34a8f43af74a872572a9d3ec00..157a10a04e5b17ef186cccabeafb00cf154ed756 100644
--- a/pd/src/g_readwrite.c
+++ b/pd/src/g_readwrite.c
@@ -776,7 +776,7 @@ static void canvas_savetofile(t_canvas *x, t_symbol *filename, t_symbol *dir)
 static void canvas_menusaveas(t_canvas *x)
 {
     t_canvas *x2 = canvas_getrootfor(x);
-    gui_vmess("gui_canvas_saveas", "sss", canvas_tag(x2), x2->gl_name->s_name, canvas_getdir(x2)->s_name);
+    gui_vmess("gui_canvas_saveas", "xss", x2, x2->gl_name->s_name, canvas_getdir(x2)->s_name);
 //    sys_vgui("pdtk_canvas_saveas .x%lx \"%s\" \"%s\"\n", x2,
 //        x2->gl_name->s_name, canvas_getdir(x2)->s_name);
 }
diff --git a/pd/src/g_rtext.c b/pd/src/g_rtext.c
index e14d7ce166843f34501099db9d8639c7e8a5174f..d14c840c6339155e3e483a9bf262418e0cd0ce2a 100644
--- a/pd/src/g_rtext.c
+++ b/pd/src/g_rtext.c
@@ -362,8 +362,8 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
             //    dispx + LMARGIN, dispy + TMARGIN,
             //    outchars_b, tempbuf, sys_hostfontsize(font),
             //    (glist_isselected(x->x_glist, ((t_gobj*)x->x_text)) ? "$pd_colors(selection)" : "$pd_colors(text)"));
-            gui_vmess("gui_text_new", "sssiiisi",
-                canvas_tag(canvas), x->x_tag, rtext_gettype(x)->s_name,
+            gui_vmess("gui_text_new", "xssiiisi",
+                canvas, x->x_tag, rtext_gettype(x)->s_name,
                 glist_isselected(x->x_glist, ((t_gobj*)x->x_text)),
                 LMARGIN,
                 pixhigh - BMARGIN - TMARGIN - 1,
@@ -380,7 +380,7 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
         {
             //sys_vgui("pdtk_text_set .x%lx.c %s {%.*s}\n",
             //    canvas, x->x_tag, outchars_b, tempbuf);
-            gui_vmess("gui_text_set", "sss", canvas_tag(canvas), x->x_tag, tempbuf);
+            gui_vmess("gui_text_set", "xss", canvas, x->x_tag, tempbuf);
 
             if (pixwide != x->x_drawnwidth || pixhigh != x->x_drawnheight) 
                 text_drawborder(x->x_text, x->x_glist, x->x_tag,
diff --git a/pd/src/g_scalar.c b/pd/src/g_scalar.c
index 018f2afbf6a846594c6de402f2d9abe8322a88e2..7539e91828bec5239574beaead6aa87f1a7b9c6b 100644
--- a/pd/src/g_scalar.c
+++ b/pd/src/g_scalar.c
@@ -431,8 +431,8 @@ void scalar_drawselectrect(t_scalar *x, t_glist *glist, int state)
             //         "-tags {select%lx selected}\n",
             //        glist_getcanvas(glist), x1, y1, x2, y2,
             //        x);
-            gui_vmess("gui_scalar_draw_select_rect", "ssiiiiiff",
-                canvas_tag(glist_getcanvas(glist)), tagbuf,
+            gui_vmess("gui_scalar_draw_select_rect", "xsiiiiiff",
+                glist_getcanvas(glist), tagbuf,
                 state,
                 x1, y1, x2, y2, basex, basey);
         }
@@ -442,8 +442,8 @@ void scalar_drawselectrect(t_scalar *x, t_glist *glist, int state)
         if (glist_istoplevel(glist))
         {
             //sys_vgui(".x%lx.c delete select%lx\n", glist_getcanvas(glist), x);
-            gui_vmess("gui_scalar_draw_select_rect", "ssiiiiiii",
-                canvas_tag(glist_getcanvas(glist)), tagbuf,
+            gui_vmess("gui_scalar_draw_select_rect", "xsiiiiiii",
+                glist_getcanvas(glist), tagbuf,
                 state,
                 0, 0, 0, 0, 0, 0);
         }
@@ -486,8 +486,8 @@ void scalar_select(t_gobj *z, t_glist *owner, int state)
         //    glist_getcanvas(owner), x);
         //sys_vgui(".x%lx.c addtag scalar_selected withtag {.scalar%lx}\n",
         //    glist_getcanvas(owner), x->sc_vec);
-        gui_vmess("gui_text_select", "ss",
-            canvas_tag(glist_getcanvas(owner)), tagbuf);
+        gui_vmess("gui_text_select", "xs",
+            glist_getcanvas(owner), tagbuf);
     }
     else
     {
@@ -496,8 +496,8 @@ void scalar_select(t_gobj *z, t_glist *owner, int state)
         //    glist_getcanvas(owner), x);
         //sys_vgui(".x%lx.c dtag .scalar%lx scalar_selected\n",
         //    glist_getcanvas(owner), x->sc_vec);
-        gui_vmess("gui_text_deselect", "ss",
-            canvas_tag(glist_getcanvas(owner)), tagbuf);
+        gui_vmess("gui_text_deselect", "xs",
+            glist_getcanvas(owner), tagbuf);
     }
     //sys_vgui("pdtk_select_all_gop_widgets .x%lx %lx %d\n",
     //    glist_getcanvas(owner), owner, state);
@@ -647,8 +647,8 @@ static void scalar_group_configure(t_scalar *x, t_glist *owner,
     char parentbuf[MAXPDSTRING];
     sprintf(parentbuf, "dgroup%lx.%lx", (long unsigned int)parent,
         (long unsigned int)x->sc_vec);
-    gui_start_vmess("gui_draw_configure_all", "ss",
-        canvas_tag(glist_getcanvas(owner)), tagbuf);
+    gui_start_vmess("gui_draw_configure_all", "xs",
+        glist_getcanvas(owner), tagbuf);
     svg_grouptogui(gl, template, x->sc_vec);
     gui_end_vmess();
     for (y = gl->gl_list; y; y = y->g_next)
@@ -686,8 +686,8 @@ void scalar_configure(t_scalar *x, t_glist *owner)
 
         char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "scalar%lx", (long unsigned int)x->sc_vec);
-        gui_vmess("gui_scalar_configure_gobj", "ssiffffii",
-            canvas_tag(glist_getcanvas(owner)), 
+        gui_vmess("gui_scalar_configure_gobj", "xsiffffii",
+            glist_getcanvas(owner), 
             tagbuf,
             glist_isselected(owner, &x->sc_gobj),
             xscale, 0.0, 0.0, yscale,
@@ -703,8 +703,8 @@ void scalar_configure(t_scalar *x, t_glist *owner)
         //sprintf(tagbuf, "scalar%lxgobj", (long unsigned int)x->sc_vec);
         //sprintf(groupbuf, "dgroup%lx.%lx", (long unsigned int)templatecanvas,
         //    (long unsigned int)x->sc_vec);
-        //gui_vmess("gui_create_scalar_group", "sss",
-        //    canvas_tag(glist_getcanvas(owner)), groupbuf, tagbuf); 
+        //gui_vmess("gui_create_scalar_group", "xss",
+        //    glist_getcanvas(owner), groupbuf, tagbuf); 
         //sys_vgui("pdtk_bind_scalar_mouseover "
         //         ".x%lx.c .x%lx.x%lx.template%lx {.x%lx}\n",
         //    glist_getcanvas(owner), glist_getcanvas(owner),
@@ -756,8 +756,8 @@ static void scalar_groupvis(t_scalar *x, t_glist *owner, t_template *template,
         char parentbuf[MAXPDSTRING];
         sprintf(parentbuf, "dgroup%lx.%lx", (long unsigned int)parent,
             (long unsigned int)x->sc_vec);
-        gui_start_vmess("gui_create_scalar_group", "sss",
-            canvas_tag(glist_getcanvas(owner)), tagbuf, parentbuf);
+        gui_start_vmess("gui_create_scalar_group", "xss",
+            glist_getcanvas(owner), tagbuf, parentbuf);
         svg_grouptogui(gl, template, x->sc_vec);
         gui_end_vmess();
         //sys_gui("\n");
@@ -860,8 +860,8 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
         //    );
         char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "scalar%lx", (long unsigned int)x->sc_vec);
-        gui_vmess("gui_create_scalar", "ssiffffiii",
-            canvas_tag(glist_getcanvas(owner)), 
+        gui_vmess("gui_create_scalar", "xsiffffiii",
+            glist_getcanvas(owner), 
             tagbuf,
             glist_isselected(owner, &x->sc_gobj),
             xscale, 0.0, 0.0, yscale,
@@ -877,8 +877,8 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
         sprintf(tagbuf, "scalar%lxgobj", (long unsigned int)x->sc_vec);
         sprintf(groupbuf, "dgroup%lx.%lx", (long unsigned int)templatecanvas,
             (long unsigned int)x->sc_vec);
-        gui_vmess("gui_create_scalar_group", "sss",
-            canvas_tag(glist_getcanvas(owner)), groupbuf, tagbuf);
+        gui_vmess("gui_create_scalar_group", "xss",
+            glist_getcanvas(owner), groupbuf, tagbuf);
 
         sys_vgui("pdtk_bind_scalar_mouseover "
                  ".x%lx.c .x%lx.x%lx.template%lx {.x%lx}\n",
@@ -911,8 +911,8 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
         //    x->sc_vec);
         char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "scalar%lx", (long unsigned int)x->sc_vec);
-        gui_vmess("gui_scalar_erase", "ss",
-            canvas_tag(glist_getcanvas(owner)), tagbuf);
+        gui_vmess("gui_scalar_erase", "xs",
+            glist_getcanvas(owner), tagbuf);
     }
 
     sys_unqueuegui(x);
diff --git a/pd/src/g_slider.c b/pd/src/g_slider.c
index 09167f16b00f5e55bcf06c58542637f32de7f932..21378a63fec5b0c3ea628d4963b0fe5d029b6bf3 100644
--- a/pd/src/g_slider.c
+++ b/pd/src/g_slider.c
@@ -33,15 +33,15 @@ static void slider_draw_update(t_gobj *client, t_glist *glist)
         r=y2-3 - (x->x_val+50)/100;
         //sys_vgui(".x%lx.c coords %lxKNOB %d %d %d %d\n",
         //    canvas, x, x1+2, r, x2-2, r);
-        gui_vmess("gui_slider_update", "ssiiiiii",
-            canvas_tag(canvas), gobj_tag(x), x1+2, r, x2-2, r,
+        gui_vmess("gui_slider_update", "xxiiiiii",
+            canvas, x, x1+2, r, x2-2, r,
             x1, y1);
     } else {
         r=x1+3 + (x->x_val+50)/100;
         //sys_vgui(".x%lx.c coords %lxKNOB %d %d %d %d\n",
         //    canvas, x, r, y1+2, r, y2-2);
-        gui_vmess("gui_slider_update", "ssiiiiii",
-            canvas_tag(canvas), gobj_tag(x), r, y1+2, r, y2-2,
+        gui_vmess("gui_slider_update", "xxiiiiii",
+            canvas, x, r, y1+2, r, y2-2,
             x1, y1);
     }
     int t = x->x_thick;
@@ -72,8 +72,8 @@ static void slider_draw_new(t_slider *x, t_glist *glist)
         //    canvas, x1+2, r, x2-2, r, x->x_gui.x_fcol, x, x);
         char colorbuf[MAXPDSTRING];
         sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-        gui_vmess("gui_create_slider", "sssiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_create_slider", "xxsiiiiii",
+            canvas, x,
             colorbuf, x1+2, r, x2-2, r, x1, y1);
     } else {
         //sys_vgui(".x%lx.c create polyline %d %d %d %d -strokewidth 3 "
@@ -81,8 +81,8 @@ static void slider_draw_new(t_slider *x, t_glist *glist)
         //    canvas, r, y1+2, r, y2-2, x->x_gui.x_fcol, x, x);
         char colorbuf[MAXPDSTRING];
         sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-        gui_vmess("gui_create_slider", "sssiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_create_slider", "xxsiiiiii",
+            canvas, x,
             colorbuf, r, y1+2, r, y2-2, x1, y1);
     }
 }
@@ -102,16 +102,16 @@ static void slider_draw_move(t_slider *x, t_glist *glist)
     {
         //sys_vgui(".x%lx.c coords %lxKNOB %d %d %d %d\n",
         //    canvas, x, x1+2, r, x2-2, r);
-        gui_vmess("gui_slider_update", "ssiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_slider_update", "xxiiiiii",
+            canvas, x,
             x1+2, r, x2-2, r, x1, y1);
     }
     else
     {
         //sys_vgui(".x%lx.c coords %lxKNOB %d %d %d %d\n",
         //    canvas, x, r, y1+2, r, y2-2);
-        gui_vmess("gui_slider_update", "ssiiiiii",
-            canvas_tag(canvas), gobj_tag(x),
+        gui_vmess("gui_slider_update", "xxiiiiii",
+            canvas, x,
             r, y1+2, r, y2-2, x1, y1);
     }
 }
@@ -124,8 +124,8 @@ static void slider_draw_config(t_slider *x, t_glist *glist)
     //    canvas, x, x->x_gui.x_fcol);
     char colorbuf[MAXPDSTRING];
     sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-    gui_vmess("gui_slider_indicator_color", "sss",
-        canvas_tag(canvas), gobj_tag(x), colorbuf); 
+    gui_vmess("gui_slider_indicator_color", "xxs",
+        canvas, x, colorbuf); 
 }
 
 void slider_check_minmax(t_slider *x, double min, double max);
diff --git a/pd/src/g_template.c b/pd/src/g_template.c
index 822e0200ba9710a21f1d0c1eed7743f2011f2ce9..b3497dc3c0bfd74ea7523c279f856ed45f9ab864 100644
--- a/pd/src/g_template.c
+++ b/pd/src/g_template.c
@@ -1530,8 +1530,8 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
             fill = &s_;
         //sys_vgui(".x%lx.c itemconfigure %s -fill %s\n",
         //    glist_getcanvas(c), tag, fill->s_name);
-        gui_vmess("gui_draw_configure", "ssss",
-            canvas_tag(glist_getcanvas(c)), tag, s->s_name, fill->s_name);
+        gui_vmess("gui_draw_configure", "xsss",
+            glist_getcanvas(c), tag, s->s_name, fill->s_name);
     }
     else if (s == gensym("stroke"))
     {
@@ -1547,12 +1547,12 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
                 (int)fielddesc_getfloat(fd+2, template, data, 1)));
         }
         else stroke = &s_;
-        gui_vmess("gui_draw_configure", "ssss",
-            canvas_tag(glist_getcanvas(c)), tag, s->s_name, stroke->s_name);
+        gui_vmess("gui_draw_configure", "xsss",
+            glist_getcanvas(c), tag, s->s_name, stroke->s_name);
     }
     else if (s == gensym("fill-rule"))
-        gui_vmess("gui_draw_configure", "sssi",
-            canvas_tag(glist_getcanvas(c)), tag, "fill-rule",
+        gui_vmess("gui_draw_configure", "xssi",
+            glist_getcanvas(c), tag, "fill-rule",
             (int)fielddesc_getcoord(
                 &x->x_fillrule.a_attr, template, data, 1) ?
                     "evenodd" : "nonzero");
@@ -1561,21 +1561,21 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
              s == gensym("stroke-dashoffset") ||
              s == gensym("stroke-miterlimit") ||
              s == gensym("stroke-opacity"))
-        gui_vmess("gui_draw_configure", "sssf",
-            canvas_tag(glist_getcanvas(c)), tag, s->s_name,
+        gui_vmess("gui_draw_configure", "xssf",
+            glist_getcanvas(c), tag, s->s_name,
             fielddesc_getcoord(
                 &(svg_getattr(x, s)->a_attr), template, data, 1));
     else if (s == gensym("pointer-events"))
         *predraw_bbox = 1;
     else if (s == gensym("stroke-linecap"))
-        gui_vmess("gui_draw_configure", "ssss",
-            canvas_tag(glist_getcanvas(c)), tag, "stroke-linecap",
+        gui_vmess("gui_draw_configure", "xsss",
+            glist_getcanvas(c), tag, "stroke-linecap",
                 get_strokelinecap(
                     (int)fielddesc_getcoord(&x->x_strokelinecap.a_attr,
                         template, data, 1)));
     else if (s == gensym("stroke-linejoin"))
-        gui_vmess("gui_draw_configure", "ssss",
-            canvas_tag(glist_getcanvas(c)), tag, "stroke-linejoin",
+        gui_vmess("gui_draw_configure", "xsss",
+            glist_getcanvas(c), tag, "stroke-linejoin",
                 get_strokelinejoin(
                     (int)fielddesc_getcoord(&x->x_strokelinejoin.a_attr,
                         template, data, 1)));
@@ -1586,8 +1586,8 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
              s == gensym("y") || s == gensym("cy") || s == gensym("y1") ||
              s == gensym("height") || s == gensym("width"))
     {
-        gui_vmess("gui_draw_configure", "sssf",
-            canvas_tag(glist_getcanvas(c)), tag, s->s_name,
+        gui_vmess("gui_draw_configure", "xssf",
+            glist_getcanvas(c), tag, s->s_name,
             fielddesc_getcoord(
                 &(svg_getattr(x, s)->a_attr), template, data, 1));
         *predraw_bbox = 1;
@@ -1610,15 +1610,15 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
         svg_parsetransform(x, template, data, &m1, &m2, &m3, &m4, &m5, &m6);
         char mbuf[MAXPDSTRING];
         sprintf(mbuf, "matrix(%g %g %g %g %g %g)", m1, m2, m3, m4, m5, m6);
-        gui_vmess("gui_draw_configure", "ssss",
-            canvas_tag(glist_getcanvas(c)), tag, s->s_name,
+        gui_vmess("gui_draw_configure", "xsss",
+            glist_getcanvas(c), tag, s->s_name,
             mbuf);
         *predraw_bbox = 1;
     }
     else if (s == gensym("vis"))
     {
-        gui_vmess("gui_draw_configure", "ssss",
-            canvas_tag(glist_getcanvas(c)), tag, "visibility",
+        gui_vmess("gui_draw_configure", "xsss",
+            glist_getcanvas(c), tag, "visibility",
             (int)fielddesc_getcoord(
                 &x->x_vis.a_attr, template, data, 1) ? "visible" : "hidden");
         *predraw_bbox = 1;
@@ -1629,8 +1629,8 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
         {
             t_fielddesc *fd = x->x_strokedasharray;
             int i;
-            gui_start_vmess("gui_draw_configure", "sss",
-                canvas_tag(glist_getcanvas(c)), tag, s->s_name);
+            gui_start_vmess("gui_draw_configure", "xss",
+                glist_getcanvas(c), tag, s->s_name);
             gui_start_array();
             for (i = 0; i < x->x_ndash; i++)
                 gui_f(fielddesc_getcoord(fd+i, template, data, 1));
@@ -1643,8 +1643,8 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
         char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "draw%lx.%lx",
             (long unsigned int)parent, (long unsigned int)data);
-        gui_start_vmess("gui_draw_configure", "sss",
-            canvas_tag(glist_getcanvas(c)), tagbuf, "d"); 
+        gui_start_vmess("gui_draw_configure", "xss",
+            glist_getcanvas(c), tagbuf, "d"); 
         /* let's turn off bbox caching so we can recalculate the bbox */
         if (x->x_pathrect_cache != -1)
            x->x_pathrect_cache = 0;
@@ -1687,8 +1687,8 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
         char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "draw%lx.%lx",
             (long unsigned int)parent, (long unsigned int)data);
-        gui_start_vmess("gui_draw_coords", "sss",
-            canvas_tag(glist_getcanvas(c)), tagbuf, x->x_type->s_name);
+        gui_start_vmess("gui_draw_coords", "xss",
+            glist_getcanvas(c), tagbuf, x->x_type->s_name);
         gui_start_array();
         /* let's turn off bbox caching so we can recalculate the bbox */
         if (x->x_pathrect_cache != -1)
@@ -3590,8 +3590,8 @@ void svg_parentwidgettogui(t_gobj *z, t_glist *owner, t_word *data,
         char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "draw%lx.%lx", (long unsigned int)x,
             (long unsigned int)data);
-        gui_start_vmess("gui_draw_configure_all", "ss",
-            canvas_tag(glist_getcanvas(owner)), tagbuf);
+        gui_start_vmess("gui_draw_configure_all", "xs",
+            glist_getcanvas(owner), tagbuf);
         svg_togui((t_svg *)x->x_attr, template, data);
         gui_end_vmess();
     }
@@ -3654,7 +3654,7 @@ static void draw_vis(t_gobj *z, t_glist *glist, t_glist *parentglist,
 
         //sys_vgui("nn gui_draw_vis \".x%lx\",\"%s\",\"", glist_getcanvas(glist),
         //    sa->x_type->s_name);
-        gui_start_vmess("gui_draw_vis", "ss", canvas_tag(glist_getcanvas(glist)),
+        gui_start_vmess("gui_draw_vis", "xs", glist_getcanvas(glist),
             sa->x_type->s_name);
 
         /* next send the gui drawing arguments: commands and points
@@ -3717,7 +3717,7 @@ static void draw_vis(t_gobj *z, t_glist *glist, t_glist *parentglist,
             char itemtagbuf[MAXPDSTRING];
             sprintf(itemtagbuf, "draw%lx.%lx", (long unsigned int)x,
                 (long unsigned int)data);
-            gui_vmess("gui_draw_erase_item", "ss", canvas_tag(glist_getcanvas(glist)),
+            gui_vmess("gui_draw_erase_item", "xs", glist_getcanvas(glist),
                 itemtagbuf);
         }
                 
@@ -5257,8 +5257,8 @@ static void plot_vis(t_gobj *z, t_glist *glist, t_glist *parentglist,
             int ndrawn = 0;
             //sys_vgui(".x%lx.c create path { \\\n", glist_getcanvas(glist));
 
-            gui_start_vmess("gui_plot_vis", "sii",
-                canvas_tag(glist_getcanvas(glist)),
+            gui_start_vmess("gui_plot_vis", "xii",
+                glist_getcanvas(glist),
                 basex,
                 basey);
                 
diff --git a/pd/src/g_text.c b/pd/src/g_text.c
index 64ad54ee8f005ff6bf89160c90a52d17bf42ddfb..df0898f9b4ef3db3953bb12958ca0d8f5f5dfec8 100644
--- a/pd/src/g_text.c
+++ b/pd/src/g_text.c
@@ -709,8 +709,8 @@ static void message_click(t_message *x,
         t_rtext *y = glist_findrtext(x->m_glist, &x->m_text);
         //sys_vgui(".x%lx.c itemconfigure %sR -strokewidth 5\n", 
         //    glist_getcanvas(x->m_glist), rtext_gettag(y));
-        gui_vmess("gui_message_flash", "ssi",
-            canvas_tag(glist_getcanvas(x->m_glist)),
+        gui_vmess("gui_message_flash", "xsi",
+            glist_getcanvas(x->m_glist),
             rtext_gettag(y), 1);
         clock_delay(x->m_clock, 120);
     }
@@ -723,8 +723,8 @@ static void message_tick(t_message *x)
         t_rtext *y = glist_findrtext(x->m_glist, &x->m_text);
         //sys_vgui(".x%lx.c itemconfigure %sR -strokewidth 1\n",
         //    glist_getcanvas(x->m_glist), rtext_gettag(y));
-        gui_vmess("gui_message_flash", "ssi",
-            canvas_tag(glist_getcanvas(x->m_glist)),
+        gui_vmess("gui_message_flash", "xsi",
+            glist_getcanvas(x->m_glist),
             rtext_gettag(y), 0);
     }
 }
@@ -1221,8 +1221,8 @@ static void gatom_vis(t_gobj *z, t_glist *glist, int vis)
             //    canvas_realizedollar(x->a_glist, x->a_label)->s_name,
             //    sys_hostfontsize(glist_getfont(glist)),
             //    "$pd_colors(text)");
-            gui_vmess("gui_text_new", "sssiiisi",
-                canvas_tag(glist_getcanvas(glist)),
+            gui_vmess("gui_text_new", "xssiiisi",
+                glist_getcanvas(glist),
                 rtext_gettag(y),
                 "gatom",
                 0,
@@ -1509,8 +1509,8 @@ static void text_displace(t_gobj *z, t_glist *glist,
     if (glist_isvisible(glist))
     {
         t_rtext *y = glist_findrtext(glist, x);
-        gui_vmess("gui_text_displace", "ssii",
-            canvas_tag(glist), rtext_gettag(y), dx, dy);
+        gui_vmess("gui_text_displace", "xsii",
+            glist, rtext_gettag(y), dx, dy);
 //        t_rtext *y = glist_findrtext(glist, x);
 //        rtext_displace(y, dx, dy);
 //        text_drawborder(x, glist, rtext_gettag(y),
@@ -1603,8 +1603,8 @@ static void text_select(t_gobj *z, t_glist *glist, int state)
             //sys_vgui(".x%lx.c itemconfigure %sR -stroke %s\n",
             //    glist_getcanvas(glist), rtext_gettag(y),
             //    (state? "$pd_colors(selection)" : outline));
-            gui_vmess("gui_text_select_color", "ss",
-                canvas_tag(glist_getcanvas(glist)), rtext_gettag(y));
+            gui_vmess("gui_text_select_color", "xs",
+                glist_getcanvas(glist), rtext_gettag(y));
             if (z->g_pd == gatom_class)
             {
                 //sys_vgui(".x%lx.c itemconfigure %lx.l -fill %s\n",
@@ -1626,8 +1626,8 @@ static void text_select(t_gobj *z, t_glist *glist, int state)
                 }
                 //sys_vgui(".x%lx.c addtag selected withtag %sR \n",
                 //    glist_getcanvas(glist), rtext_gettag(y));
-                gui_vmess("gui_text_select", "ss",
-                    canvas_tag(glist_getcanvas(glist)), rtext_gettag(y));
+                gui_vmess("gui_text_select", "xs",
+                    glist_getcanvas(glist), rtext_gettag(y));
 
                 if (pd_class(&x->te_pd) == text_class &&
                              x->te_type != T_TEXT &&
@@ -1666,8 +1666,8 @@ static void text_select(t_gobj *z, t_glist *glist, int state)
                 }
                 //sys_vgui(".x%lx.c dtag %sR selected\n",
                 //    glist_getcanvas(glist), rtext_gettag(y));
-                gui_vmess("gui_text_deselect", "ss",
-                    canvas_tag(glist_getcanvas(glist)),
+                gui_vmess("gui_text_deselect", "xs",
+                    glist_getcanvas(glist),
                     rtext_gettag(y));
 
                 if (pd_class(&x->te_pd) == text_class &&
@@ -1758,8 +1758,8 @@ static void text_vis(t_gobj *z, t_glist *glist, int vis)
 
                 // make a group
                 text_getrect(&x->te_g, glist, &x1, &y1, &x2, &y2);
-                gui_vmess("gui_text_create_gobj", "sssiii",
-                    canvas_tag(glist_getcanvas(glist)),
+                gui_vmess("gui_text_create_gobj", "xssiii",
+                    glist_getcanvas(glist),
                     rtext_gettag(y), type, x1, y1, glist_istoplevel(glist));
 
                 if (x->te_type == T_ATOM)
@@ -1980,8 +1980,8 @@ void glist_drawiofor(t_glist *glist, t_object *ob, int firsttime,
 /* need to send issignal and is_iemgui here... */
 
 
-            gui_vmess("gui_canvas_drawio", "sssiiiiiisiii",
-                canvas_tag(glist_getcanvas(glist)), rtext_gettag(y), tag,
+            gui_vmess("gui_canvas_drawio", "xssiiiiiisiii",
+                glist_getcanvas(glist), rtext_gettag(y), tag,
                 onset, y2 - 2, onset + IOWIDTH, y2, x1, y1, "o", i,
                 issignal, 0);
         }
@@ -1999,8 +1999,8 @@ void glist_drawiofor(t_glist *glist, t_object *ob, int firsttime,
                          i);*/
                 // end jsarlo
 
-            gui_vmess("gui_canvas_redraw_io", "sssiisiii",
-                canvas_tag(glist_getcanvas(glist)), rtext_gettag(y), tag,
+            gui_vmess("gui_canvas_redraw_io", "xssiisiii",
+                glist_getcanvas(glist), rtext_gettag(y), tag,
                 onset, y2 - 2, "o", i, x1, y1);
         }
     }
@@ -2024,8 +2024,8 @@ void glist_drawiofor(t_glist *glist, t_object *ob, int firsttime,
             //    tag, i, tag,
             //    (issignal ? "signal" : "control"),
             //    (selected ? "selected" : ""));
-            gui_vmess("gui_canvas_drawio", "sssiiiiiisiii",
-                canvas_tag(glist_getcanvas(glist)), rtext_gettag(y), tag,
+            gui_vmess("gui_canvas_drawio", "xssiiiiiisiii",
+                glist_getcanvas(glist), rtext_gettag(y), tag,
                 onset, y1, onset + IOWIDTH, y1 + EXTRAPIX, x1, y1, "i", i,
                 issignal, 0);
         }
@@ -2043,8 +2043,8 @@ void glist_drawiofor(t_glist *glist, t_object *ob, int firsttime,
                          i);*/
                 // end jsarlo
 
-            gui_vmess("gui_canvas_redraw_io", "sssiisiii",
-                canvas_tag(glist_getcanvas(glist)), rtext_gettag(y), tag,
+            gui_vmess("gui_canvas_redraw_io", "xssiisiii",
+                glist_getcanvas(glist), rtext_gettag(y), tag,
                 onset, y1, "i", i, x1, y1);
         }
     }
@@ -2189,8 +2189,8 @@ void text_drawborder(t_text *x, t_glist *glist,
                     fill, tag, tag, box_tag,
                     (selected ? "selected" : ""));
             */
-            gui_vmess("gui_text_drawborder", "sssiiiii",
-                canvas_tag(glist_getcanvas(glist)), tag, "none",
+            gui_vmess("gui_text_drawborder", "xssiiiii",
+                glist_getcanvas(glist), tag, "none",
                 broken, x1, y1, x2, y2);
                
                 //-dash %s -> pattern disabled for tkpath
@@ -2202,8 +2202,8 @@ void text_drawborder(t_text *x, t_glist *glist,
             //sys_vgui(".x%lx.c coords %sR %d %d %d %d %d %d %d %d %d %d\n",
             //    glist_getcanvas(glist), tag,
             //        x1, y1,  x2, y1,  x2, y2,  x1, y2,  x1, y1);
-            gui_vmess("gui_text_redraw_border", "ssiiii",
-                canvas_tag(glist_getcanvas(glist)), tag, x1, y1, x2, y2);
+            gui_vmess("gui_text_redraw_border", "xsiiii",
+                glist_getcanvas(glist), tag, x1, y1, x2, y2);
 /* this seems to be totally extraneous  hans@at.or.at
              sys_vgui(".x%lx.c itemconfigure %sR -dash %s -outline %s\n", 
                      glist_getcanvas(glist), tag, pattern, outline); */
@@ -2227,8 +2227,8 @@ void text_drawborder(t_text *x, t_glist *glist,
 
             // coords are a quick hack to separate gobj's x/y from the polygon's coords
             // which of course can be greatly simplified
-            gui_vmess("gui_message_drawborder", "ssii",
-                canvas_tag(glist_getcanvas(glist)), tag, x2 - x1, y2 - y1);
+            gui_vmess("gui_message_drawborder", "xsii",
+                glist_getcanvas(glist), tag, x2 - x1, y2 - y1);
 //                x1-x1, y1-y1, x2+4-x1, y1-y1, x2-x1,
 //                y1+4-y1, x2-x1, y2-4-y1, x2+4-x1, y2-y1, x1-x1, y2-y1, x1-x1, y1-y1);
         }
@@ -2239,8 +2239,8 @@ void text_drawborder(t_text *x, t_glist *glist,
             //    glist_getcanvas(glist), tag,
             //    x1, y1,  x2+4, y1,  x2, y1+4,  x2, y2-4,  x2+4, y2,
             //    x1, y2,  x1, y1);
-            gui_vmess("gui_message_redraw_border", "ssiiiiiiiiiiiiii",
-                canvas_tag(glist_getcanvas(glist)), tag,
+            gui_vmess("gui_message_redraw_border", "xsiiiiiiiiiiiiii",
+                glist_getcanvas(glist), tag,
                 x1-x1, y1-y1,  x2+4-x1, y1-y1,  x2-x1, y1+4-y1, x2-x1, y2-4-y1,  x2+4-x1, y2-y1,
                 x1-x1, y2-y1,  x1-x1, y1-y1);
         }
@@ -2259,8 +2259,8 @@ void text_drawborder(t_text *x, t_glist *glist,
             //    (selected ? "$pd_colors(selection)" : "$pd_colors(atom_box_border)"),
             //        tag, tag, (selected ? "selected" : ""));
 
-            gui_vmess("gui_atom_drawborder", "ssiiiiiiiiiiii",
-                canvas_tag(glist_getcanvas(glist)), tag,
+            gui_vmess("gui_atom_drawborder", "xsiiiiiiiiiiii",
+                glist_getcanvas(glist), tag,
                 x1-x1, y1-y1, x2-4-x1, y1-y1, x2-x1,
                 y1+4-y1, x2-x1, y2-y1, x1-x1, y2-y1, x1-x1, y1-y1);
         }
@@ -2440,7 +2440,7 @@ void glist_eraseiofor(t_glist *glist, t_object *ob, char *tag)
 void text_erase_gobj(t_text *x, t_glist *glist, char *tag)
 {
     if (x->te_type == T_TEXT && !glist->gl_edit) return;
-    gui_vmess("gui_gobj_erase", "ss", canvas_tag(glist_getcanvas(glist)), tag);
+    gui_vmess("gui_gobj_erase", "xs", glist_getcanvas(glist), tag);
 }
 
 /* Another function that's unnecessary... parent gobj group will
diff --git a/pd/src/g_toggle.c b/pd/src/g_toggle.c
index 6c10974db0d7251e7a94d711482ba76fecbe8f42..db04c3c8041d5f6bad26c6ea9b7608296d5f2dce 100644
--- a/pd/src/g_toggle.c
+++ b/pd/src/g_toggle.c
@@ -32,8 +32,8 @@ void toggle_draw_update(t_gobj *xgobj, t_glist *glist)
             //         (x->x_on!=0.0)?x->x_gui.x_fcol:x->x_gui.x_bcol);
             char colorbuf[MAXPDSTRING];
             sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-            gui_vmess("gui_toggle_update", "ssis", canvas_tag(canvas),
-                gobj_tag(x), x->x_on != 0.0, colorbuf);
+            gui_vmess("gui_toggle_update", "xxis", canvas,
+                x, x->x_on != 0.0, colorbuf);
         }
         x->x_gui.x_changed = 0;
     }
@@ -57,8 +57,8 @@ void toggle_draw_new(t_toggle *x, t_glist *glist)
     //sys_vgui(".x%lx.c create polyline %d %d %d %d -strokewidth %d "
     //    "-stroke #%6.6x -tags {%lxX2 x%lx text iemgui}\n",
     //    canvas, x1+w+1, y2-w-1, x2-w-1, y1+w+1, w, col, x, x);
-    gui_vmess("gui_create_toggle", "sssiiiiiiiiiiii", canvas_tag(canvas),
-        gobj_tag(x), colorbuf, w,
+    gui_vmess("gui_create_toggle", "xxsiiiiiiiiiiii", canvas,
+        x, colorbuf, w,
         (x->x_on != 0.0),
         x1+w+1, y1+w+1, x2-w-1, y2-w-1,
         x1+w+1, y2-w-1, x2-w-1, y1+w+1, x1, y1);
@@ -78,8 +78,8 @@ void toggle_draw_move(t_toggle *x, t_glist *glist)
     //    canvas, x, x1+s, y1+s, x2-s, y2-s);
     //sys_vgui(".x%lx.c coords %lxX2 %d %d %d %d\n",
     //    canvas, x, x1+s, y2-s, x2-s, y1+s);
-    gui_vmess("gui_toggle_resize_cross", "ssiiiiiiiiiii",
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_toggle_resize_cross", "xxiiiiiiiiiii",
+        canvas, x,
         w,
         x1+s, y1+s, x2-s, y2-s,
         x1+s, y2-s, x2-s, y1+s,
@@ -94,8 +94,8 @@ void toggle_draw_config(t_toggle* x, t_glist* glist)
     //    canvas, x, x, x->x_on?x->x_gui.x_fcol:x->x_gui.x_bcol);
     char colorbuf[MAXPDSTRING];
     sprintf(colorbuf, "#%6.6x", x->x_gui.x_fcol);
-    gui_vmess("gui_toggle_update", "ssis", canvas_tag(canvas),
-    gobj_tag(x), x->x_on != 0.0, colorbuf);
+    gui_vmess("gui_toggle_update", "xxis", canvas,
+    x, x->x_on != 0.0, colorbuf);
 }
 
 static void toggle__clickhook(t_scalehandle *sh, int newstate)
diff --git a/pd/src/g_vumeter.c b/pd/src/g_vumeter.c
index 8b570ba46b03ac7f45c9cfb906fd052505a20839..e9d9f4aa69fdb8944687c8e727097f9f42ffa663 100644
--- a/pd/src/g_vumeter.c
+++ b/pd/src/g_vumeter.c
@@ -77,8 +77,8 @@ static void vu_update_rms(t_vu *x, t_glist *glist)
         //sys_vgui(".x%lx.c coords %lxRCOVER %d %d %d %d\n",
         //    glist_getcanvas(glist), x, quad1 + 1, off + 2, quad3 + 1,
         //    off + (x->x_led_size + 1) * (IEM_VU_STEPS - x->x_rms) + 2);
-        gui_vmess("gui_vumeter_update_rms", "ssiiiiii",
-            canvas_tag(glist_getcanvas(glist)), gobj_tag(x),
+        gui_vmess("gui_vumeter_update_rms", "xxiiiiii",
+            glist_getcanvas(glist), x,
             quad1 + 1, off + 2, quad3 + 1, off + (x->x_led_size + 1) *
             (IEM_VU_STEPS - x->x_rms) + 2, x1, y1);
     }
@@ -103,8 +103,8 @@ static void vu_update_peak(t_vu *x, t_glist *glist)
             //    canvas, x, x1 + 1, j + 2, x1 + x->x_gui.x_w + 2, j + 2);
             char colorbuf[MAXPDSTRING];
             sprintf(colorbuf, "#%6.6x", iemgui_color_hex[i]);
-            gui_vmess("gui_vumeter_update_peak", "sssiiiiii",
-                canvas_tag(canvas), gobj_tag(x), colorbuf,
+            gui_vmess("gui_vumeter_update_peak", "xxsiiiiii",
+                canvas, x, colorbuf,
                 x1 + 1, j + 2, x1 + x->x_gui.x_w + 2, j + 2, x1, y1);
 
             //sys_vgui(".x%lx.c itemconfigure %lxPLED -stroke #%6.6x\n",
@@ -122,8 +122,8 @@ static void vu_update_peak(t_vu *x, t_glist *glist)
             char colorbuf[MAXPDSTRING];
             sprintf(colorbuf, "#%6.6x", x->x_gui.x_bcol);
 
-            gui_vmess("gui_vumeter_update_peak", "sssiiiiii",
-                canvas_tag(canvas), gobj_tag(x), colorbuf,
+            gui_vmess("gui_vumeter_update_peak", "xxsiiiiii",
+                canvas, x, colorbuf,
                 mid+1, y1+22, mid+1, y1+22, x1, y1);
         }
     }
@@ -168,8 +168,8 @@ static void vu_draw_new(t_vu *x, t_glist *glist)
             char colorbuf[MAXPDSTRING];
             sprintf(colorbuf, "#%6.6x", x->x_gui.x_lcol);
             // not handling font size yet
-            gui_vmess("gui_create_vumeter_text", "sssiisiii",
-                canvas_tag(canvas), gobj_tag(x),
+            gui_vmess("gui_create_vumeter_text", "xxsiisiii",
+                canvas, x,
                 colorbuf, end+1, yyy+k3+2, iemgui_vu_scale_str[i/4],
                 i, x1, y1);
         }
@@ -183,8 +183,8 @@ static void vu_draw_new(t_vu *x, t_glist *glist)
             //x->x_led_size, iemgui_color_hex[led_col], x, i, x);
             char colorbuf[MAXPDSTRING];
             sprintf(colorbuf, "#%6.6x", iemgui_color_hex[led_col]);
-            gui_vmess("gui_create_vumeter_steps", "sssiiiiiiiii",
-                canvas_tag(canvas), gobj_tag(x), colorbuf, quad1+1,
+            gui_vmess("gui_create_vumeter_steps", "xxsiiiiiiiii",
+                canvas, x, colorbuf, quad1+1,
                 yyy+2, quad3, yyy+2, x->x_led_size, index, x1, y1, i);
         }
     }
@@ -194,8 +194,8 @@ static void vu_draw_new(t_vu *x, t_glist *glist)
     //    x->x_gui.x_bcol, x->x_gui.x_bcol, x, x);
     char colorbuf[MAXPDSTRING];
     sprintf(colorbuf, "#%6.6x", x->x_gui.x_bcol);
-    gui_vmess("gui_create_vumeter_rect", "sssiiiiii",
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_create_vumeter_rect", "xxsiiiiii",
+        canvas, x,
         colorbuf, quad1+1, y1+1, quad3, y1+1 + k1*IEM_VU_STEPS, x1, y1);
     //sys_vgui(".x%lx.c create polyline %d %d %d %d "
     //    "-strokewidth %d -fill #%6.6x "
@@ -203,8 +203,8 @@ static void vu_draw_new(t_vu *x, t_glist *glist)
     //    canvas, mid+1, y1+12,
     //    mid+1, y1+12, x->x_led_size, x->x_gui.x_bcol, x, x);
     sprintf(colorbuf, "#%6.6x", x->x_gui.x_bcol);
-    gui_vmess("gui_create_vumeter_peak", "sssiiiiiii",
-        canvas_tag(canvas), gobj_tag(x),
+    gui_vmess("gui_create_vumeter_peak", "xxsiiiiiii",
+        canvas, x,
         colorbuf, mid+1, y1+12, mid+1, y1+12, x->x_led_size, x1, y1);
     x->x_updaterms = x->x_updatepeak = 1;
     sys_queuegui(x, x->x_gui.x_glist, vu_draw_update);
@@ -225,23 +225,23 @@ static void vu_draw_move(t_vu *x, t_glist *glist)
 
     //sys_vgui(".x%lx.c coords %lxBASE %d %d %d %d\n",
     //    canvas, x, x1, y1, x1+x->x_gui.x_w+2,y1+x->x_gui.x_h+4);
-    gui_vmess("gui_vumeter_border_coords", "ssii",
-        canvas_tag(canvas), gobj_tag(x), x->x_gui.x_w+2, x->x_gui.x_h+4);
+    gui_vmess("gui_vumeter_border_coords", "xxii",
+        canvas, x, x->x_gui.x_w+2, x->x_gui.x_h+4);
     for(i=1; i<=IEM_VU_STEPS; i++)
     {
         yyy = k4 + k1*(k2-i);
         //sys_vgui(".x%lx.c coords %lxRLED%d %d %d %d %d\n",
         //    canvas, x, i, quad1+1, yyy+2, quad3, yyy+2);
-        gui_vmess("gui_update_vumeter_step_coords", "ssiiiiiii",
-            canvas_tag(canvas), gobj_tag(x), i, quad1+1, yyy+2, quad3, yyy+2,
+        gui_vmess("gui_update_vumeter_step_coords", "xxiiiiiii",
+            canvas, x, i, quad1+1, yyy+2, quad3, yyy+2,
             x1, y1);
 //        if(((i+2)&3) && (x->x_scale))
         if((i&3)==1 && (x->x_scale))
         {
             //sys_vgui(".x%lx.c coords %lxSCALE%d %d %d\n",
             //    canvas, x, i, end+1, yyy+k3+2);
-            gui_vmess("gui_vumeter_text_coords", "ssiiiii",
-                canvas_tag(canvas), gobj_tag(x), i,
+            gui_vmess("gui_vumeter_text_coords", "xxiiiii",
+                canvas, x, i,
                 end+1, yyy+k3+2, x1, y1);
         }
     }
@@ -251,8 +251,8 @@ static void vu_draw_move(t_vu *x, t_glist *glist)
         yyy = k4 + k1*(k2-i);
         //sys_vgui(".x%lx.c coords %lxSCALE%d %d %d\n",
         //    canvas, x, i, end+1, yyy+k3+2);
-        gui_vmess("gui_vumeter_text_coords", "ssiiiii",
-            canvas_tag(canvas), gobj_tag(x), i,
+        gui_vmess("gui_vumeter_text_coords", "xxiiiii",
+            canvas, x, i,
             end+1, yyy+k3+2, x1, y1);
     }
     x->x_updaterms = x->x_updatepeak = 1;
@@ -270,8 +270,8 @@ static void vu_draw_config(t_vu* x, t_glist* glist)
         {
             //sys_vgui(".x%lx.c itemconfigure %lxRLED%d -strokewidth %d\n",
             //    canvas, x, i, x->x_led_size);
-            gui_vmess("gui_update_vumeter_steps", "ssii",
-                canvas_tag(canvas), gobj_tag(x), i, x->x_led_size);
+            gui_vmess("gui_update_vumeter_steps", "xxii",
+                canvas, x, i, x->x_led_size);
         }
         //if((i&3)==1)
         if((i&3)==1)
@@ -283,8 +283,8 @@ static void vu_draw_config(t_vu* x, t_glist* glist)
 
             int isselected = x->x_gui.x_selected == canvas &&
                 x->x_gui.x_glist == canvas && x->x_scale;
-            gui_vmess("gui_update_vumeter_text", "ssssisi",
-                canvas_tag(canvas), gobj_tag(x), iemgui_vu_scale_str[i/4],
+            gui_vmess("gui_update_vumeter_text", "xxssisi",
+                canvas, x, iemgui_vu_scale_str[i/4],
                 iemgui_font(&x->x_gui), isselected, lcol, i);
         }
     }
@@ -294,10 +294,10 @@ static void vu_draw_config(t_vu* x, t_glist* glist)
     //         canvas, x, x->x_led_size);
     char bcol[8];
     sprintf(bcol, "#%6.6x", x->x_gui.x_bcol);
-    gui_vmess("gui_update_vumeter_rect", "sss",
-        canvas_tag(canvas), gobj_tag(x), bcol);
-    gui_vmess("gui_update_vumeter_peak", "ssi",
-        canvas_tag(canvas), gobj_tag(x), x->x_led_size);
+    gui_vmess("gui_update_vumeter_rect", "xxs",
+        canvas, x, bcol);
+    gui_vmess("gui_update_vumeter_peak", "xxi",
+        canvas, x, x->x_led_size);
     iemgui_base_draw_config(&x->x_gui);
 }
 
@@ -501,14 +501,14 @@ static void vu_scale(t_vu *x, t_floatarg fscale)
                 if((i&3)==1)
                 {
                     //sys_vgui(".x%lx.c delete %lxSCALE%d\n", canvas, x, i);
-                    gui_vmess("gui_erase_vumeter_text", "ssi",
-                        canvas_tag(canvas), gobj_tag(x), i);
+                    gui_vmess("gui_erase_vumeter_text", "xxi",
+                        canvas, x, i);
                 }
             }
             i=IEM_VU_STEPS+1;
             //sys_vgui(".x%lx.c delete %lxSCALE%d\n", canvas, x, i);
-            gui_vmess("gui_erase_vumeter_text", "ssi",
-                canvas_tag(canvas), gobj_tag(x), i);
+            gui_vmess("gui_erase_vumeter_text", "xxi",
+                canvas, x, i);
         }
     }
     if(!x->x_scale && scale)
@@ -533,8 +533,8 @@ static void vu_scale(t_vu *x, t_floatarg fscale)
                     //    iemgui_font(&x->x_gui), x->x_gui.x_lcol, x, i, x);
                     char colorbuf[MAXPDSTRING];
                     sprintf(colorbuf, "#%6.6x", x->x_gui.x_lcol);
-                    gui_vmess("gui_create_vumeter_text", "sssiisiii",
-                        canvas_tag(canvas), gobj_tag(x), colorbuf,
+                    gui_vmess("gui_create_vumeter_text", "xxsiisiii",
+                        canvas, x, colorbuf,
                         end+1, yyy+k3+2, iemgui_vu_scale_str[i/4],
                         i, end, yyy);
                 }
@@ -547,8 +547,8 @@ static void vu_scale(t_vu *x, t_floatarg fscale)
             //    iemgui_font(&x->x_gui), x->x_gui.x_lcol, x, i, x);
             char colorbuf[MAXPDSTRING];
             sprintf(colorbuf, "#%6.6x", x->x_gui.x_lcol);
-            gui_vmess("gui_create_vumeter_text", "sssiisiii",
-                canvas_tag(canvas), gobj_tag(x), colorbuf,
+            gui_vmess("gui_create_vumeter_text", "xxsiisiii",
+                canvas, x, colorbuf,
                 end+1, yyy+k3+2, iemgui_vu_scale_str[i/4],
                 i, end, yyy);
         }
diff --git a/pd/src/s_inter.c b/pd/src/s_inter.c
index dd58c5a954ef89bb62ab28e1da952d37cca531b2..6089aa91d710b8bc3bb68baedc9f83140a824263 100644
--- a/pd/src/s_inter.c
+++ b/pd/src/s_inter.c
@@ -795,6 +795,7 @@ void gui_do_vmess(const char *sel, char *fmt, int end, va_list ap)
         case 'f': sys_vgui("%g", va_arg(ap, double)); break;
         case 's': sys_vgui("\"%s\"", escape_double_quotes(va_arg(ap, const char *))); break;
         case 'i': sys_vgui("%d", va_arg(ap, t_int)); break;
+        case 'x': sys_vgui("\"x%.6lx\"", va_arg(ap, long unsigned int)); break;
         //case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break;
         default: goto done;
         }
@@ -1276,9 +1277,9 @@ int sys_startgui(const char *guidir)
 
 /* SUPERHACK - let's just load node-webkit and see what happens */
             sprintf(cmdbuf,
-                  "/home/bud/Downloads/nwjs-v0.12.1-linux-x64/nw "
+                  "/home/user/Downloads/nwjs-v0.12.1-linux-ia32/nw "
 //                  "/home/nu/Downloads/nwjs-v0.12.0-alpha2-linux-ia32/nw "
-                "/home/bud/pd-nw/pd/nw/ %d localhost %s\n",
+                "/home/user/pd-nw/pd/nw/ %d localhost %s\n",
                 portno,
                 (sys_k12_mode ? "pd-l2ork-k12" : "pd-l2ork"));
 
diff --git a/pd/src/x_gui.c b/pd/src/x_gui.c
index 364bf29b0afc29cbd5ddbbd24853fa8227df749b..e401cf1fc62dc0e2ebad3dfb37f1d7c7c3ddf67e 100644
--- a/pd/src/x_gui.c
+++ b/pd/src/x_gui.c
@@ -253,13 +253,12 @@ static void *openpanel_new( void)
     return (x);
 }
 
-extern char *canvas_tag(t_canvas *x);
 static void openpanel_symbol(t_openpanel *x, t_symbol *s)
 {
     char *path = (s && s->s_name) ? s->s_name : "$pd_opendir";
-    sys_vgui("pdtk_openpanel {%s} {%s}\n", x->x_s->s_name, path);
-    gui_vmess("gui_openpanel", "sss",
-        canvas_tag(x->x_canvas),
+    //sys_vgui("pdtk_openpanel {%s} {%s}\n", x->x_s->s_name, path);
+    gui_vmess("gui_openpanel", "xss",
+        x->x_canvas,
         x->x_s->s_name,
         path);
 }
@@ -318,8 +317,8 @@ static void savepanel_symbol(t_savepanel *x, t_symbol *s)
 {
     char *path = (s && s->s_name) ? s->s_name : "$pd_opendir";
     sys_vgui("pdtk_savepanel {%s} {%s}\n", x->x_s->s_name, path);
-    gui_vmess("gui_savepanel", "sss",
-        canvas_tag(x->x_canvas),
+    gui_vmess("gui_savepanel", "xss",
+        x->x_canvas,
         x->x_s->s_name,
         path);
 }