diff --git a/pd/nw/todo.txt b/pd/nw/todo.txt
index 4a81be8c1cf6ee22f4514906d2063fbb099a421d..05b769dd043b8c800fd5bb63238ded91e0b5020e 100644
--- a/pd/nw/todo.txt
+++ b/pd/nw/todo.txt
@@ -64,49 +64,59 @@ Everything else: (A [x] means we've fixed it)
     tags and appends the word "BASE".  (Maybe use an inner <g> to do this.)
 [x] make mycnv use its own selection logic
 [ ] abstract away appendChild
-[ ] font-size should be set as css property for a class of text, rather than per each gobj in svg
-[ ] remove the "fudge_factor" kludge in g_rtext.c, and handle fonts in a sane manner.  In doing so
-    we must decide whether or not we want to be able to fetch the bounding box of objects from
-    within a Pd patch.  (Currently [canvasinfo] and [objectinfo] are the only objects that can
+[ ] font-size should be set as css property for a class of text, rather than
+    per each gobj in svg
+[ ] remove the "fudge_factor" kludge in g_rtext.c, and handle fonts in a sane
+    manner.  In doing so we must decide whether or not we want to be able to
+    fetch the bounding box of objects from within a Pd patch.
+    (Currently [canvasinfo] and [objectinfo] are the only objects that can
     do this, though there might also be)
 [x] replace things like gui_select_color with css
-[ ] find a better approach to escaping characters for the gui than escape_double_quotes kludge
-    (and handle any other problematic chars)
-[ ] look into using <def> and <use> for scalars.
-[ ] in draw_vis, make circle and ellipse radii attr floats instead of ints
-[ ] should stroke-dasharray values be floats?
-[ ] once garrays are drawn inside a <g> we won't have to individually erase each child of a scalar
+[ ] find a better approach to escaping characters for the gui than
+    escape_double_quotes kludge (and handle any other problematic chars)
+[x] look into using <def> and <use> for scalars. (Looked into it-- doesn't
+    seem necessary or helpful...)
+[x] in draw_vis, make circle and ellipse radii attr floats instead of ints
+[x] should stroke-dasharray values be floats? (Yes.)
+[ ] once garrays are drawn inside a <g> we won't have to individually erase
+    each child of a scalar
 [ ] clean up svg_sendupdate -- put a single gui_vmess at the end
 [ ] svg_sendupdate -- make sure there aren't arbitrary %d's that should actually be %g's
-[ ] svg_sendupdate -- need a gui interface for stuff like stroke-dasharray (and garrays)
-[ ] ibid., for path data, points
+[x] svg_sendupdate -- need a gui interface for stuff like stroke-dasharray
+    (and garrays)
+[x] ibid., for path data, points
 [ ] make pdgui function names more consistent
-[ ] in draw_vis, move tags to front of function call so they don't have to be in an array
-[ ] in draw_vis, remove all the coords logic and let svg_togui do that work.  In svg_new,
-    leverage the "d", "points", etc. methods to do the same.
+[ ] in draw_vis, move tags to front of function call so they don't have to
+    be in an array
+[ ] in draw_vis, remove all the coords logic and let svg_togui do that work.
+    In svg_new, leverage the "d", "points", etc. methods to do the same.
 [ ] remove the draw_vis warning/code about needing 2 points to draw
 [ ] need to clean up dead windows inside patchwin object (on close)
-[ ] make gui_menu_close filename less hacky (currently includes patch args in the middle) 
+[ ] make gui_menu_close filename less hacky (currently includes patch args in
+    the middle) 
 [ ] figure out why -nrt flag causes Pd to bail on the GUI (it wasn't doing this
     on the amd_64 virtual Jessie machine, nor on my 32-bit machine).
 [ ] make dialogs with [yes/no] instead of [cancel/ok]
-[ ] make a gui_mess interface for the edge cases that don't require args (similar to sys_gui)
+[ ] make a gui_mess interface for the edge cases that don't require args
+    (similar to sys_gui)
 [ ] make sure we're breaking down the socket properly from the GUI side on quit
 [ ] looks like nwworkingdir isn't working for open/save dialogs atm
 [ ] nwworkingdir only works on the second file open
 [ ] implement the stuff at the end of saveas_callback (recentfiles et al)
-[ ] make an "export" menu command for max patch saving.  That way we can accept a single extension
-    for saving (.pd), and the native save dialog will warn us on potential file overwrites (even when
-    the user neglects to type an extension).
+[ ] make an "export" menu command for max patch saving.  That way we can accept
+    a single extension for saving (.pd), and the native save dialog will warn
+    us on potential file overwrites (even when the user neglects to type an
+    extension).
 [ ] draw graph inside gobj group
 [ ] merge gui_text_select and gui_text_deselect
 [ ] in function gui_cord_inspector_update, use parameter "moved" to flash text
-[ ] cord_inspector_flash doesn't seem to be deterministic-- if you move among several cords very fast
-    it will try to flash a non-existent svg item.  (Probably want to either make a permanent item in
-    the pdcanvas.html for it, or hard-code a separate div.)
-[ ] for data structure demos, change "" to 'none'
+[ ] cord_inspector_flash doesn't seem to be deterministic-- if you move among
+    several cords very fast it will try to flash a non-existent svg item.
+    (Probably want to either make a permanent item in the pdcanvas.html for it,
+    or hard-code a separate div.)
+[x] for data structure demos, change "" to 'none'
 [ ] fix "Reselect" <ctrl-Enter> Keybinding.  It doesn't work atm because nw.js
-    cannot bind to Enter.
+    cannot bind to Enter. But canvas_events should make this pretty easy.
 [ ] keyup doesn't register autokeypresses, but keyname and key do
 [ ] text_set doesn't work when a numbox is first created (but works otherwise)
 [ ] clean up nw_create_window (doesn't need so many parameters)
@@ -114,12 +124,13 @@ Everything else: (A [x] means we've fixed it)
 [ ] implement the crappy iemgui color dialog presets
 [x] find a simple translation API
 [ ] use underscores for iemgui dialog element names
-[ ] revisit the x_thick logic in g_slider.c.  It thickens the indicator when it's
-    in the middle of the slider, but it's pretty obscure in the current impl.
+[ ] revisit the x_thick logic in g_slider.c.  It thickens the indicator when
+    it's in the middle of the slider, but it's pretty obscure in the current
+    implementation.
 [ ] for as many items as possible, hide them instead of removing from DOM
 [ ] fix iemgui_font so it doesn't use tcl list syntax
-[ ] change all the gui color char[MAXPDSTRING] junk to simple int, and do the conversion to
-    hex html string in the gui
+[ ] change all the gui color char[MAXPDSTRING] junk to simple int, and do the
+    conversion to hex html string in the gui.
 [ ] implement iemgui labels and its ascetic font chooser
 [ ] think about scaling the svg instead of the page, and making the selection
     rectangle a div above that
@@ -127,7 +138,8 @@ Everything else: (A [x] means we've fixed it)
 [ ] in dialog_iemgui.html, use an object to store all the prop/value pairs that
     got sent.  That way we don't have to use all those awful tricks to
     conditionally fill the slots
-[ ] look into the font metrics, see if we can use floating point fonts to simplify things
+[ ] look into the font metrics, see if we can use floating point fonts to
+    simplify things
 [ ] iemgui font configuration -- de-tcl-ize the {fontface fontsize} tcl list,
     then make it work
 [x] do msg box click animation in css
@@ -136,32 +148,20 @@ Everything else: (A [x] means we've fixed it)
 [ ] standardize javascript function names
 [x] in gui_plot_vis, we have to check for gobj existence.  For some reason, at
     very fast drawing rates we end up with two svg elements if we don't check
-    for this.  This would be simplified if gop stuff was just children of parent <group>
+    for this.  This would be simplified if gop stuff was just children of
+    parent <group>
 [x] add garray_update for changing the path coords without having to recreate
     the entire scalar edifice
-[x] when duplicating a large number of iemguis, the label or border will eventually try to append
-    to null.  It looks like it's receiving the correct gui calls from Pd, in the correct order.
-    But for some reason the calls from Pd are getting split in the middle of a string.
-    Not sure why, probably something to do with the hacky parser I wrote to split on newlines.
-    Anyway, when we can just split on semis this problem should hopefully go away.  Make sure to
-    test for it once that happens.
-    Some gui_posts that show the problem-- the string is split between lines 2 and 3:
-    nextCmd is gui_create_toggle ".x98be5e8","x99c0740","#000000",1,0,181,67,192,78,181,78,192,67,179,65;
-    nextCmd is gui_iemgui_label_new ".x98be5e
-    8","x99c0740",17,7,"#000000","","{{DejaVu Sans Mono} -10 normal}";
-    nextCmd is gui_canvas_drawio ".x98be5e8","x99c0740",".x98be5e8.t99c0de0o0",179,79,186,80,179,65,"o",0,0,1;
-    the tag for this XLET is .x98be5e8.t99c0de0o0
-
-    Note: this was a simple problem of partial msgs not being prepended to the next buffer.
-
 [ ] remove gui_text_select_color (css takes care of this)
 [ ] add a canvas message to set a transform on the patchsvg.  Good for:
     * obscure display needs (zooming past the browser limits)
     * rotating for a display
     * transforming or scaling all scalars on a patch at once
-    However: This will require more math on the mousemotion.  So this should probably wait until
+    However: This will require more math on the mousemotion.
+    So this should probably wait until
     moving a lot of the editing code out of C and into the GUI
-[ ] change 'array_element_fill' to 'element_fill', array_outline to 'array_element_outline' 
+[ ] change 'array_element_fill' to 'element_fill', array_outline to
+    'array_element_outline' 
 [ ] either nw_create_window should take fewer parameters or it should take an
     object with name: value pairs
 [ ] getting the sense that glist_isselected should _always_ have
@@ -206,12 +206,13 @@ Everything else: (A [x] means we've fixed it)
 [ ] ds-demos unit-circle node throws an "unexpected string" error when
     trying to open it
 [ ] gui_canvas_getscroll isn't called upon patch load
+
 Crashers
 --------
 
 ***
 
-Differences in Purrd and Pd
+Differences in Purr Data and Pd
 ---------------------------
 
 When editing box content, you cannot currently trigger xlet highlight when