diff --git a/pd/src/g_text.c b/pd/src/g_text.c
index 854a1ce7570022d8182c1b907019f885ee383505..64ad54ee8f005ff6bf89160c90a52d17bf42ddfb 100644
--- a/pd/src/g_text.c
+++ b/pd/src/g_text.c
@@ -1234,7 +1234,13 @@ static void gatom_vis(t_gobj *z, t_glist *glist, int vis)
 
 
         }
-        else sys_vgui(".x%lx.c delete %lx.l\n", glist_getcanvas(glist), x);
+        else
+        {
+            /* We're just deleting the parent gobj in the GUI, which takes
+               care of removing all the children. So we don't need to send
+               a message here */
+            //sys_vgui(".x%lx.c delete %lx.l\n", glist_getcanvas(glist), x);
+        }
     }
     if (!vis)
         sys_unqueuegui(x);
@@ -1594,17 +1600,16 @@ static void text_select(t_gobj *z, t_glist *glist, int state)
     {
         if (glist_istoplevel(glist))
         {
-post("inside text selecting...");
-            sys_vgui(".x%lx.c itemconfigure %sR -stroke %s\n",
-                glist_getcanvas(glist), rtext_gettag(y),
-                (state? "$pd_colors(selection)" : outline));
+            //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));
             if (z->g_pd == gatom_class)
             {
-                sys_vgui(".x%lx.c itemconfigure %lx.l -fill %s\n",
-                    glist_getcanvas(glist), x,
-                    (state? "$pd_colors(selection)" : "$pd_colors(text)"));
+                //sys_vgui(".x%lx.c itemconfigure %lx.l -fill %s\n",
+                //    glist_getcanvas(glist), x,
+                //    (state? "$pd_colors(selection)" : "$pd_colors(text)"));
             }
         }
         if (z->g_pd->c_wb && z->g_pd->c_wb->w_displacefnwtag)
@@ -1614,18 +1619,26 @@ post("inside text selecting...");
             {
                 if (z->g_pd == gatom_class)
                 {
-                    sys_vgui(".x%lx.c addtag selected withtag %lx.l\n",
-                        glist_getcanvas(glist), x);                    
+                    /* Since the label is a child of the parent gobj, we
+                       only need to select the gobj to displace it */
+                    //sys_vgui(".x%lx.c addtag selected withtag %lx.l\n",
+                    //    glist_getcanvas(glist), x);                    
                 }
-                sys_vgui(".x%lx.c addtag selected withtag %sR \n",
-                    glist_getcanvas(glist), rtext_gettag(y));
+                //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));
 
-                if (pd_class(&x->te_pd) == text_class && x->te_type != T_TEXT && glist_istoplevel(glist))
-                    sys_vgui(".x%lx.c itemconfigure %sR -strokewidth 1 -strokedasharray {} "
+                if (pd_class(&x->te_pd) == text_class &&
+                             x->te_type != T_TEXT &&
+                             glist_istoplevel(glist))
+                {
+                    /* Not sure yet what this is doing... */
+                    sys_vgui(".x%lx.c itemconfigure %sR -strokewidth 1 "
+                             "-strokedasharray {} "
                              "-fill $pd_colors(box)\n",
                         glist_getcanvas(glist), rtext_gettag(y));
+                }
 
                 t_object *ob = pd_checkobject(&x->te_pd);
                 int no = obj_noutlets(ob);
@@ -1633,33 +1646,40 @@ post("inside text selecting...");
 
                 for (i = 0; i < no; i++)
                 {
-                    sys_vgui(".x%lx.c addtag selected withtag %so%d \n",
-                                    glist_getcanvas(glist), rtext_gettag(y), i);
+                    /* Not necessary since xlet rect is child of gobj */
+                    //sys_vgui(".x%lx.c addtag selected withtag %so%d \n",
+                    //                glist_getcanvas(glist), rtext_gettag(y), i);
                 }
                 for (i = 0; i < ni; i++)
                 {
-                    sys_vgui(".x%lx.c addtag selected withtag %si%d \n",
-                        glist_getcanvas(glist), rtext_gettag(y), i);
+                    /* Not necessary since xlet rect is child of gobj */
+                    //sys_vgui(".x%lx.c addtag selected withtag %si%d \n",
+                    //    glist_getcanvas(glist), rtext_gettag(y), i);
                 }
             }
             else
             {
                 if (z->g_pd == gatom_class)
                 {
-                    sys_vgui(".x%lx.c dtag %lx.l selected\n",
-                        glist_getcanvas(glist), x);                    
+                    //sys_vgui(".x%lx.c dtag %lx.l selected\n",
+                    //    glist_getcanvas(glist), x);                    
                 }
-                sys_vgui(".x%lx.c dtag %sR selected\n",
-                    glist_getcanvas(glist), rtext_gettag(y));
+                //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)),
                     rtext_gettag(y));
 
-                if (pd_class(&x->te_pd) == text_class && x->te_type != T_TEXT)
-                       sys_vgui(".x%lx.c itemconfigure %sR -strokewidth 2  -strokelinecap projecting -strokedasharray {2 3} "
-                                "-fill %s\n",
+                if (pd_class(&x->te_pd) == text_class &&
+                    x->te_type != T_TEXT)
+                {
+                    /* This might be for broken objects... */
+                    sys_vgui(".x%lx.c itemconfigure %sR -strokewidth 2 "
+                        "-strokelinecap projecting -strokedasharray {2 3} "
+                        "-fill %s\n",
                         glist_getcanvas(glist), 
                         rtext_gettag(y), invalid_fill);
+                }
 
                 t_object *ob = pd_checkobject(&x->te_pd);
                 int no = obj_noutlets(ob);
@@ -1667,13 +1687,13 @@ post("inside text selecting...");
 
                 for (i = 0; i < no; i++)
                 {
-                    sys_vgui(".x%lx.c dtag %so%d selected\n",
-                        glist_getcanvas(glist), rtext_gettag(y), i);
+                    //sys_vgui(".x%lx.c dtag %so%d selected\n",
+                    //    glist_getcanvas(glist), rtext_gettag(y), i);
                 }
                 for (i = 0; i < ni; i++)
                 {
-                    sys_vgui(".x%lx.c dtag %si%d selected\n",
-                        glist_getcanvas(glist), rtext_gettag(y), i);
+                    //sys_vgui(".x%lx.c dtag %si%d selected\n",
+                    //    glist_getcanvas(glist), rtext_gettag(y), i);
                 }
             }
         }
@@ -1789,6 +1809,7 @@ static int text_click(t_gobj *z, struct _glist *glist,
         if (doit)
         {
             //fprintf(stderr,"atom click\n");
+            /* Change the gatom blue when it's clicked? Need to test... */
             sys_vgui(".x%lx.c itemconfigure %s -fill %s\n", canvas, 
                 rtext_gettag(y), "$pd_colors(selection)");
             gatom_click((t_gatom *)x, (t_floatarg)xpix, (t_floatarg)ypix,
@@ -2046,6 +2067,9 @@ void glist_drawiofor_withtag(t_glist *glist, t_object *ob, int firsttime,
         {
             //fprintf(stderr,"drawiofor_withtag o firsttime\n");
             issignal = obj_issignaloutlet(ob,i);
+            /* Hm, I can't seem to find a case where this is needed
+               yet.  All the xlets in nw.js port load and get created
+               correctly without it... */
             sys_vgui(".x%lx.c create prect %d %d %d %d \
                       -fill %s -stroke %s -tags {%so%d %lx outlet}\n",
                 glist_getcanvas(glist), onset, y2 - 2, onset + IOWIDTH, y2,
@@ -2175,9 +2199,9 @@ void text_drawborder(t_text *x, t_glist *glist,
         {
             //fprintf(stderr, "redrawing rectangle? .x%lx.c %sR\n",
             //    (t_int)glist_getcanvas(glist), tag);
-            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);
+            //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);
 /* this seems to be totally extraneous  hans@at.or.at
@@ -2210,11 +2234,11 @@ void text_drawborder(t_text *x, t_glist *glist,
         }
         else
         {
-            sys_vgui(".x%lx.c coords %sR "
-                     "%d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
-                glist_getcanvas(glist), tag,
-                x1, y1,  x2+4, y1,  x2, y1+4,  x2, y2-4,  x2+4, y2,
-                x1, y2,  x1, y1);
+            //sys_vgui(".x%lx.c coords %sR "
+            //         "%d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
+            //    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,
                 x1-x1, y1-y1,  x2+4-x1, y1-y1,  x2-x1, y1+4-y1, x2-x1, y2-4-y1,  x2+4-x1, y2-y1,
@@ -2225,15 +2249,15 @@ void text_drawborder(t_text *x, t_glist *glist,
     {
         if (firsttime)
         {
-            sys_vgui(".x%lx.c create ppolygon "
-                     "%d %d %d %d %d %d %d %d %d %d %d %d "
-                     "-stroke %s "
-                     "-fill $pd_colors(atom_box) "
-                     "-tags {%sR %lx text atom box %s}\n",
-                glist_getcanvas(glist),
-                x1, y1,  x2-4, y1,  x2, y1+4,  x2, y2,  x1, y2,  x1, y1,
-                (selected ? "$pd_colors(selection)" : "$pd_colors(atom_box_border)"),
-                    tag, tag, (selected ? "selected" : ""));
+            //sys_vgui(".x%lx.c create ppolygon "
+            //         "%d %d %d %d %d %d %d %d %d %d %d %d "
+            //         "-stroke %s "
+            //         "-fill $pd_colors(atom_box) "
+            //         "-tags {%sR %lx text atom box %s}\n",
+            //    glist_getcanvas(glist),
+            //    x1, y1,  x2-4, y1,  x2, y1+4,  x2, y2,  x1, y2,  x1, y1,
+            //    (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,
@@ -2272,8 +2296,9 @@ void text_drawborder(t_text *x, t_glist *glist,
         }
         else
         {
-            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);
+            /* Not needed... only the parent gobj group needs to be displaced */
+            //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);
         }
     }
 
@@ -2316,6 +2341,7 @@ void text_drawborder_withtag(t_text *x, t_glist *glist,
         }
         if (firsttime)
         {
+            /* Can't figure out if this is needed... */
             sys_vgui(".x%lx.c create ppolygon %d %d %d %d %d %d %d %d %d %d"
                      "-stroke %s -fill %s -tags {%sR %lx text}\n", 
                 glist_getcanvas(glist),
@@ -2329,6 +2355,7 @@ void text_drawborder_withtag(t_text *x, t_glist *glist,
         msg_draw_const = ((y2-y1)/4);
         if (msg_draw_const > 10) msg_draw_const = 10; /* looks bad if too big */
         if (firsttime)
+            /* Can't figure out if this is needed... */
             sys_vgui(".x%lx.c create ppolygon "
                      "%d %d %d %d %d %d %d %d %d %d %d %d %d %d "
                      "-stroke $pd_colors(msg_border) -fill $pd_colors(msg) "
@@ -2343,6 +2370,7 @@ void text_drawborder_withtag(t_text *x, t_glist *glist,
     {
         atom_draw_const = ((y2-y1)/3);
         if (firsttime)
+            /* Can't figure out where this is needed */
             sys_vgui(".x%lx.c create ppolygon "
                      "%d %d %d %d %d %d %d %d %d %d %d %d "
                      "-stroke $pd_colors(atom_box_border) "
@@ -2391,15 +2419,21 @@ void text_drawborder_withtag(t_text *x, t_glist *glist,
 void glist_eraseiofor(t_glist *glist, t_object *ob, char *tag)
 {
     //fprintf(stderr,"glist_eraseiofor\n");
+    /* This whole function seems unnecessary now... xlets
+       get erased with the parent gobj group */
     int i, n;
     n = obj_noutlets(ob);
     for (i = 0; i < n; i++)
-        sys_vgui(".x%lx.c delete %so%d\n",
-            glist_getcanvas(glist), tag, i);
+    {
+        //sys_vgui(".x%lx.c delete %so%d\n",
+        //    glist_getcanvas(glist), tag, i);
+    }
     n = obj_ninlets(ob);
     for (i = 0; i < n; i++)
-        sys_vgui(".x%lx.c delete %si%d\n",
-            glist_getcanvas(glist), tag, i);
+    {
+        //sys_vgui(".x%lx.c delete %si%d\n",
+        //    glist_getcanvas(glist), tag, i);
+    }
 }
 
 // erase the whole gobj in the gui one go
@@ -2409,12 +2443,14 @@ void text_erase_gobj(t_text *x, t_glist *glist, char *tag)
     gui_vmess("gui_gobj_erase", "ss", canvas_tag(glist_getcanvas(glist)), tag);
 }
 
+/* Another function that's unnecessary... parent gobj group will
+   erase this for us */
 void text_eraseborder(t_text *x, t_glist *glist, char *tag)
 {
     if (x->te_type == T_TEXT && !glist->gl_edit) return;
     //if (!glist_isvisible(glist)) return;
-    sys_vgui(".x%lx.c delete %sR\n",
-        glist_getcanvas(glist), tag);
+    //sys_vgui(".x%lx.c delete %sR\n",
+    //    glist_getcanvas(glist), tag);
     glist_eraseiofor(glist, x, tag);
 }