diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/bat-and-ball.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/bat-and-ball.pd
index cf2b63333ad0ad4dcfbe6993d8b860756fb32f84..05b3ea0b178426ba96c29fd2ace4e37a13bb1d7b 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/bat-and-ball.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/bat-and-ball.pd
@@ -1,7 +1,7 @@
 #N struct ball-and-bat float x float y;
 #N canvas 0 19 624 562 10;
 #X obj 132 -12 struct ball-and-bat float x float y;
-#X scalar ball-and-bat -80 40 \;;
+#X scalar ball-and-bat -79 55 \;;
 #X obj 132 9 route displace;
 #X obj 132 30 unpack p f;
 #X obj 189 82 t a b;
@@ -35,10 +35,10 @@ c -11.9306 -11.9304 -20.8335 -27.0833 -29.1667 -35.4167 -4.16667 -4.16666
 #X obj 432 36 * 180;
 #X obj 432 57 / 3.14;
 #X floatatom 432 78 5 0 0 0 - - -, f 5;
-#X msg 260 336 stroke-width 2 \, stroke black \, fill "";
-#X msg -45 325 stroke-dasharray 5 5 \, stroke black \, fill "";
+#X msg 260 336 stroke-width 2 \, stroke black \, fill none;
 #X msg -45 388 transform translate 590 -1800 rotate 32.67 65 1010 scale
-2 \, stroke black \, fill "";
+2 \, stroke black \, fill none;
+#X msg -45 325 stroke-dasharray 5 5 \, stroke black \, fill none;
 #X connect 0 0 2 0;
 #X connect 2 0 3 0;
 #X connect 3 1 19 0;
@@ -55,17 +55,17 @@ c -11.9306 -11.9304 -20.8335 -27.0833 -29.1667 -35.4167 -4.16667 -4.16666
 #X connect 11 0 23 0;
 #X connect 12 0 11 0;
 #X connect 13 0 16 0;
-#X connect 15 0 30 0;
+#X connect 15 0 31 0;
 #X connect 16 0 17 0;
 #X connect 17 0 11 0;
 #X connect 18 0 13 0;
 #X connect 19 1 4 0;
-#X connect 21 0 31 0;
+#X connect 21 0 30 0;
 #X connect 22 0 29 0;
 #X connect 23 0 14 0;
 #X connect 25 0 26 0;
 #X connect 26 0 27 0;
 #X connect 27 0 28 0;
 #X connect 29 0 14 0;
-#X connect 30 0 24 0;
-#X connect 31 0 20 0;
+#X connect 30 0 20 0;
+#X connect 31 0 24 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/bulbs.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/bulbs.pd
index dfdebc7f92db5ac01c7fab0ac38ecd7bb5bce22f..ae95c888e91db3d9c735bdbea6cd5462ab9dca83 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/bulbs.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/bulbs.pd
@@ -37,7 +37,7 @@ a float s;
 #X connect 0 0 20 0;
 #X connect 20 0 1 0;
 #X restore 87 128 group;
-#X msg 88 108 transform scale 0.5 \, fill "" \, stroke black;
+#X msg 88 108 transform scale 0.5 \, fill none \, stroke black;
 #X connect 0 0 4 0;
 #X connect 2 0 1 0;
 #X connect 4 0 3 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/curve-bbox.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/curve-bbox.pd
index 25f85ea9e8f9e44020b7bb5ffd0a1c2c86bdebcf..70597c7670d7537977e426dafb4a109be1ef1459 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/curve-bbox.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/curve-bbox.pd
@@ -1,7 +1,7 @@
 #N struct curvebbox float x float y;
-#N canvas -9 19 619 300 10;
+#N canvas 0 19 619 300 10;
 #X obj 151 34 struct curvebbox float x float y;
-#X scalar curvebbox 47 43 \;;
+#X scalar curvebbox 71 53 \;;
 #X text 197 181 Short demo showing that Pd should find the correct
 bounding box for a transformed scalar in edit-mode.;
 #X text 197 221 Unfortunately it doesn't quite get it right for curves.
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/curver.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/curver.pd
index 04c4a99a199053d9a5d1536a62b1c3edf74829d9..4551908575e35ebf316010875587d12e7a00fa51 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/curver.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/curver.pd
@@ -1,6 +1,6 @@
 #N struct rcurver float x float y float x1 float y1 float ax float
 ay float bx float by float zx float zy float r float g float b;
-#N canvas -9 19 813 626 10;
+#N canvas 0 19 813 626 10;
 #X obj 92 401 cnv 15 461 213 empty empty empty 20 12 0 14 -33289 -66577
 0;
 #X scalar rcurver 150 439 42 137 -18 141 29 -3 -29 -2 255 40 100 \;
@@ -42,8 +42,6 @@ would like it for some but not all of them. Or you may want some other
 behavior than dragging a vertice of the polygon underneath the mouse.
 At present you can't define any other behavior-- only turn off mouse
 interaction altogether.;
-#X msg 95 90 stroke-width 4 \, stroke-linecap 1 \, stroke r g b \,
-fill "";
 #X msg 16 203 fill white \, mousedown 1 \, drag 1;
 #X obj 95 249 drag-event rcurver x1 y1;
 #X text 465 24 Note: this can be improved with a set method for [set]:the
@@ -51,16 +49,18 @@ fill "";
 #X obj 95 289 drag-event rcurver ax ay;
 #X obj 95 329 drag-event rcurver bx by;
 #X obj 95 373 drag-event rcurver zx zy;
-#X connect 2 0 22 0;
+#X msg 95 90 stroke-width 4 \, stroke-linecap 1 \, stroke r g b \,
+fill none;
+#X connect 2 0 28 0;
 #X connect 5 0 4 0;
 #X connect 6 0 5 0;
-#X connect 11 0 24 0;
-#X connect 12 0 26 0;
-#X connect 13 0 27 0;
-#X connect 14 0 28 0;
-#X connect 15 0 23 0;
-#X connect 22 0 3 0;
-#X connect 23 0 11 0;
-#X connect 23 0 12 0;
-#X connect 23 0 13 0;
-#X connect 23 0 14 0;
+#X connect 11 0 23 0;
+#X connect 12 0 25 0;
+#X connect 13 0 26 0;
+#X connect 14 0 27 0;
+#X connect 15 0 22 0;
+#X connect 22 0 11 0;
+#X connect 22 0 12 0;
+#X connect 22 0 13 0;
+#X connect 22 0 14 0;
+#X connect 28 0 3 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/yin-yang.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/yin-yang.pd
index 99436b795b2c59405beab8075eb01dab0d3da7c3..ecee156f0102d4699abf8c38994a447ef3cbc68a 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/yin-yang.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/yin-yang.pd
@@ -31,12 +31,9 @@
 #X obj 291 503 set yin-yang yin yang;
 #X msg 89 313 dsp \$1;
 #X obj 89 334 s pd;
-#X msg 151 560 transform scale 0.3 skewx \$2 skewy \$2 rotate \$1 233
-233;
 #X obj 194 508 loadbang;
 #X msg 194 529 0 0;
 #X obj 150 460 * 180;
-#X obj 194 460 * 0.4;
 #X obj 74 353 phasor~ 0.3;
 #N canvas 639 282 450 300 (subpatch) 0;
 #X obj 78 -41 draw circle 233 233 231;
@@ -66,9 +63,12 @@
 #X connect 13 0 6 0;
 #X connect 14 0 8 0;
 #X restore 151 581 group;
-#X scalar yin-yang 96 94 146.137 108.863 \;;
-#X scalar yin-yang 314 96 0 255 \;;
+#X scalar yin-yang 114 127 188.603 66.3972 \;;
+#X scalar yin-yang 315 136 0 255 \;;
 #X msg 383 412 traverse pd-yin-yang.pd \, next;
+#X obj 194 460 * 45;
+#X msg 151 560 transform scale 0.3 skewx \$2 skewy \$2 rotate \$1 233
+233;
 #X connect 0 0 26 2;
 #X connect 1 0 0 0;
 #X connect 2 0 26 0;
@@ -93,15 +93,15 @@
 #X connect 18 0 17 1;
 #X connect 19 0 8 0;
 #X connect 20 0 5 0;
-#X connect 21 0 32 0;
-#X connect 21 1 33 0;
-#X connect 22 0 29 0;
-#X connect 24 0 38 0;
+#X connect 21 0 31 0;
+#X connect 21 1 37 0;
+#X connect 22 0 38 0;
+#X connect 24 0 36 0;
 #X connect 27 0 28 0;
-#X connect 29 0 35 0;
-#X connect 30 0 31 0;
-#X connect 31 0 29 0;
-#X connect 32 0 22 0;
-#X connect 33 0 22 1;
-#X connect 34 0 10 0;
-#X connect 38 0 0 0;
+#X connect 29 0 30 0;
+#X connect 30 0 38 0;
+#X connect 31 0 22 0;
+#X connect 32 0 10 0;
+#X connect 36 0 0 0;
+#X connect 37 0 22 1;
+#X connect 38 0 33 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd
index 437aa136ed2388bdce7b9d006ec187b2797d91f9..c0b73d33d8961e051adc6e470feff9491dba4018 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd
@@ -2,63 +2,63 @@
 #N canvas 0 19 565 491 10;
 #X scalar foo 96 105 \;;
 #N canvas 429 132 808 465 welcome-animation 0;
-#X obj 877 107 bng 54 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 877 235 f;
-#X obj 917 236 + 1;
-#X obj 877 166 t b a;
-#X msg 894 193 0;
-#X obj 837 542 send;
-#X obj 1004 338 list prepend \$0;
-#X msg 1004 359 symbol \$1-\$2;
-#X obj 877 256 moses 8;
-#X msg 837 515 \$1 0;
-#X obj 837 494 line;
-#X obj 953 380 -;
-#X obj 877 296 t b a;
-#X obj 861 446 f;
-#X obj 837 378 f;
-#X obj 953 338 * 0.19;
-#X msg 953 359 2.4 \$1;
-#X obj 1177 107 bng 54 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 1177 235 f;
-#X msg 1194 193 0;
-#X obj 1177 402 send;
-#X obj 1274 338 list prepend \$0;
-#X msg 1274 359 symbol \$1-\$2;
-#X obj 1177 256 moses 8;
-#X obj 1177 354 line;
-#X obj 1177 296 t b a;
-#X msg 1177 375 1 \$1;
-#X obj 1217 236 + 2;
-#X obj 1397 248 f;
-#X obj 1397 196 t b a;
-#X obj 1397 413 send;
-#X obj 1484 351 list prepend \$0;
-#X msg 1484 372 symbol \$1-\$2;
-#X obj 1397 269 moses 8;
-#X obj 1397 371 line;
-#X obj 1397 309 t b a;
-#X msg 1397 392 1 \$1;
-#X obj 1437 249 + 2;
-#X msg 1414 223 1;
-#X msg 996 128 bang;
-#X obj 1177 166 t b a b;
-#X obj 1036 103 loadbang;
-#X obj 1036 124 del 500;
-#X obj 996 107 inlet;
-#X obj 877 338 del 190;
-#X msg 837 400 1 \, \$1 190;
-#X msg 853 472 \$1 \, 1 190;
-#X obj 800 281 delay 191;
-#X obj 1320 294 delay 751;
-#X obj 1100 281 delay 751;
-#X obj 996 154 del 449;
-#X obj 1324 173 del 350;
-#X obj 811 196 s \$0-wow;
-#X msg 1177 332 0 \, 360 750;
-#X msg 1397 350 0 \, 360 750;
+#X obj 147 7 bng 54 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 147 135 f;
+#X obj 187 136 + 1;
+#X obj 147 66 t b a;
+#X msg 164 93 0;
+#X obj 107 442 send;
+#X obj 274 238 list prepend \$0;
+#X msg 274 259 symbol \$1-\$2;
+#X obj 147 156 moses 8;
+#X msg 107 415 \$1 0;
+#X obj 107 394 line;
+#X obj 223 280 -;
+#X obj 147 196 t b a;
+#X obj 131 346 f;
+#X obj 107 278 f;
+#X obj 223 238 * 0.19;
+#X msg 223 259 2.4 \$1;
+#X obj 447 7 bng 54 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 447 135 f;
+#X msg 464 93 0;
+#X obj 447 302 send;
+#X obj 544 238 list prepend \$0;
+#X msg 544 259 symbol \$1-\$2;
+#X obj 447 156 moses 8;
+#X obj 447 254 line;
+#X obj 447 196 t b a;
+#X msg 447 275 1 \$1;
+#X obj 487 136 + 2;
+#X obj 667 148 f;
+#X obj 667 96 t b a;
+#X obj 667 313 send;
+#X obj 754 251 list prepend \$0;
+#X msg 754 272 symbol \$1-\$2;
+#X obj 667 169 moses 8;
+#X obj 667 271 line;
+#X obj 667 209 t b a;
+#X msg 667 292 1 \$1;
+#X obj 707 149 + 2;
+#X msg 684 123 1;
+#X msg 266 28 bang;
+#X obj 447 66 t b a b;
+#X obj 306 3 loadbang;
+#X obj 306 24 del 500;
+#X obj 266 7 inlet;
+#X obj 147 238 del 190;
+#X msg 107 300 1 \, \$1 190;
+#X msg 123 372 \$1 \, 1 190;
+#X obj 70 181 delay 191;
+#X obj 590 194 delay 751;
+#X obj 370 181 delay 751;
+#X obj 266 54 del 449;
+#X obj 594 73 del 350;
+#X obj 81 96 s \$0-wow;
+#X msg 447 232 0 \, 360 750;
+#X msg 667 250 0 \, 360 750;
 #X connect 0 0 3 0;
 #X connect 1 0 2 0;
 #X connect 1 0 8 0;
@@ -135,7 +135,7 @@
 #X obj 189 4 loadbang;
 #N canvas 433 184 450 300 welcome-text 0;
 #N canvas 71 237 450 300 w 0;
-#X obj 40 215 draw path m 93.8047 87.029 c 0 1.17187 0.859375 2.05078
+#X obj 40 135 draw path m 93.8047 87.029 c 0 1.17187 0.859375 2.05078
 0.859375 3.20312 0 0.976561 -0.488281 1.66016 -0.683593 2.46094 l -0.78125
 2.40234 c -0.292969 0.839843 -0.9375 1.15234 -0.9375 2.12891 -0.136719
 0.234375 -0.976563 1.19141 -1.09375 1.38672 -0.332031 0.546874 -0.605469
@@ -215,15 +215,15 @@ c 0 -0.0976 0.87891 -1.11328 0.95704 -1.24999 0.52734 -1.01562 0.52734
 0 -0.800782 0.156251 -0.800782 0.703125 0 1.05469 1.85547 0.546876
 2.14844 1.19141 0.273437 0.703125 0.3125 1.48438 0.605469 2.24609 l
 0.410156 0.761719 0.976562 2.75391 0 0.117188;
-#X obj 39 103 loadbang;
-#X obj 121 130 pack;
-#X floatatom 121 95 5 0 0 0 - - -, f 5;
-#X floatatom 178 95 5 0 0 0 - - -, f 5;
-#X obj 178 114 t b a;
-#X msg 40 184 transform scale \$1 translate -100 -100 rotate \$2 96
+#X obj 39 23 loadbang;
+#X obj 121 50 pack;
+#X floatatom 121 15 5 0 0 0 - - -, f 5;
+#X floatatom 178 15 5 0 0 0 - - -, f 5;
+#X obj 178 34 t b a;
+#X msg 40 104 transform scale \$1 translate -100 -100 rotate \$2 96
 93;
-#X msg 39 132 1 0;
-#X obj 72 132 r \$0-0;
+#X msg 39 52 1 0;
+#X obj 72 52 r \$0-0;
 #X connect 1 0 7 0;
 #X connect 2 0 6 0;
 #X connect 3 0 2 0;
@@ -233,7 +233,7 @@ c 0 -0.0976 0.87891 -1.11328 0.95704 -1.24999 0.52734 -1.01562 0.52734
 #X connect 6 0 0 0;
 #X connect 7 0 6 0;
 #X connect 8 0 6 0;
-#X restore 37 -43 group w;
+#X restore 37 17 group w;
 #N canvas 433 184 450 300 e 0;
 #X obj 45 146 draw path m 113.062 98.0641 c 0.27344 0.781249 0.23438
 1.52344 0.46875 2.22656 1.38672 3.92578 3.98438 6.5625 8.33984 6.5625
@@ -281,7 +281,7 @@ c 0.0977 0 0.41016 -0.175782 0.44922 -0.175782 0.39063 0 0.70313 0.371094
 #X connect 6 0 7 0;
 #X connect 7 0 0 0;
 #X connect 8 0 7 0;
-#X restore 37 -23 group e;
+#X restore 37 37 group e;
 #N canvas 433 184 450 300 l 0;
 #X obj 40 175 draw path m 132.32 106.658 c 0.60547 0 1.32813 0.0977
 1.9336 0.15625 0.97656 -0.0195 1.54297 -0.25391 2.69531 -0.29297 0.0391
@@ -338,7 +338,7 @@ l 0.0586 -1.34766 -0.0195 -1.01562 c 0 -0.624999 0.0195 -1.26953 0.23438
 #X connect 6 0 7 0;
 #X connect 7 0 0 0;
 #X connect 8 0 7 0;
-#X restore 37 -3 group l;
+#X restore 37 57 group l;
 #N canvas 433 184 450 300 c 0;
 #X obj 26 127 draw path m 148.922 106.521 0.35157 0.29297 0.60547 0
 c 2.77343 0 5.9375 -1.3086 6.8164 -4.25782 l 0 -0.23437 c 0 -0.42969
@@ -381,7 +381,7 @@ C 146.793 100.291 146.5 99.8024 146.5 98.611 l 0 -0.546875 -0.17578
 #X connect 6 0 7 0;
 #X connect 7 0 0 0;
 #X connect 8 0 7 0;
-#X restore 37 17 group c;
+#X restore 37 77 group c;
 #N canvas 433 184 450 300 o 0;
 #X obj 56 165 draw path m 159.449 98.0055 0.15625 1.52344 c 0 1.01562
 0.68359 1.71875 1.15234 2.55859 0.27344 0.3711 0.58594 0.78125 0.87891
@@ -436,7 +436,7 @@ l -0.74219 -0.70313 c -0.50781 -0.64453 -1.05469 -1.67968 -1.25 -2.53906
 #X connect 6 0 7 0;
 #X connect 7 0 0 0;
 #X connect 8 0 7 0;
-#X restore 37 37 group o;
+#X restore 37 97 group o;
 #N canvas 433 184 450 300 m 0;
 #X obj 45 118 draw path m 180.895 105.779 c 0 0.29297 0.0195 0.60547
 0.19531 0.74219 0.0977 0.0391 0.44922 0.0391 0.50782 0.0977 0.0781
@@ -540,7 +540,7 @@ c -0.3125 0.605468 -0.33203 1.21094 -0.33203 1.83594 l 0 1.36719 -0.0781
 #X connect 6 0 7 0;
 #X connect 7 0 0 0;
 #X connect 8 0 7 0;
-#X restore 37 57 group m;
+#X restore 37 117 group m;
 #N canvas 433 184 450 300 e 0;
 #X obj 43 136 draw path m 211.734 98.0641 c 0.27344 0.781249 0.23438
 1.52344 0.46875 2.22656 1.38672 3.92578 3.98438 6.5625 8.33985 6.5625
@@ -588,7 +588,7 @@ c -0.21485 -0.05859 -0.41016 -0.9375 -0.41016 -1.21094;
 #X connect 6 0 7 0;
 #X connect 7 0 0 0;
 #X connect 8 0 7 0;
-#X restore 37 77 group e;
+#X restore 37 137 group e;
 #N canvas 433 184 450 300 exclamation-point 0;
 #X obj 39 178 draw path m 232.496 104.724 c 0 0.0781 0 0.41016 0 0.41016
 0.0586 0.17578 0.46875 0.9375 0.56641 1.11328 0.13672 0.19531 0.50781
@@ -630,11 +630,11 @@ c -0.21485 -0.05859 -0.41016 -0.9375 -0.41016 -1.21094;
 #X connect 6 0 7 0;
 #X connect 7 0 0 0;
 #X connect 8 0 7 0;
-#X restore 37 97 group exclamation-point;
+#X restore 37 157 group exclamation-point;
 #X restore 189 66 group welcome-text;
 #X msg 189 37 fill black;
 #X msg 311 35 stroke-dasharray 10 4 \, stroke-width 4 \, stroke gray
-\, fill "";
+\, fill none;
 #X connect 2 0 5 0;
 #X connect 2 0 4 0;
 #X connect 4 0 3 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd
index c448a1bdaa00ca416ba0ed23ed89dd659ba64fe4..53b4e7c82f6e5b749da1f2b1bea1d1a7ae2ea043 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd
@@ -33,7 +33,7 @@ bounding box (i.e. \, the selection rectangle that appears when you
 select it in edit-mode.;
 #X obj 343 129 draw rect 0 0 60 60;
 #X obj 343 221 draw circle 30 120 25;
-#X msg 343 178 stroke-width 20 \, stroke black \, fill "";
+#X msg 343 178 stroke-width 20 \, stroke black \, fill none;
 #X connect 4 0 5 0;
 #X connect 5 0 23 0;
 #X connect 15 0 14 0;