From 8e40348a8650031a342abed496652447d021121d Mon Sep 17 00:00:00 2001
From: Ivica Ico Bukvic <ico@vt.edu>
Date: Wed, 20 Aug 2014 10:23:42 -0400
Subject: [PATCH] *updated ds demos

---
 .../pd-l2ork/ds-demos/arcs.pd                 | 400 +++++++++++++++---
 .../pd-l2ork/ds-demos/australia.pd            |  80 ++--
 .../pd-l2ork/ds-demos/bat-and-ball.pd         |  58 +--
 .../pd-l2ork/ds-demos/bulbs.pd                | 159 ++-----
 .../pd-l2ork/ds-demos/circlehand.pd           |  36 +-
 .../pd-l2ork/ds-demos/clock.pd                |  35 +-
 .../pd-l2ork/ds-demos/curver.pd               |  53 +--
 .../pd-l2ork/ds-demos/ellipses.pd             |  36 +-
 .../pd-l2ork/ds-demos/fillrule.pd             |  44 +-
 .../pd-l2ork/ds-demos/lines.pd                |  26 +-
 .../pd-l2ork/ds-demos/megaman.pd              |   6 +-
 .../pd-l2ork/ds-demos/notes.pd                | 127 +++---
 .../pd-l2ork/ds-demos/objects.pd              |  26 +-
 .../pd-l2ork/ds-demos/omgponies.pd            |   4 +-
 .../pd-l2ork/ds-demos/pieslice.pd             |  68 +--
 .../pd-l2ork/ds-demos/polar-clock.pd          |  32 +-
 .../pd-l2ork/ds-demos/quick-graph.pd          |   2 +-
 .../pd-l2ork/ds-demos/randolines.pd           |   4 +-
 .../pd-l2ork/ds-demos/raphael-animation.pd    |  40 +-
 .../pd-l2ork/ds-demos/spin-spin-spin.pd       |  20 +-
 .../pd-l2ork/ds-demos/splines.pd              |  98 +++--
 .../pd-l2ork/ds-demos/stroke-dasharray.pd     |  66 ++-
 .../pd-l2ork/ds-demos/tiger.pd                | 273 +++++++++---
 .../pd-l2ork/ds-demos/unit-circle.pd          | 326 +++++++-------
 .../pd-l2ork/ds-demos/violin.pd               | 137 +++---
 .../pd-l2ork/ds-demos/yin-yang.pd             |   6 +-
 26 files changed, 1331 insertions(+), 831 deletions(-)

diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/arcs.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/arcs.pd
index 41e02c965..8e47daec0 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/arcs.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/arcs.pd
@@ -1,75 +1,347 @@
 #N struct arcs float x float y;
-#N canvas 0 19 730 520 10;
-#N canvas 585 77 781 562 arcs 0;
-#X obj 110 33 struct arcs float x float y;
-#X obj 48 119 draw path M 20 350 l 50 -25 a 25 25 -30 0 1 50 -25 l
+#N canvas 0 19 730 583 10;
+#N canvas 497 68 781 562 arcs 0;
+#X obj 110 13 struct arcs float x float y;
+#X obj 48 109 draw path M 20 350 l 50 -25 a 25 25 -30 0 1 50 -25 l
 50 -25 a 25 50 -30 0 1 50 -25 l 50 -25 a 25 75 -30 0 1 50 -25 l 50
 -25 a 25 100 -30 0 1 50 -25 l 50 -25;
-#X obj 48 79 loadbang;
-#X msg 48 99 stroke red \, stroke-width 2;
-#X obj 48 205 draw path M 30 350 h 100 a 25 200 0 0 1 50 0 h 60;
-#X obj 48 165 loadbang;
-#X msg 48 185 stroke blue \, stroke-width 2;
-#X obj 48 225 loadbang;
-#X msg 48 245 fill yellow \, stroke-width 2;
-#X obj 48 265 draw path M 100 100 a 25 25 -30 0 1 50 -25 z;
-#X obj 48 285 loadbang;
-#X msg 48 305 fill yellow \, stroke-width 2;
-#X obj 48 325 draw path M 180 100 a 25 25 30 0 1 50 25 z;
-#X obj 48 345 loadbang;
-#X msg 48 365 stroke-width 2;
-#X obj 48 385 draw path M 0 0 A 40 40 0 1 1 0 80 A 40 40 0 1 1 0 0
+#X obj 48 49 loadbang;
+#X obj 48 215 draw path M 30 350 h 100 a 25 200 0 0 1 50 0 h 60;
+#X obj 48 155 loadbang;
+#X obj 48 235 loadbang;
+#X obj 48 295 draw path M 100 100 a 25 25 -30 0 1 50 -25 z;
+#X obj 48 315 loadbang;
+#X obj 48 375 draw path M 180 100 a 25 25 30 0 1 50 25 z;
+#X obj 48 395 loadbang;
+#X obj 48 455 draw path M 0 0 A 40 40 0 1 1 0 80 A 40 40 0 1 1 0 0
 Z;
-#X obj 48 405 loadbang;
-#X msg 48 425 stroke red;
-#X obj 48 445 draw path M 0 -10 A 50 50 0 1 1 6 90;
-#X obj 438 79 loadbang;
-#X msg 438 100 stroke red;
-#X obj 438 121 draw path M 0 -10 v -6 v 12;
-#X obj 438 142 loadbang;
-#X msg 438 163 stroke red;
-#X obj 438 184 draw path M 6 90 l 6 -6 M 6 90 l 6 6;
-#X obj 438 205 loadbang;
-#X msg 438 226 stroke red;
-#X obj 438 247 draw path M 0 90 A 50 50 0 1 1 -6 -10;
-#X obj 438 268 loadbang;
-#X msg 438 289 stroke red;
-#X obj 438 310 draw path M 0 90 v -6 v 12;
-#X obj 438 331 loadbang;
-#X msg 438 352 stroke red;
-#X obj 438 373 draw path M -6 -10 l -6 -6 M -6 -10 l -6 6;
-#X obj 438 394 loadbang;
-#X obj 438 456 draw path M 0 -10 a 20 10 0 1 1 0 20 a 20 10 0 1 1 0
+#X obj 438 112 loadbang;
+#X obj 438 218 loadbang;
+#X obj 438 327 loadbang;
+#X obj 438 405 draw path M 0 -10 a 20 10 0 1 1 0 20 a 20 10 0 1 1 0
 -20 Z;
-#X msg 438 415 stroke purple \, transform matrix 2.82843 -2.82843 2.82843
-2.82843 200 200;
+#X obj 58 89 r four-arcs;
+#X obj 58 195 r arc;
+#X obj 58 275 r yellow-arc1;
+#X obj 58 355 r yellow-arc2;
+#X obj 58 435 r arc-circle;
+#X obj 448 383 r purple-arc;
+#X obj 438 174 draw path M 0 -10 A 50 50 0 1 1 6 90 M 0 -10 v -6 v
+12 M 6 90 l 6 -6 M 6 90 l 6 6;
+#X obj 448 152 r arrow-right;
+#X obj 438 280 draw path M 0 90 v -6 v 12 M 0 90 A 50 50 0 1 1 -6 -10
+M -6 -10 l -6 -6 M -6 -10 l -6 6;
+#X obj 448 260 r arrow-left;
+#X msg 48 69 stroke red \, stroke-width 2 \, fill "";
+#X msg 48 175 stroke blue \, stroke-width 2 \, fill "";
+#X msg 438 133 stroke red \, fill "";
+#X msg 438 239 stroke red \, fill "";
+#X msg 438 349 stroke purple \, fill "" \, transform matrix 2.82843
+-2.82843 2.82843 2.82843 200 200;
+#X msg 48 415 stroke-width 2 \, stroke black \, fill "";
+#X msg 48 255 fill yellow \, stroke-width 2 \, stroke black;
+#X msg 48 335 fill yellow \, stroke-width 2 \, stroke black;
+#X connect 2 0 25 0;
+#X connect 4 0 26 0;
+#X connect 5 0 31 0;
+#X connect 7 0 32 0;
+#X connect 9 0 30 0;
+#X connect 11 0 27 0;
+#X connect 12 0 28 0;
+#X connect 13 0 29 0;
+#X connect 15 0 1 0;
+#X connect 16 0 3 0;
+#X connect 17 0 6 0;
+#X connect 18 0 8 0;
+#X connect 19 0 10 0;
+#X connect 20 0 14 0;
+#X connect 22 0 21 0;
+#X connect 24 0 23 0;
+#X connect 25 0 1 0;
+#X connect 26 0 3 0;
+#X connect 27 0 21 0;
+#X connect 28 0 23 0;
+#X connect 29 0 14 0;
+#X connect 30 0 10 0;
+#X connect 31 0 6 0;
+#X connect 32 0 8 0;
+#X restore 177 100 pd arcs;
+#X scalar arcs 148 150 \;;
+#X obj 248 100 pddp/pddplink http://tclbitprint.sourceforge.net/tkpath/quartz/
+;
+#X text 247 71 This is a port of the tkpath demo on arcs. You can see
+the original tkpath screenshot here:;
+#X obj 97 77 output~;
+#N canvas 56 233 567 385 animation-and-dsp 0;
+#X obj 72 221 osc~;
+#N canvas 433 184 450 300 rocket~ 0;
+#X obj 106 -9 line;
+#X msg 162 82 transform translate 0 \$1;
+#X obj 162 103 s arc;
+#X msg 106 -230 0 \, 1 3000;
+#X obj 106 12 pow 2;
+#X obj 106 33 * -300;
+#X obj 162 -184 b;
+#X obj 230 -2 *~;
+#X obj 230 -102 line~;
+#X obj 230 -184 bang;
+#X msg 193 -132 0 40;
+#X obj 275 -82 noise~;
+#X obj 275 -48 samphold~;
+#X obj 331 -71 phasor~;
+#X obj 331 -134 line~;
+#X msg 230 -132 1 30;
+#X msg 331 -156 0 \, 1 3000;
+#X obj 331 -92 +~ 300;
+#X obj 331 -113 *~ 150;
+#X obj 275 -27 lop~ 1000;
+#X msg 162 -132 0;
+#X obj 390 103 outlet~;
+#X obj 106 -253 inlet;
+#X obj 162 -163 del 5000;
+#X obj 230 29 *~ 0.2;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 0 0;
+#X connect 3 0 6 0;
+#X connect 3 0 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 23 0;
+#X connect 7 0 24 0;
+#X connect 8 0 7 0;
+#X connect 9 0 15 0;
+#X connect 9 0 16 0;
+#X connect 10 0 8 0;
+#X connect 11 0 12 0;
+#X connect 12 0 19 0;
+#X connect 13 0 12 1;
+#X connect 14 0 18 0;
+#X connect 15 0 8 0;
+#X connect 16 0 14 0;
+#X connect 17 0 13 0;
+#X connect 18 0 17 0;
+#X connect 19 0 7 1;
+#X connect 20 0 1 0;
+#X connect 22 0 3 0;
+#X connect 23 0 20 0;
+#X connect 23 0 10 0;
+#X connect 24 0 21 0;
+#X restore 509 155 pd rocket~;
+#X obj 72 269 +~;
+#X obj 72 290 outlet~;
+#N canvas 433 184 450 300 yellow-arc1 0;
+#X obj 167 -30 inlet;
+#X obj 167 76 s yellow-arc1;
+#X obj 167 34 line;
+#X msg 167 53 transform rotate \$1 120 80;
+#X msg 167 3 0 \, 360 500;
+#X obj 69 149 sig~;
+#X msg 69 53 800;
+#X msg 81 98 600;
+#X msg 116 119 0;
+#X obj 116 53 b;
+#X obj 116 76 del 150;
+#X obj 116 98 del 250;
+#X obj 69 170 outlet~;
+#X connect 0 0 4 0;
 #X connect 2 0 3 0;
 #X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 0 6 0;
+#X connect 4 0 9 0;
+#X connect 5 0 12 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 10 0 7 0;
+#X connect 10 0 11 0;
+#X connect 11 0 8 0;
+#X restore 158 155 pd yellow-arc1;
+#N canvas 433 184 473 300 purple-arc 0;
+#X obj 175 -31 line;
+#X obj 175 25 s purple-arc;
+#X msg 175 -10 stroke purple \, transform matrix \$1 -2.82843 2.82843
+\$1 200 200;
+#X msg 175 -64 13 \, 2.82843 1000;
+#X obj 78 0 line~;
+#X obj 78 51 mtof~;
+#X obj 129 16 b;
+#X msg 156 65 0;
+#X obj 78 21 +~ 80;
+#X obj 78 72 *~;
+#X msg 129 46 1;
+#X obj 156 46 del 1100;
+#X obj 175 -87 inlet;
+#X obj 78 93 outlet~;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 8 0;
+#X connect 5 0 9 0;
+#X connect 6 0 10 0;
+#X connect 6 0 11 0;
+#X connect 7 0 9 1;
+#X connect 8 0 5 0;
+#X connect 9 0 13 0;
+#X connect 10 0 9 1;
+#X connect 11 0 7 0;
+#X connect 12 0 3 0;
+#X restore 72 155 pd purple-arc;
+#N canvas 433 184 450 300 four-arcs 0;
+#X obj 309 123 s four-arcs;
+#X obj 309 77 line;
+#X msg 309 100 stroke-dasharray \$1 1000;
+#X msg 309 44 0 \, 1000 2000;
+#X obj 150 126 osc~ 2;
+#X obj 150 177 +~ 770;
+#X obj 150 154 *~;
+#X obj 194 126 line~;
+#X obj 267 125 b;
+#X obj 267 156 del 2000;
+#X msg 267 177 0;
+#X obj 150 237 *~;
+#X msg 236 156 1;
+#X msg 194 77 12 \, 600 2000;
+#X msg 161 103 0.59;
+#X obj 309 19 inlet;
+#X obj 150 258 outlet~;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 3 0 13 0;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 5 0 11 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 1;
+#X connect 8 0 9 0;
+#X connect 8 0 12 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 1;
+#X connect 11 0 16 0;
+#X connect 12 0 11 1;
+#X connect 13 0 7 0;
+#X connect 13 0 14 0;
+#X connect 14 0 4 1;
+#X connect 15 0 3 0;
+#X restore 250 155 pd four-arcs;
+#N canvas 815 273 450 300 yellow-arc2 0;
+#X obj 113 190 line;
+#X msg 113 211 transform rotate \$1 120 80;
+#X obj 113 232 s yellow-arc2;
+#X msg 113 -21 0 \, 360 1500;
+#X obj 136 31 line~;
+#X obj 136 52 cos~;
+#X obj 136 94 +~ 760;
+#X obj 136 73 *~ 360;
+#X msg 273 76 0;
+#X obj 136 135 *~;
+#X msg 241 34 1;
+#X obj 273 34 b;
+#X obj 273 55 del 1500;
+#X obj 113 -42 inlet;
+#X obj 136 156 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 3 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 0 10 0;
+#X connect 3 0 11 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 10 0 9 1;
+#X connect 11 0 12 0;
+#X connect 12 0 8 0;
+#X connect 13 0 3 0;
+#X restore 330 155 pd yellow-arc2;
+#N canvas 886 298 450 300 arc-circle 0;
+#X obj 194 143 s arc-circle;
+#X obj 194 101 line;
+#X msg 194 122 stroke-dasharray \$1 500;
+#X obj 221 -4 line;
+#X obj 221 48 s arrow-right;
+#X msg 221 17 transform rotate \$1 0 40;
+#X obj 312 48 s arrow-left;
+#X msg 194 -71 bang;
+#X msg 221 -25 0 \, -360 2000;
+#X msg 194 80 0 \, 260 2000;
+#X obj 115 77 + 500;
+#X obj 95 -25 del 2200;
+#X msg 95 -4 0;
+#X obj 95 111 sig~;
+#X obj 115 56 random 1500;
+#X obj 115 35 metro 95;
+#X obj 194 -95 inlet;
+#X obj 95 132 outlet~;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
 #X connect 5 0 6 0;
-#X connect 6 0 4 0;
+#X connect 7 0 9 0;
 #X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 10 0 11 0;
+#X connect 7 0 11 0;
+#X connect 7 0 15 0;
+#X connect 8 0 3 0;
+#X connect 9 0 1 0;
+#X connect 10 0 13 0;
 #X connect 11 0 12 0;
-#X connect 13 0 14 0;
+#X connect 12 0 13 0;
+#X connect 12 0 15 0;
+#X connect 13 0 17 0;
+#X connect 14 0 10 0;
+#X connect 15 0 14 0;
+#X connect 16 0 7 0;
+#X restore 422 155 pd arc-circle;
+#X obj 82 118 bng 26 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 158 118 bng 26 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 250 118 bng 26 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 330 118 bng 26 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 422 118 bng 26 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 72 12 inlet;
+#X obj 72 33 random 6;
+#X obj 72 54 route 0 1 2 3 4 5;
+#X obj 509 118 bng 26 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 72 242 *~ 0.2;
+#X connect 0 0 18 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 5 0;
+#X connect 10 0 4 0;
+#X connect 11 0 6 0;
+#X connect 12 0 7 0;
+#X connect 13 0 8 0;
 #X connect 14 0 15 0;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 19 0 20 0;
-#X connect 20 0 21 0;
-#X connect 22 0 23 0;
-#X connect 23 0 24 0;
-#X connect 25 0 26 0;
-#X connect 26 0 27 0;
-#X connect 28 0 29 0;
-#X connect 29 0 30 0;
-#X connect 31 0 32 0;
-#X connect 32 0 33 0;
-#X connect 34 0 36 0;
-#X connect 36 0 35 0;
-#X restore 95 90 pd arcs;
-#X scalar arcs 147 177 \;;
-#X obj 208 100 pddp/pddplink http://tclbitprint.sourceforge.net/tkpath/quartz/
-;
-#X text 207 71 This is a port of the tkpath demo on arcs. You can see
-the original tkpath screenshot here:;
+#X connect 15 0 16 0;
+#X connect 16 0 5 0;
+#X connect 16 1 4 0;
+#X connect 16 2 6 0;
+#X connect 16 3 7 0;
+#X connect 16 4 8 0;
+#X connect 16 5 1 0;
+#X connect 17 0 1 0;
+#X connect 18 0 2 0;
+#X restore 97 56 pd animation-and-dsp;
+#X obj 97 15 bng 35 250 50 0 empty empty empty 17 7 0 10 -232576 -1
+-1;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/australia.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/australia.pd
index f9e705822..ace3dcd89 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/australia.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/australia.pd
@@ -6,11 +6,11 @@
 #N struct aussa float x float y;
 #N struct ausql float x float y;
 #N struct aust float x float y;
-#N canvas 0 19 829 552 10;
+#N canvas 27 19 829 552 10;
 #X obj 504 611 struct australia float x float y;
 #X scalar australia 50 43 \;;
 #X obj 21 291 vradio 22 1 0 8 empty empty empty 0 -8 0 10 -262144 -1
--1 0;
+-1 3;
 #X text 52 319 Northern Territory;
 #X text 52 341 Queensland;
 #X text 52 385 New South Wales;
@@ -57,7 +57,7 @@ transform scale 1 \; westernaustralia fill white \, transform scale
 #X connect 6 0 3 0;
 #X connect 6 1 1 0;
 #X restore 267 549 pd reset;
-#N canvas 798 30 536 581 ausv 0;
+#N canvas 612 65 536 581 ausv 0;
 #X obj 120 24 struct ausv float x float y;
 #X obj 117 179 draw path M 252.869 203.121 l -0.873 -0.643 l -1.721
 -0.121 l -8.182 -4.065 l 0.178 -1.349 l -0.354 -1.082 l -0.722 -1.028
@@ -116,12 +116,14 @@ h 1.49 l 0.428 -1.275 l -1.492 0.425 l -0.853 -0.64 h 1.063 l 2.771
 l -0.213 0.427 l 9.371 -0.853 l 1.915 -1.703 l -0.638 -0.64 H 252.869
 z;
 #X obj 119 588 loadbang;
-#X msg 119 609 fill-opacity 0.4;
 #X msg 118 149 transform scale \$1 translate \$2 \$3;
+#X obj -23 86 loadbang;
+#X msg -23 107 stroke black \, fill "";
+#X msg 119 609 fill-opacity 0.4 \, stroke black \, fill "";
 #X connect 2 0 7 0;
 #X connect 3 0 5 0;
 #X connect 4 0 5 1;
-#X connect 5 0 13 0;
+#X connect 5 0 12 0;
 #X connect 6 0 3 0;
 #X connect 6 1 4 0;
 #X connect 6 2 9 0;
@@ -130,9 +132,11 @@ z;
 #X connect 8 0 1 0;
 #X connect 8 0 10 0;
 #X connect 9 0 5 2;
-#X connect 11 0 12 0;
-#X connect 12 0 10 0;
-#X connect 13 0 1 0;
+#X connect 11 0 15 0;
+#X connect 12 0 1 0;
+#X connect 13 0 14 0;
+#X connect 14 0 1 0;
+#X connect 15 0 10 0;
 #X restore 504 384 pd ausv;
 #N canvas 0 27 1366 684 ausnsw 0;
 #X obj 133 291 draw path M 278.939 132.632 l -0.641 -0.853 l 0.183
@@ -234,7 +238,9 @@ l 0.64 0.213 l -0.213 -0.853 l 1.703 -3.193 h -0.426 l 0.426 -0.214
 L 278.939 132.632 z M 261.268 143.072 h -0.215 l -0.213 -0.639 l 0.641
 -0.214 L 261.268 143.072 z;
 #X obj 543 210 loadbang;
-#X msg 543 231 fill-opacity 0.4;
+#X msg 543 231 fill-opacity 0.4 \, fill "" \, stroke black;
+#X obj 9 193 loadbang;
+#X msg 9 214 stroke black \, fill "";
 #X connect 1 0 7 0;
 #X connect 3 0 5 0;
 #X connect 4 0 5 1;
@@ -250,6 +256,8 @@ L 278.939 132.632 z M 261.268 143.072 h -0.215 l -0.213 -0.639 l 0.641
 #X connect 10 0 5 2;
 #X connect 12 0 13 0;
 #X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 0 0;
 #X restore 504 417 pd ausnsw;
 #N canvas 0 27 1366 684 auswa 0;
 #X obj 41 180 draw path M 112.615 33.818 l -0.426 -0.425 l -0.852 -0.213
@@ -447,7 +455,9 @@ l 0.213 -0.426 l -1.278 -0.426 l 0.213 -0.852 l -0.639 0.426 l 0.852
 z M 83.443 45.535 v -0.81 l 0.639 0.384 L 83.443 45.535 z M 113.852
 44.081 V 43.35 l -0.168 0.056 L 113.852 44.081 z;
 #X obj 451 74 loadbang;
-#X msg 451 95 fill-opacity 0.4;
+#X msg 451 95 fill-opacity 0.4 \, stroke black \, fill "";
+#X obj 267 65 loadbang;
+#X msg 267 86 stroke black \, fill "";
 #X connect 1 0 6 0;
 #X connect 3 0 4 0;
 #X connect 4 0 8 0;
@@ -463,6 +473,8 @@ z M 83.443 45.535 v -0.81 l 0.639 0.384 L 83.443 45.535 z M 113.852
 #X connect 10 0 4 1;
 #X connect 12 0 13 0;
 #X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 0 0;
 #X restore 504 450 pd auswa;
 #N canvas 0 27 1366 684 ausnt 0;
 #X obj 80 14 struct ausnt float x float y;
@@ -612,7 +624,9 @@ l -0.213 0.426 l -0.639 -0.426 v 0.852 h -0.426 l 4.046 0.426 L 125.184
 12.525 z M 123.906 12.525 l 0.157 -0.939 l 0.056 0.3 l 1.064 0.638
 l -1.064 -0.425 L 123.906 12.525 z;
 #X obj 506 100 loadbang;
-#X msg 506 121 fill-opacity 0.4;
+#X msg 506 121 fill-opacity 0.4 \, stroke black \, fill "";
+#X obj 312 75 loadbang;
+#X msg 312 96 fill "" \, stroke black;
 #X connect 2 0 6 0;
 #X connect 3 0 4 0;
 #X connect 4 0 8 0;
@@ -628,6 +642,8 @@ l -1.064 -0.425 L 123.906 12.525 z;
 #X connect 10 0 4 2;
 #X connect 12 0 13 0;
 #X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
 #X restore 504 483 pd ausnt;
 #N canvas 0 27 1366 684 aussa 0;
 #X obj 96 23 struct aussa float x float y;
@@ -699,7 +715,9 @@ l -0.564 -0.873 l 1.631 4.281 l -0.213 1.064 l -1.063 1.064 l 0.851
 1.491 l 1.918 -0.213 l 1.49 -0.427 l 1.703 0.853 l 0.852 -0.64 l 0.213
 -0.853 h 2.77 l 0.424 -0.851 l -1.49 -0.639 L 172.887 189.499 z;
 #X obj 503 107 loadbang;
-#X msg 503 128 fill-opacity 0.4;
+#X msg 503 128 fill-opacity 0.4 \, stroke black \, fill "";
+#X obj 309 92 loadbang;
+#X msg 309 113 stroke black \, fill "";
 #X connect 2 0 6 0;
 #X connect 3 0 4 0;
 #X connect 4 0 8 0;
@@ -715,6 +733,8 @@ l -0.564 -0.873 l 1.631 4.281 l -0.213 1.064 l -1.063 1.064 l 0.851
 #X connect 10 0 4 1;
 #X connect 12 0 13 0;
 #X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
 #X restore 504 516 pd aussa;
 #N canvas 0 27 1366 684 ausql 0;
 #X obj 97 27 struct ausql float x float y;
@@ -862,7 +882,9 @@ l -0.183 1.97 L 278.516 129.443 z M 274.258 109.85 l 0.852 1.491 l
 1.916 -5.751 l -0.426 -0.852 v -1.49 l -1.063 0.852 l 0.85 1.278 l
 -1.704 1.917 h 0.428 l -0.428 1.49 L 274.258 109.85 z;
 #X obj 504 101 loadbang;
-#X msg 504 122 fill-opacity 0.4;
+#X msg 504 122 fill-opacity 0.4 \, stroke black \, fill "";
+#X obj 347 97 loadbang;
+#X msg 347 118 stroke black \, fill "";
 #X connect 2 0 6 0;
 #X connect 3 0 4 0;
 #X connect 4 0 8 0;
@@ -878,8 +900,10 @@ l -0.183 1.97 L 278.516 129.443 z M 274.258 109.85 l 0.852 1.491 l
 #X connect 10 0 4 1;
 #X connect 12 0 13 0;
 #X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
 #X restore 504 549 pd ausql;
-#N canvas 0 27 1366 684 aust 0;
+#N canvas 467 46 888 608 aust 0;
 #X obj 77 17 struct aust float x float y;
 #X obj 79 190 draw path M 214.201 220.805 l -0.639 1.277 l 0.213 2.555
 v 0.853 l 0.426 0.426 l 1.279 -1.278 l -0.213 -2.98 L 214.201 220.805
@@ -914,7 +938,6 @@ l -1.705 -2.129 l -1.276 1.491 l 0.853 0.212 V 224.637 z;
 #X obj 79 94 t a a a;
 #X obj 79 74 route float;
 #X obj 226 119 t a;
-#X msg 79 157 transform scale \$1 translate \$2 \$3;
 #X obj 153 115 * -45;
 #X obj 110 114 * -80;
 #X obj 469 190 draw path M 214.201 220.805 l -0.639 1.277 l 0.213 2.555
@@ -945,22 +968,27 @@ l -0.639 -1.064 l 0.852 -0.426 l 0.212 -1.703 l -0.64 0.212 l 1.066
 l -0.425 -1.064 l -0.427 0.427 l 0.427 -1.065 l 0.212 -0.426 h -0.852
 l -1.705 -2.129 l -1.276 1.491 l 0.853 0.212 V 224.637 z;
 #X obj 469 124 loadbang;
-#X msg 469 145 fill-opacity 0.4;
+#X msg 79 157 transform scale \$1 translate \$2 \$3;
+#X msg 469 145 fill-opacity 0.4 \, stroke black \, fill "";
+#X obj 300 90 loadbang;
+#X msg 300 111 stroke black \, fill "";
 #X connect 2 0 6 0;
 #X connect 3 0 4 0;
-#X connect 4 0 8 0;
+#X connect 4 0 12 0;
 #X connect 5 0 3 0;
-#X connect 5 1 10 0;
-#X connect 5 2 9 0;
+#X connect 5 1 9 0;
+#X connect 5 2 8 0;
 #X connect 6 0 5 0;
 #X connect 6 1 7 0;
 #X connect 7 0 1 0;
-#X connect 7 0 11 0;
-#X connect 8 0 1 0;
-#X connect 9 0 4 2;
-#X connect 10 0 4 1;
-#X connect 12 0 13 0;
-#X connect 13 0 11 0;
+#X connect 7 0 10 0;
+#X connect 8 0 4 2;
+#X connect 9 0 4 1;
+#X connect 11 0 13 0;
+#X connect 12 0 1 0;
+#X connect 13 0 10 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
 #X restore 504 582 pd aust;
 #X obj 127 866 t b a;
 #X msg 173 961 symbol \$1;
@@ -1048,10 +1076,10 @@ l -1.705 -2.129 l -1.276 1.491 l 0.853 0.212 V 224.637 z;
 ;
 #X text 502 286 the country of your choice-. Norway \, London \,;
 #X text 502 266 Make your own patch to interact with;
-#X text 502 236 of all kinds of preexisting vector images.;
 #X text 502 306 Africa-- the sky's the limit!;
 #X obj 504 354 pddp/pddplink http://raphaeljs.com/australia.html;
 #X text 502 336 Based off of:;
+#X text 502 236 of all kinds of preexisting vector drawings.;
 #X connect 2 0 44 0;
 #X connect 2 0 47 0;
 #X connect 8 0 21 0;
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 8d827f9bf..cf2b63333 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
@@ -14,34 +14,34 @@
 #X obj 189 244 line;
 #X msg 188 223 0 \, 100 \$1;
 #X obj 289 185 del;
-#X obj 240 357 draw circle 0 20 20;
-#X obj 65 297 loadbang;
-#X msg 65 318 stroke-dasharray 5 5;
+#X obj 250 357 draw circle 0 20 20;
+#X obj -45 304 loadbang;
 #X obj 289 227 f;
 #X msg 289 248 0 \$1;
 #X obj 293 163 + 250;
 #X obj 150 56 moses 1;
-#X obj 65 402 draw path m 22.9167 966.945 c -5.21812 0 -8.33333 3.13916
+#X obj -45 429 draw path m 22.9167 966.945 c -5.21812 0 -8.33333 3.13916
 -8.33333 8.33333 0 4.16666 8.33333 10.4166 12.5 14.5833 8.33312 8.3334
 22.0911 15.8413 35.4167 29.1667 l 12.5 12.5 -2.08334 2.0833 c 0 2.0833
 2.08334 4.1667 4.16667 4.1667 l 4.16667 -4.1667 4.16666 -4.1667 c 0
 -2.0833 -2.08333 -4.1666 -4.16666 -4.1666 l -2.08334 2.0833 -12.5 -12.5
 c -11.9306 -11.9304 -20.8335 -27.0833 -29.1667 -35.4167 -4.16667 -4.16666
 -10.4167 -12.5 -14.5833 -12.5 z;
-#X obj 65 360 loadbang;
-#X obj 250 315 loadbang;
-#X msg 250 336 stroke-width 2;
-#X msg 240 294 transform translate \$1 0;
-#X obj 65 339 draw rect -35 -35 225 205;
+#X obj -45 367 loadbang;
+#X obj 260 315 loadbang;
+#X msg 250 294 transform translate \$1 0;
+#X obj -45 346 draw rect -35 -35 225 205;
 #X msg 432 15 0.57;
 #X obj 432 36 * 180;
 #X obj 432 57 / 3.14;
 #X floatatom 432 78 5 0 0 0 - - -, f 5;
-#X msg 65 381 transform translate 590 -1800 rotate 32.67 65 1010 scale
-2;
+#X msg 260 336 stroke-width 2 \, stroke black \, fill "";
+#X msg -45 325 stroke-dasharray 5 5 \, stroke black \, fill "";
+#X msg -45 388 transform translate 590 -1800 rotate 32.67 65 1010 scale
+2 \, stroke black \, fill "";
 #X connect 0 0 2 0;
 #X connect 2 0 3 0;
-#X connect 3 1 20 0;
+#X connect 3 1 19 0;
 #X connect 4 0 6 0;
 #X connect 4 1 5 0;
 #X connect 5 0 6 0;
@@ -50,22 +50,22 @@ c -11.9306 -11.9304 -20.8335 -27.0833 -29.1667 -35.4167 -4.16667 -4.16666
 #X connect 8 0 9 0;
 #X connect 9 0 12 0;
 #X connect 9 0 10 0;
-#X connect 9 0 17 1;
-#X connect 9 0 19 0;
-#X connect 11 0 25 0;
+#X connect 9 0 16 1;
+#X connect 9 0 18 0;
+#X connect 11 0 23 0;
 #X connect 12 0 11 0;
-#X connect 13 0 17 0;
-#X connect 15 0 16 0;
-#X connect 16 0 26 0;
-#X connect 17 0 18 0;
-#X connect 18 0 11 0;
-#X connect 19 0 13 0;
-#X connect 20 1 4 0;
-#X connect 22 0 31 0;
-#X connect 23 0 24 0;
-#X connect 24 0 14 0;
-#X connect 25 0 14 0;
+#X connect 13 0 16 0;
+#X connect 15 0 30 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 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 28 0 29 0;
-#X connect 29 0 30 0;
-#X connect 31 0 21 0;
+#X connect 29 0 14 0;
+#X connect 30 0 24 0;
+#X connect 31 0 20 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 5c20a2628..dfdebc7f9 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
@@ -1,119 +1,46 @@
 #N struct bulb float x float y float r float g float b float a float
 s;
-#N canvas -9 19 650 529 10;
+#N canvas 0 48 650 529 10;
 #N canvas 644 19 538 195 bulb 0;
 #X obj 87 87 loadbang;
-#X msg 87 107 transform scale 0.5;
 #X obj 87 57 outlet;
 #X obj 87 21 struct bulb float x float y float r float g float b float
 a float s;
-#N canvas 342 361 450 300 (subpatch) 0;
+#N canvas 537 133 450 300 (subpatch) 0;
 #X obj 34 79 loadbang;
-#X obj 34 119 draw path M 100 100 m -43.3013 21.6987 a 50 50 0 1 1
+#X obj 34 125 draw path M 100 100 m -43.3013 21.6987 a 50 50 0 1 1
 86.6025 0 c -6 12 -23.3013 18.3013 -23.3013 33.3013 a 50 50 0 0 1 -40
 0 c 0 -15 -17.3013 -21.3013 -23.3013 -33.3013 z;
-#X obj 34 165 loadbang;
-#X msg 34 185;
-#X obj 34 205 draw path M 100 100 m -20 82 a 50 50 0 0 0 40 -2 l 0
+#X obj 34 174 draw path M 100 100 m -20 82 a 50 50 0 0 0 40 -2 l 0
 3 -10 8 -20 0 -10 -8 z;
-#X obj 34 238 loadbang;
-#X msg 34 258;
-#X obj 34 278 draw path M 100 100 m -20 55 a 50 50 0 0 0 40 -2 l 0
+#X obj 34 210 draw path M 100 100 m -20 55 a 50 50 0 0 0 40 -2 l 0
 27 a -50 50 0 0 1 -40 2 z;
-#X obj 34 311 loadbang;
-#X msg 34 331;
-#X obj 34 351 draw path M 100 100 m -20 53 a 50 50 0 0 0 40 0;
-#X obj 34 371 loadbang;
-#X msg 34 391;
-#X obj 34 411 draw path M 100 100 m -20 82 a 50 50 0 0 0 40 0;
-#X obj 34 431 loadbang;
-#X msg 34 451;
-#X obj 34 471 draw path M 100 100 m -20 61.75 a 50 50 0 0 0 40 -2;
-#X obj 34 491 loadbang;
-#X msg 34 511;
-#X obj 34 531 draw path M 100 100 m -20 70.75 a 50 50 0 0 0 40 -2;
-#X obj 34 551 loadbang;
-#X msg 34 571;
-#X obj 34 591 draw path M 100 100 m -20 79.75 a 50 50 0 0 0 40 -2;
-#X obj 34 611 loadbang;
-#X msg 34 631;
-#X obj 34 651 draw path M 100 100 m -20 55 a 50 50 0 0 0 40 -2;
-#X obj 34 671 loadbang;
-#X msg 34 691;
-#X obj 34 711 draw path M 100 100 m -20 64 a 50 50 0 0 0 40 -2;
-#X obj 34 731 loadbang;
-#X msg 34 751;
-#X obj 34 771 draw path M 100 100 m -20 73 a 50 50 0 0 0 40 -2;
-#X obj 34 791 loadbang;
-#X msg 34 811;
-#X obj 34 831 draw path M 100 100 m -20 82 a 50 50 0 0 0 40 -2;
-#X obj 34 851 loadbang;
-#X msg 34 871;
-#X obj 34 891 draw path M 100 100 m -20 57.25 a 50 50 0 0 0 40 -2;
-#X obj 34 911 loadbang;
-#X msg 34 931;
-#X obj 34 951 draw path M 100 100 m -20 66.25 a 50 50 0 0 0 40 -2;
-#X obj 34 971 loadbang;
-#X msg 34 991;
-#X obj 34 1011 draw path M 100 100 m -20 75.25 a 50 50 0 0 0 40 -2
-;
-#X obj 34 1031 loadbang;
-#X msg 34 1051;
-#X obj 34 1071 draw path M 100 100 m -20 59.5 a 50 50 0 0 0 40 -2;
-#X obj 34 1091 loadbang;
-#X msg 34 1111;
-#X obj 34 1131 draw path M 100 100 m -20 68.5 a 50 50 0 0 0 40 -2;
-#X obj 34 1151 loadbang;
-#X msg 34 1171;
-#X obj 34 1191 draw path M 100 100 m -20 77.5 a 50 50 0 0 0 40 -2;
-#X obj 34 1211 loadbang;
-#X msg 34 1231;
-#X obj 34 1251 draw path M 100 100 m -43.3013 21.6987 a 50 50 0 1 1
+#X obj 34 246 draw path M 100 100 m -20 53 a 50 50 0 0 0 40 0;
+#X obj 34 269 draw path M 100 100 m -20 82 a 50 50 0 0 0 40 0;
+#X obj 34 292 draw path M 100 100 m -20 61.75 a 50 50 0 0 0 40 -2;
+#X obj 34 315 draw path M 100 100 m -20 70.75 a 50 50 0 0 0 40 -2;
+#X obj 34 338 draw path M 100 100 m -20 79.75 a 50 50 0 0 0 40 -2;
+#X obj 34 361 draw path M 100 100 m -20 55 a 50 50 0 0 0 40 -2;
+#X obj 34 384 draw path M 100 100 m -20 64 a 50 50 0 0 0 40 -2;
+#X obj 34 407 draw path M 100 100 m -20 73 a 50 50 0 0 0 40 -2;
+#X obj 34 430 draw path M 100 100 m -20 82 a 50 50 0 0 0 40 -2;
+#X obj 34 453 draw path M 100 100 m -20 57.25 a 50 50 0 0 0 40 -2;
+#X obj 34 476 draw path M 100 100 m -20 66.25 a 50 50 0 0 0 40 -2;
+#X obj 34 499 draw path M 100 100 m -20 75.25 a 50 50 0 0 0 40 -2;
+#X obj 34 522 draw path M 100 100 m -20 59.5 a 50 50 0 0 0 40 -2;
+#X obj 34 545 draw path M 100 100 m -20 68.5 a 50 50 0 0 0 40 -2;
+#X obj 34 568 draw path M 100 100 m -20 77.5 a 50 50 0 0 0 40 -2;
+#X obj 34 591 draw path M 100 100 m -43.3013 21.6987 a 50 50 0 1 1
 86.6025 0 c -6 12 -23.3013 18.3013 -23.3013 33.3013 l 0 28 -10 8 -20
 0 -10 -8 0 -28 c 0 -15 -17.3013 -21.3013 -23.3013 -33.3013 z;
-#X msg 34 99 fill r g b a \, stroke-width s \, stroke r g b;
-#X connect 0 0 56 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 5 0 6 0;
-#X connect 6 0 7 0;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 11 0 12 0;
-#X connect 12 0 13 0;
-#X connect 14 0 15 0;
-#X connect 15 0 16 0;
-#X connect 17 0 18 0;
-#X connect 18 0 19 0;
-#X connect 20 0 21 0;
-#X connect 21 0 22 0;
-#X connect 23 0 24 0;
-#X connect 24 0 25 0;
-#X connect 26 0 27 0;
-#X connect 27 0 28 0;
-#X connect 29 0 30 0;
-#X connect 30 0 31 0;
-#X connect 32 0 33 0;
-#X connect 33 0 34 0;
-#X connect 35 0 36 0;
-#X connect 36 0 37 0;
-#X connect 38 0 39 0;
-#X connect 39 0 40 0;
-#X connect 41 0 42 0;
-#X connect 42 0 43 0;
-#X connect 44 0 45 0;
-#X connect 45 0 46 0;
-#X connect 47 0 48 0;
-#X connect 48 0 49 0;
-#X connect 50 0 51 0;
-#X connect 51 0 52 0;
-#X connect 53 0 54 0;
-#X connect 54 0 55 0;
-#X connect 56 0 1 0;
+#X msg 34 102 fill r g b a \, stroke-width s \, stroke r g b;
+#X connect 0 0 20 0;
+#X connect 20 0 1 0;
 #X restore 87 128 group;
-#X connect 0 0 1 0;
-#X connect 1 0 4 0;
-#X connect 3 0 2 0;
+#X msg 88 108 transform scale 0.5 \, fill "" \, stroke black;
+#X connect 0 0 4 0;
+#X connect 2 0 1 0;
+#X connect 4 0 3 0;
 #X restore 350 42 pd bulb;
 #X obj 350 66 route enter leave;
 #X obj 350 170 random 255;
@@ -122,21 +49,21 @@ a float s;
 #X obj 350 134 trigger bang bang bang anything;
 #X obj 564 168 t a;
 #X obj 350 240 set bulb r g b a s;
-#X scalar bulb 37 89 185 249 86 1 2 \;;
-#X scalar bulb 207 89 152 43 161 1 2 \;;
-#X scalar bulb 117 89 247 79 102 1 2 \;;
-#X scalar bulb 37 189 184 112 128 1 2 \;;
-#X scalar bulb 204 187 247 50 138 1 2 \;;
-#X scalar bulb 117 189 116 180 26 1 2 \;;
-#X scalar bulb 37 289 230 65 224 1 2 \;;
-#X scalar bulb 207 289 144 9 157 1 2 \;;
-#X scalar bulb 117 289 146 49 216 0.3 5 \;;
-#X scalar bulb 287 289 163 141 80 1 2 \;;
-#X scalar bulb 467 289 104 210 156 1 2 \;;
-#X scalar bulb 377 289 70 140 69 1 2 \;;
-#X scalar bulb 37 -11 184 112 128 1 2 \;;
-#X scalar bulb 207 -11 234 160 144 1 2 \;;
-#X scalar bulb 117 -11 76 203 161 1 2 \;;
+#X scalar bulb 37 89 125 47 144 1 2 \;;
+#X scalar bulb 207 89 184 112 128 1 2 \;;
+#X scalar bulb 117 89 2 197 206 1 2 \;;
+#X scalar bulb 37 189 147 213 194 1 2 \;;
+#X scalar bulb 204 187 141 98 156 1 2 \;;
+#X scalar bulb 117 189 22 49 33 1 2 \;;
+#X scalar bulb 37 289 105 204 27 1 2 \;;
+#X scalar bulb 207 289 122 187 225 1 2 \;;
+#X scalar bulb 117 289 224 181 45 1 2 \;;
+#X scalar bulb 287 289 194 27 193 1 2 \;;
+#X scalar bulb 467 289 189 236 185 1 2 \;;
+#X scalar bulb 377 289 143 169 166 1 2 \;;
+#X scalar bulb 37 -11 95 53 41 1 2 \;;
+#X scalar bulb 207 -11 94 118 18 1 2 \;;
+#X scalar bulb 117 -11 230 65 224 1 2 \;;
 #X obj 399 112 set bulb s a;
 #X obj 350 211 pack f f f 0.3 5;
 #X msg 399 91 2 1 \$1;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/circlehand.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/circlehand.pd
index 42a4dba57..ee6b20c66 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/circlehand.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/circlehand.pd
@@ -14,10 +14,7 @@
 #X obj 357 408 loadbang;
 #X msg 357 429 fill blue \, stroke blue \, stroke-width 2 \, fill-opacity
 0.4;
-#X msg 531 228 stroke-width 2 \, stroke blue \, stroke-opacity 0.4
-;
 #X obj 519 68 line;
-#X msg 594 180 stroke-width 2 \, stroke blue;
 #X msg 519 305 fill blue \, stroke blue \, stroke-opacity 1 \, fill-opacity
 1;
 #X msg 599 47 0;
@@ -34,22 +31,25 @@ control the frame rate using the second argument of [line].;
 #X text 81 383 The original is here:;
 #X obj 81 404 pddp/pddplink http://raphaeljs.com/hand.html;
 #X obj 519 113 * 90;
-#X connect 0 0 20 0;
-#X connect 5 0 16 0;
+#X msg 594 180 stroke-width 2 \, stroke blue \, fill "";
+#X msg 531 228 stroke-width 2 \, stroke blue \, stroke-opacity 0.4
+\, fill "";
+#X connect 0 0 18 0;
+#X connect 5 0 14 0;
 #X connect 8 0 2 0;
 #X connect 8 0 7 0;
-#X connect 9 0 27 0;
-#X connect 10 0 14 0;
+#X connect 9 0 25 0;
+#X connect 10 0 13 0;
 #X connect 11 0 12 0;
 #X connect 12 0 4 0;
-#X connect 13 0 7 0;
-#X connect 14 0 9 0;
-#X connect 15 0 2 0;
-#X connect 16 0 3 0;
-#X connect 17 0 14 0;
-#X connect 18 0 19 0;
-#X connect 19 0 6 0;
-#X connect 20 0 10 0;
-#X connect 21 0 15 0;
-#X connect 22 0 13 0;
-#X connect 27 0 8 0;
+#X connect 13 0 9 0;
+#X connect 14 0 3 0;
+#X connect 15 0 13 0;
+#X connect 16 0 17 0;
+#X connect 17 0 6 0;
+#X connect 18 0 10 0;
+#X connect 19 0 26 0;
+#X connect 20 0 27 0;
+#X connect 25 0 8 0;
+#X connect 26 0 2 0;
+#X connect 27 0 7 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/clock.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/clock.pd
index 596f44202..691e5ea55 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/clock.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/clock.pd
@@ -12,18 +12,13 @@
 #X obj 401 419 draw path M 0 4 L 100 4 100 10 140 0 100 -10 100 -4
 0 -4 z;
 #X obj 391 63 loadbang;
-#X msg 391 82 stroke-width 4 \, stroke-linecap 1;
-#X obj 401 381 loadbang;
-#X msg 401 400 stroke "" \, fill gray50;
+#X obj 401 344 loadbang;
 #X obj 487 228 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
 1;
 #X obj 488 294 f;
 #X obj 538 294 + 1;
 #X obj 538 315 % 60;
 #X msg 488 363 transform rotate \$1;
-#X obj 598 270 draw group;
-#X floatatom 598 228 5 0 0 0 - - -, f 5;
-#X msg 598 249 transform scale \$1 \$1;
 #X obj 488 246 metro 1000;
 #X text 53 15 Wall clock example. There are no subpatches here- this
 is the entire patch!;
@@ -32,17 +27,17 @@ is the entire patch!;
 #X text 585 314 the tkpath demo on which;
 #X text 585 329 this is based. It uses;
 #X text 585 344 radians. We use degrees.;
-#X connect 4 0 5 0;
-#X connect 5 0 1 0;
-#X connect 6 0 7 0;
-#X connect 7 0 3 0;
-#X connect 8 0 16 0;
-#X connect 9 0 10 0;
-#X connect 9 0 18 0;
-#X connect 10 0 11 0;
-#X connect 11 0 9 1;
-#X connect 12 0 3 0;
-#X connect 14 0 15 0;
-#X connect 15 0 13 0;
-#X connect 16 0 9 0;
-#X connect 18 0 12 0;
+#X msg 391 82 stroke-width 4 \, stroke-linecap 1 \, stroke black;
+#X msg 401 363 fill gray50;
+#X connect 4 0 18 0;
+#X connect 5 0 19 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 0 13 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 1;
+#X connect 10 0 3 0;
+#X connect 11 0 7 0;
+#X connect 13 0 10 0;
+#X connect 18 0 1 0;
+#X connect 19 0 3 0;
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 4cef7776f..3814dfbff 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,56 +1,57 @@
 #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 591 10;
+#N canvas 0 19 813 591 10;
 #X obj 92 363 cnv 15 461 213 empty empty empty 20 12 0 14 -33289 -66577
 0;
 #X scalar rcurver 150 401 30 123 -31 135 21 -12 -28 -5 255 40 100 \;
 ;
-#X obj 115 89 loadbang;
-#X obj 115 134 draw path M x1 y1 C ax ay bx by zx zy;
-#X obj 115 197 draw path M x1 y1 L ax ay M bx by L zx zy;
-#X msg 115 176 stroke #ccc \, stroke-dasharray 1 1;
-#X obj 115 155 loadbang;
+#X obj 95 69 loadbang;
+#X obj 95 114 draw path M x1 y1 C ax ay bx by zx zy;
+#X obj 95 177 draw path M x1 y1 L ax ay M bx by L zx zy;
+#X msg 95 156 stroke #ccc \, stroke-dasharray 1 1;
+#X obj 95 135 loadbang;
 #X scalar rcurver 250 404 30 123 -31 135 20 -13 -28 -5 80 2 150 \;
 ;
 #X scalar rcurver 365 407 42 128 -31 135 18 -10 -39 -5 150 6 50 \;
 ;
 #X scalar rcurver 480 403 34 136 -32 143 17 -9 -37 -5 70 255 60 \;
 ;
-#X obj 115 37 struct rcurver float x float y float x1 float y1 float
+#X obj 95 17 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;
-#X msg 115 110 stroke-width 4 \, stroke-linecap 1 \, stroke r g b;
-#X obj 115 218 draw circle x1 y1 5;
-#X obj 115 239 draw circle ax ay 5;
-#X obj 115 260 draw circle bx by 5;
-#X obj 115 281 draw circle zx zy 5;
-#X obj 16 172 loadbang;
-#X msg 16 193 fill white;
-#X text 414 112 Raphael Curver;
-#X text 414 112 ______________;
-#X text 414 322 So \, though it makes this patch easier to write \,
+#X obj 95 198 draw circle x1 y1 5;
+#X obj 95 219 draw circle ax ay 5;
+#X obj 95 240 draw circle bx by 5;
+#X obj 95 261 draw circle zx zy 5;
+#X obj 16 152 loadbang;
+#X msg 16 173 fill white;
+#X text 424 112 Raphael Curver;
+#X text 424 112 ______________;
+#X text 424 322 So \, though it makes this patch easier to write \,
 a more powerful method of defining interactive behavior is needed.
 ;
 #X text 575 392 <- Click and drag the white circles;
-#X text 414 132 This is an interesting demo for two reasons. First
+#X text 424 132 This is an interesting demo for two reasons. First
 \, aside from the loadbangs it is completely declarative. We just define
 some variables and put them in the drawing instructions. Second \,
 this patch is a full port of the Raphael.js demo and it's much shorter.
 This is because the mouse interaction with the variables is implicit--
 we just define them in the drawing commands and Pd assumes that they
 should be clickable.;
-#X text 414 232 Unfortunately this isn't a very flexible system. There
+#X text 424 232 Unfortunately this isn't a very flexible system. There
 are times when you don't want mouse interaction at a variable \, or
 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 connect 2 0 11 0;
+#X msg 95 90 stroke-width 4 \, stroke-linecap 1 \, stroke r g b \,
+fill "";
+#X connect 2 0 23 0;
 #X connect 5 0 4 0;
 #X connect 6 0 5 0;
-#X connect 11 0 3 0;
-#X connect 16 0 17 0;
-#X connect 17 0 12 0;
-#X connect 17 0 13 0;
-#X connect 17 0 14 0;
-#X connect 17 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 11 0;
+#X connect 16 0 12 0;
+#X connect 16 0 13 0;
+#X connect 16 0 14 0;
+#X connect 23 0 3 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/ellipses.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/ellipses.pd
index aaeb3a7dc..4283768fc 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/ellipses.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/ellipses.pd
@@ -1,5 +1,5 @@
 #N struct ellipses float x float y;
-#N canvas -9 19 638 643 10;
+#N canvas 0 19 638 643 10;
 #X obj 344 33 loadbang;
 #X msg 344 53 stroke #c8c8c8 \, fill #e6e6e6;
 #X obj 344 73 draw circle 60 60 32;
@@ -13,25 +13,25 @@
 #X msg 344 233 stroke #e2a19d \, fill #ffd6d6;
 #X obj 344 253 draw circle 200 160 40;
 #X obj 344 273 loadbang;
-#X msg 344 293 stroke #999999;
 #X obj 344 313 draw ellipse 200 280 20 60;
 #X obj 344 333 loadbang;
 #X obj 344 373 draw ellipse 100 260 60 20;
 #X msg 344 353 stroke #666666 \, stroke-width 3 \, fill #bdbdbd;
 #X obj 344 393 loadbang;
-#X msg 344 413;
 #X obj 344 433 draw ellipse 280 280 20 60;
 #X obj 344 453 loadbang;
 #X obj 344 493 draw circle 300 220 8;
-#X msg 344 473 fill red \, stroke "";
 #X obj 344 513 loadbang;
 #X obj 344 553 draw circle 300 240 8;
-#X msg 344 533 fill green \, stroke "";
 #X obj 344 573 loadbang;
-#X msg 344 593 fill blue \, stroke "";
 #X obj 344 610 draw circle 300 260 8;
 #X obj 344 13 struct ellipses float x float y;
 #X scalar ellipses 3 0 \;;
+#X msg 344 593 fill blue;
+#X msg 344 533 fill green;
+#X msg 344 473 fill red;
+#X msg 344 413 fill "" \, stroke black;
+#X msg 344 293 stroke #999999 \, fill "";
 #X connect 0 0 1 0;
 #X connect 1 0 2 0;
 #X connect 3 0 4 0;
@@ -40,15 +40,15 @@
 #X connect 7 0 8 0;
 #X connect 9 0 10 0;
 #X connect 10 0 11 0;
-#X connect 12 0 13 0;
-#X connect 13 0 14 0;
-#X connect 15 0 17 0;
-#X connect 17 0 16 0;
-#X connect 18 0 19 0;
-#X connect 19 0 20 0;
-#X connect 21 0 23 0;
-#X connect 23 0 22 0;
-#X connect 24 0 26 0;
-#X connect 26 0 25 0;
-#X connect 27 0 28 0;
-#X connect 28 0 29 0;
+#X connect 12 0 31 0;
+#X connect 14 0 16 0;
+#X connect 16 0 15 0;
+#X connect 17 0 30 0;
+#X connect 19 0 29 0;
+#X connect 21 0 28 0;
+#X connect 23 0 27 0;
+#X connect 27 0 24 0;
+#X connect 28 0 22 0;
+#X connect 29 0 20 0;
+#X connect 30 0 18 0;
+#X connect 31 0 13 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/fillrule.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/fillrule.pd
index e77abaccb..91cf7b16f 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/fillrule.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/fillrule.pd
@@ -1,33 +1,33 @@
 #N struct fillrule float x float y;
-#N canvas -9 19 719 463 10;
+#N canvas 0 19 719 479 10;
 #X obj 306 30 struct fillrule float x float y;
 #X obj 306 60 loadbang;
-#X msg 306 81 fill green \, fill-rule 0;
 #X obj 306 102 draw path M 10 10 h 80 v 80 h -80 z m 20 20 h 40 v 40
 h -40 z;
-#X obj 306 136 loadbang;
-#X obj 306 178 draw path M 10 10 h 80 v 80 h -80 z m 20 20 h 40 v 40
+#X obj 306 146 loadbang;
+#X obj 306 208 draw path M 10 10 h 80 v 80 h -80 z m 20 20 h 40 v 40
 h -40 z;
-#X obj 306 212 loadbang;
-#X obj 306 254 draw path M 0 0 a 40 40 0 1 1 0 80 a 40 40 0 1 1 0 -80
+#X obj 306 252 loadbang;
+#X obj 306 314 draw path M 0 0 a 40 40 0 1 1 0 80 a 40 40 0 1 1 0 -80
 Z M 0 20 a 20 20 0 1 1 0 40 a 20 20 0 1 1 0 -40 Z;
-#X obj 306 288 loadbang;
-#X obj 306 330 draw path M 0 0 a 40 40 0 1 1 0 80 a 40 40 0 1 1 0 -80
+#X obj 306 358 loadbang;
+#X obj 306 420 draw path M 0 0 a 40 40 0 1 1 0 80 a 40 40 0 1 1 0 -80
 Z M 0 20 a 20 20 0 1 0 0 40 a 20 20 0 1 0 0 -40 Z;
 #X scalar fillrule 30 20 \;;
-#X msg 306 233 fill green \, fill-rule 0 \, transform translate 50
-120;
-#X msg 306 309 fill blue \, fill-rule 1 \, transform translate 150
-120;
-#X msg 306 157 fill blue \, fill-rule 1 \, transform translate 100
-0;
 #X text 48 261 Nonzero (0);
 #X text 148 261 Evenodd (1);
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X connect 4 0 13 0;
-#X connect 6 0 11 0;
-#X connect 8 0 12 0;
-#X connect 11 0 7 0;
-#X connect 12 0 9 0;
-#X connect 13 0 5 0;
+#X msg 306 81 fill green \, fill-rule 0 \, stroke black;
+#X msg 306 167 fill blue \, fill-rule 1 \, transform translate 100
+0 \, stroke black;
+#X msg 306 273 fill green \, fill-rule 0 \, transform translate 50
+120 \, stroke black;
+#X msg 306 379 fill blue \, fill-rule 1 \, transform translate 150
+120 \, stroke black;
+#X connect 1 0 12 0;
+#X connect 3 0 13 0;
+#X connect 5 0 14 0;
+#X connect 7 0 15 0;
+#X connect 12 0 2 0;
+#X connect 13 0 4 0;
+#X connect 14 0 6 0;
+#X connect 15 0 8 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/lines.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/lines.pd
index e8e46b827..4205be616 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/lines.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/lines.pd
@@ -1,5 +1,5 @@
 #N struct lines float x float y;
-#N canvas -9 19 946 629 10;
+#N canvas 0 19 946 629 10;
 #X obj 414 30 struct lines float x float y;
 #X obj 415 54 loadbang;
 #X obj 415 96 draw line 20 20 180 20;
@@ -30,11 +30,9 @@
 #X msg 614 191 stroke blue \, stroke-width 4;
 #X obj 614 212 draw line 150 80 170 80;
 #X obj 614 238 loadbang;
-#X msg 614 259;
 #X obj 614 280 draw polyline 20 200 30 200 30 180 50 180 50 200 70
 200 70 160 90 160 90 200 110 200 110 120 130 120 130 200;
 #X obj 614 328 loadbang;
-#X msg 614 349 stroke gray50 \, stroke-width 4;
 #X obj 614 370 draw polyline 150 200 200 120 150 120 200 200;
 #X obj 614 398 loadbang;
 #X obj 614 440 draw polyline 220 200 270 120 220 120 270 200;
@@ -53,6 +51,8 @@
 #X text 93 432 Port of tkpath demo of lines:;
 #X obj 93 453 pddp/pddplink http://tclbitprint.sourceforge.net/tkpath/quartz/
 ;
+#X msg 614 259 fill "" \, stroke black;
+#X msg 614 349 stroke gray50 \, stroke-width 4 \, fill "";
 #X connect 1 0 7 0;
 #X connect 4 0 5 0;
 #X connect 5 0 6 0;
@@ -71,13 +71,13 @@
 #X connect 24 0 25 0;
 #X connect 26 0 27 0;
 #X connect 27 0 28 0;
-#X connect 29 0 30 0;
-#X connect 30 0 31 0;
-#X connect 32 0 33 0;
-#X connect 33 0 34 0;
-#X connect 35 0 43 0;
-#X connect 37 0 39 0;
-#X connect 39 0 38 0;
-#X connect 40 0 42 0;
-#X connect 42 0 41 0;
-#X connect 43 0 36 0;
+#X connect 29 0 47 0;
+#X connect 31 0 48 0;
+#X connect 33 0 41 0;
+#X connect 35 0 37 0;
+#X connect 37 0 36 0;
+#X connect 38 0 40 0;
+#X connect 40 0 39 0;
+#X connect 41 0 34 0;
+#X connect 47 0 30 0;
+#X connect 48 0 32 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/megaman.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/megaman.pd
index bad620f60..a3400257d 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/megaman.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/megaman.pd
@@ -1,5 +1,5 @@
 #N struct mm float x float y float a;
-#N canvas -9 19 844 666 10;
+#N canvas 0 19 844 666 10;
 #X obj -11 119 cnv 15 317 17 empty empty empty 20 12 0 14 -204786 -66577
 0;
 #X scalar mm 301 434.322 3 \;;
@@ -19,7 +19,7 @@
 #X msg 258 42 0;
 #X obj 453 300 t a b;
 #X obj 333 62 metro 90;
-#X obj 481 427 + 5;
+#X obj 481 417 + 5;
 #X obj 525 270 t a b;
 #X obj 569 269 t a b;
 #X msg 561 378 4;
@@ -29,7 +29,7 @@
 #X msg 510 327 traverse pd-megaman.pd \, next;
 #X obj 0 0 struct mm float x float y float a;
 #X obj 481 378 get mm x;
-#X obj 453 456 set mm a x;
+#X obj 453 446 set mm a x;
 #X obj 226 295 canvasinfo;
 #X msg 226 152 traverse pd-megaman.pd \, next;
 #X obj 226 173 pointer;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/notes.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/notes.pd
index 35a5dd6aa..243d1cc3d 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/notes.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/notes.pd
@@ -1,6 +1,6 @@
 #N struct staff float x float y;
-#N canvas 407 19 712 643 10;
-#X scalar staff 277 186 \;;
+#N canvas 0 19 828 643 10;
+#X scalar staff 305 187 \;;
 #X msg 194 372 0;
 #X msg 234 372 2;
 #X obj 194 413 + 69;
@@ -27,7 +27,7 @@ case) to play one of the four notes shown:;
 Pd can't automatically import such a file at the moment. Here I ported
 the path instructions by hand.;
 #X obj 195 583 output~;
-#N canvas 864 140 450 300 (subpatch) 0;
+#N canvas 0 27 1366 684 (subpatch) 0;
 #X obj 374 -494 loadbang;
 #X obj 1026 -132 loadbang;
 #X obj 524 -29 draw path M 220 138 c 56 0 109 -29 109 -91 c 0 -72 -56
@@ -75,23 +75,13 @@ c -100 -53 -163 -157 -163 -270 c 0 -87 22 -158 43 -230 c 84 102 155
 \, fill black;
 #X obj 755 -462 draw line 0.05 -0 21.1469 -0;
 #X obj 755 -517 loadbang;
-#X msg 755 -496 transform translate 14.2264 9.8453 \, stroke-linejoin
-1 \, stroke-linecap 1 \, stroke-width 0.1;
 #X obj 755 -437 loadbang;
 #X obj 755 -382 draw line 0.05 -0 21.1469 -0;
-#X msg 755 -418 transform translate 14.2264 8.8453 \, stroke-linejoin
-1 \, stroke-linecap 1 \, stroke-width 0.1;
 #X obj 755 -357 loadbang;
-#X msg 753 -338 transform translate 14.2264 7.8453 \, stroke-linejoin
-1 \, stroke-linecap 1 \, stroke-width 0.1;
 #X obj 753 -302 draw line 0.05 -0 21.1469 -0;
 #X obj 755 -277 loadbang;
 #X obj 753 -222 draw line 0.05 -0 21.1469 -0;
-#X msg 753 -257 transform translate 14.2264 6.8453 \, stroke-linejoin
-1 \, stroke-linecap 1 \, stroke-width 0.1;
 #X obj 755 -197 loadbang;
-#X msg 753 -177 transform translate 14.2264 5.8453 \, stroke-linejoin
-1 \, stroke-linecap 1 \, stroke-width 0.1;
 #X obj 753 -142 draw line 0.05 -0 21.1469 -0;
 #X text 303 -342 clef ->;
 #X text 903 -41 time signature ->;
@@ -136,6 +126,16 @@ c -100 -53 -163 -157 -163 -270 c 0 -87 22 -158 43 -230 c 84 102 155
 0 72 56 121 103 149 c 36 21 76 36 117 36 z;
 #X obj 408 -61 s cl;
 #X obj 176 37 makefilename %c;
+#X msg 755 -496 transform translate 14.2264 9.8453 \, stroke-linejoin
+1 \, stroke-linecap 1 \, stroke-width 0.1 \, stroke black;
+#X msg 755 -418 transform translate 14.2264 8.8453 \, stroke-linejoin
+1 \, stroke-linecap 1 \, stroke-width 0.1 \, stroke black;
+#X msg 753 -338 transform translate 14.2264 7.8453 \, stroke-linejoin
+1 \, stroke-linecap 1 \, stroke-width 0.1 \, stroke black;
+#X msg 753 -257 transform translate 14.2264 6.8453 \, stroke-linejoin
+1 \, stroke-linecap 1 \, stroke-width 0.1 \, stroke black;
+#X msg 753 -177 transform translate 14.2264 5.8453 \, stroke-linejoin
+1 \, stroke-linecap 1 \, stroke-width 0.1 \, stroke black;
 #X connect 0 0 9 0;
 #X connect 1 0 10 0;
 #X connect 3 0 11 0;
@@ -145,59 +145,58 @@ c -100 -53 -163 -157 -163 -270 c 0 -87 22 -158 43 -230 c 84 102 155
 #X connect 9 0 8 0;
 #X connect 10 0 7 0;
 #X connect 11 0 2 0;
-#X connect 12 0 63 0;
-#X connect 13 0 61 0;
-#X connect 14 0 62 0;
-#X connect 16 0 17 0;
-#X connect 17 0 15 0;
-#X connect 18 0 20 0;
-#X connect 20 0 19 0;
-#X connect 21 0 22 0;
-#X connect 22 0 23 0;
-#X connect 24 0 26 0;
-#X connect 26 0 25 0;
-#X connect 27 0 28 0;
-#X connect 28 0 29 0;
-#X connect 36 0 38 0;
-#X connect 38 0 37 0;
-#X connect 40 0 41 0;
-#X connect 41 0 42 0;
-#X connect 41 1 43 0;
-#X connect 41 2 44 0;
-#X connect 41 3 45 0;
-#X connect 42 0 65 0;
-#X connect 43 0 65 0;
-#X connect 44 0 65 0;
-#X connect 45 0 65 0;
-#X connect 46 0 56 0;
-#X connect 46 1 55 0;
-#X connect 47 0 48 0;
-#X connect 47 0 64 0;
-#X connect 48 0 2 0;
-#X connect 49 0 50 0;
-#X connect 50 0 63 0;
-#X connect 51 0 52 0;
-#X connect 52 0 61 0;
-#X connect 53 0 54 0;
-#X connect 54 0 62 0;
-#X connect 57 0 55 0;
-#X connect 57 1 55 0;
-#X connect 57 2 55 0;
-#X connect 57 3 55 0;
-#X connect 57 4 55 0;
-#X connect 58 0 57 0;
-#X connect 59 0 60 0;
-#X connect 60 0 37 0;
-#X connect 65 0 46 0;
+#X connect 12 0 58 0;
+#X connect 13 0 56 0;
+#X connect 14 0 57 0;
+#X connect 16 0 61 0;
+#X connect 17 0 62 0;
+#X connect 19 0 63 0;
+#X connect 21 0 64 0;
+#X connect 23 0 65 0;
+#X connect 31 0 33 0;
+#X connect 33 0 32 0;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 36 1 38 0;
+#X connect 36 2 39 0;
+#X connect 36 3 40 0;
+#X connect 37 0 60 0;
+#X connect 38 0 60 0;
+#X connect 39 0 60 0;
+#X connect 40 0 60 0;
+#X connect 41 0 51 0;
+#X connect 41 1 50 0;
+#X connect 42 0 43 0;
+#X connect 42 0 59 0;
+#X connect 43 0 2 0;
+#X connect 44 0 45 0;
+#X connect 45 0 58 0;
+#X connect 46 0 47 0;
+#X connect 47 0 56 0;
+#X connect 48 0 49 0;
+#X connect 49 0 57 0;
+#X connect 52 0 50 0;
+#X connect 52 1 50 0;
+#X connect 52 2 50 0;
+#X connect 52 3 50 0;
+#X connect 53 0 52 0;
+#X connect 54 0 55 0;
+#X connect 55 0 32 0;
+#X connect 60 0 41 0;
+#X connect 61 0 15 0;
+#X connect 62 0 18 0;
+#X connect 63 0 20 0;
+#X connect 64 0 22 0;
+#X connect 65 0 24 0;
 #X restore 447 519 group;
 #X obj 447 408 * 0.01;
 #X obj 447 432 * 11;
-#X obj 447 304 struct staff float x float y;
 #X obj 447 473 pack;
 #X floatatom 495 409 5 0 0 1 Rotate - -, f 5;
 #X obj 495 430 t b a;
 #X msg 447 495 transform scale \$1 translate -20 -10 rotate \$2 25
 10;
+#X obj 447 304 struct staff float x float y;
 #X connect 1 0 3 0;
 #X connect 2 0 3 0;
 #X connect 3 0 11 0;
@@ -222,9 +221,9 @@ c -100 -53 -163 -157 -163 -270 c 0 -87 22 -158 43 -230 c 84 102 155
 #X connect 19 0 20 0;
 #X connect 20 0 18 0;
 #X connect 25 0 26 0;
-#X connect 26 0 28 0;
-#X connect 28 0 31 0;
-#X connect 29 0 30 0;
-#X connect 30 0 28 0;
-#X connect 30 1 28 1;
-#X connect 31 0 24 0;
+#X connect 26 0 27 0;
+#X connect 27 0 30 0;
+#X connect 28 0 29 0;
+#X connect 29 0 27 0;
+#X connect 29 1 27 1;
+#X connect 30 0 24 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/objects.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/objects.pd
index f680595be..95626425c 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/objects.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/objects.pd
@@ -1,13 +1,12 @@
 #N struct instance-attr float x float y float a;
-#N canvas -8 19 791 484 10;
+#N canvas 0 19 791 484 10;
 #X obj 466 124 pointer;
 #X obj 600 124 pointer;
 #X floatatom 427 138 5 0 0 0 - - -, f 5;
 #X floatatom 553 136 5 0 0 0 - - -, f 5;
-#X scalar instance-attr 81 355 0.35 \;;
+#X scalar instance-attr 81 355 12 \;;
 #X obj 159 109 draw path M 0 0 l 100 0 0 -100;
-#X scalar instance-attr 328 421 -0.31 \;;
-#X msg 159 84 transform rotate a;
+#X scalar instance-attr 328 421 -18 \;;
 #X obj 159 59 loadbang;
 #X obj 466 83 loadbang;
 #X obj 600 83 loadbang;
@@ -23,13 +22,14 @@ you have to choose a variable name that isn't a drawing command (M
 #X msg 466 103 traverse ob \, next;
 #X msg 600 103 traverse ob \, next \, next;
 #X obj 466 32 namecanvas ob;
-#X connect 0 0 14 1;
-#X connect 1 0 15 1;
-#X connect 2 0 14 0;
-#X connect 3 0 15 0;
-#X connect 7 0 5 0;
-#X connect 8 0 7 0;
+#X msg 159 84 transform rotate a \, fill "" \, stroke black;
+#X connect 0 0 13 1;
+#X connect 1 0 14 1;
+#X connect 2 0 13 0;
+#X connect 3 0 14 0;
+#X connect 7 0 18 0;
+#X connect 8 0 15 0;
 #X connect 9 0 16 0;
-#X connect 10 0 17 0;
-#X connect 16 0 0 0;
-#X connect 17 0 1 0;
+#X connect 15 0 0 0;
+#X connect 16 0 1 0;
+#X connect 18 0 5 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/omgponies.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/omgponies.pd
index 9928d5751..2a92e36e1 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/omgponies.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/omgponies.pd
@@ -1,3 +1,4 @@
+#N struct pony float x float y float a float pizzazz;
 #N canvas 0 19 839 500 10;
 #N canvas 15 188 450 482 animate 0;
 #X obj 22 30 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
@@ -55,7 +56,6 @@
 #X text 54 168 4) Profit;
 #X obj 365 44 loadbang;
 #X msg 365 65 index a;
-#X obj 365 87 draw sprite /home/bud/Desktop/funstuff/pd-with-prefs/omgponies
-;
+#X obj 365 87 draw sprite ./omgponies;
 #X connect 7 0 8 0;
 #X connect 8 0 9 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/pieslice.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/pieslice.pd
index eda36eb41..d2e799f3a 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/pieslice.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/pieslice.pd
@@ -1,7 +1,7 @@
 #N struct pieslicer float x float y float cx float cy float x1 float
 y1 float r float flag float x2 float y2 float r1 float g float b float
 s float tx float ty;
-#N canvas -9 19 929 640 10;
+#N canvas 0 19 929 640 10;
 #X scalar pieslicer 380 -50 300 300 500 300 200 1 237.416 489.956 10
 80 250 1 0 0 \;;
 #X scalar pieslicer 380 -50 300 300 237.416 489.956 200 0 491.793 356.705
@@ -45,7 +45,6 @@ s float tx float ty;
 #X obj 567 92 pdinfo;
 #X obj 567 113 / 180;
 #X obj 470 279 loadbang;
-#X msg 470 300 traverse c \, bang;
 #X obj 470 321 pointer;
 #X obj 60 270 t b b b a;
 #X obj 96 313 v r;
@@ -62,43 +61,43 @@ s float tx float ty;
 cos(-1 * endangle * rad) \; cy + r * sin(-1 * startangle * rad) \;
 cy + r * sin(-1 * endangle * rad) \; (endangle - startangle) > 180
 ;
+#X msg 470 300 traverse pieslice-canvas \, bang;
 #X connect 0 0 15 0;
 #X connect 2 0 11 0;
 #X connect 4 0 12 0;
 #X connect 6 0 13 0;
 #X connect 8 0 14 0;
-#X connect 15 0 34 0;
+#X connect 15 0 33 0;
 #X connect 15 1 10 0;
 #X connect 16 0 17 0;
 #X connect 17 0 18 0;
 #X connect 18 0 19 0;
-#X connect 19 0 27 0;
-#X connect 19 0 32 0;
-#X connect 20 0 21 0;
-#X connect 21 0 22 0;
-#X connect 22 0 28 8;
-#X connect 23 0 26 0;
-#X connect 23 1 25 0;
-#X connect 23 2 24 0;
-#X connect 23 3 28 3;
-#X connect 24 0 28 2;
-#X connect 25 0 28 1;
-#X connect 26 0 28 0;
-#X connect 34 0 23 0;
-#X connect 34 1 28 4;
-#X connect 34 1 33 0;
-#X connect 34 2 28 5;
-#X connect 34 2 31 0;
-#X connect 34 3 28 6;
-#X connect 34 3 30 0;
-#X connect 34 4 28 7;
-#X connect 34 4 29 0;
+#X connect 19 0 26 0;
+#X connect 19 0 31 0;
+#X connect 20 0 34 0;
+#X connect 21 0 27 8;
+#X connect 22 0 25 0;
+#X connect 22 1 24 0;
+#X connect 22 2 23 0;
+#X connect 22 3 27 3;
+#X connect 23 0 27 2;
+#X connect 24 0 27 1;
+#X connect 25 0 27 0;
+#X connect 33 0 22 0;
+#X connect 33 1 27 4;
+#X connect 33 1 32 0;
+#X connect 33 2 27 5;
+#X connect 33 2 30 0;
+#X connect 33 3 27 6;
+#X connect 33 3 29 0;
+#X connect 33 4 27 7;
+#X connect 33 4 28 0;
+#X connect 34 0 21 0;
 #X restore 183 541 pd sector;
 #X floatatom 89 474 0 0 0 0 cx - -;
 #X floatatom 139 474 0 0 0 0 cy - -;
 #X floatatom 184 474 5 0 0 0 r - -, f 5;
 #X obj 228 477 +;
-#X obj 69 -16 namecanvas c;
 #X obj 69 200 draw path M cx cy L x1 y1 A r r 0 flag 0 x2 y2 z;
 #X obj 228 441 t a b;
 #X obj 69 143 loadbang;
@@ -125,6 +124,7 @@ obvious that the scalar "Properties" dialog needs to be more user-friendly.
 Editing a long list of floats is simply too prone to error.;
 #X text 778 516 Based on:;
 #X obj 778 537 pddp/pddplink http://raphaeljs.com/pie.html;
+#X obj 69 -16 namecanvas pieslice-canvas;
 #X connect 3 0 9 0;
 #X connect 3 0 13 0;
 #X connect 4 0 3 0;
@@ -140,7 +140,7 @@ Editing a long list of floats is simply too prone to error.;
 #X connect 13 0 14 0;
 #X connect 14 0 15 0;
 #X connect 15 0 12 0;
-#X connect 15 0 25 0;
+#X connect 15 0 24 0;
 #X connect 16 0 17 1;
 #X connect 17 0 18 3;
 #X connect 17 0 22 1;
@@ -149,12 +149,12 @@ Editing a long list of floats is simply too prone to error.;
 #X connect 21 0 18 2;
 #X connect 22 0 18 4;
 #X connect 22 0 17 1;
-#X connect 25 0 22 0;
-#X connect 25 1 17 0;
-#X connect 26 0 29 0;
-#X connect 27 0 31 0;
-#X connect 27 1 32 0;
-#X connect 29 0 24 0;
+#X connect 24 0 22 0;
+#X connect 24 1 17 0;
+#X connect 25 0 28 0;
+#X connect 26 0 30 0;
+#X connect 26 1 31 0;
+#X connect 28 0 23 0;
+#X connect 29 0 26 0;
 #X connect 30 0 27 0;
-#X connect 31 0 28 0;
-#X connect 32 0 28 0;
+#X connect 31 0 27 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/polar-clock.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/polar-clock.pd
index 7b3de9b80..aaaa25d1d 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/polar-clock.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/polar-clock.pd
@@ -1,14 +1,14 @@
 #N struct polar-clock float x float y float ax float ay float flag
 float xloc float yloc float mx float my float r;
-#N canvas -9 19 1062 664 10;
-#X scalar polar-clock 281 372 131.348 -132.709 0 0 0 50 -150 200 \;
+#N canvas 0 19 1062 664 10;
+#X scalar polar-clock 281 372 -98.6294 -83.8256 1 0 0 50 -150 200 \;
 ;
 #X obj 137 29 struct polar-clock float x float y float ax float ay
 float flag float xloc float yloc float mx float my float r;
 #X obj 139 65 loadbang;
-#X scalar polar-clock 281 372 -29.9998 188.564 1 0 0 50 -110 160 \;
+#X scalar polar-clock 281 372 210 50 0 0 0 50 -110 160 \;;
+#X scalar polar-clock 281 372 81.0584 -65.9111 0 0 0 50 -70 120 \;
 ;
-#X scalar polar-clock 281 372 -70 50.0003 1 0 0 50 -70 120 \;;
 #X scalar polar-clock 281 372 33.3672 128.252 1 0 0 50 -30 80 \;;
 #X scalar polar-clock 281 382 84.641 30 0 0 0 50 10 40 \;;
 #N canvas 405 57 917 566 guts 0;
@@ -153,7 +153,6 @@ float flag float xloc float yloc float mx float my float r;
 #X connect 56 0 55 0;
 #X connect 63 0 10 0;
 #X restore 607 542 pd guts;
-#X msg 139 86 stroke-width 30 \, stroke ay ax ay;
 #X floatatom 783 592 5 0 0 0 - - -, f 5;
 #X floatatom 738 592 5 0 0 1 / - -, f 5;
 #X floatatom 688 592 5 0 0 0 - - -, f 5;
@@ -161,8 +160,6 @@ float flag float xloc float yloc float mx float my float r;
 #X floatatom 607 592 5 0 0 1 : - -, f 5;
 #X obj 509 29 namecanvas polar_clock;
 #X obj 395 126 draw circle mx mx r;
-#X msg 395 89 stroke gray \, stroke-width 5 \, stroke-dasharray 1 15
-\, stroke-linecap 1 \, stroke-opacity 0.4;
 #X obj 139 110 draw path M mx my A r r 0 flag 1 ax ay;
 #X obj 395 65 loadbang;
 #X text 604 148 Raphael Polar Clock;
@@ -192,12 +189,15 @@ that the hypothetical textbook author is going to use your inane spec
 as the main (and probably _only_) reference. So take a sip of coffee
 \, think how much easier it is to write code for a living than loading
 shit into a truck \, and get to work;
-#X connect 2 0 8 0;
-#X connect 7 0 13 0;
-#X connect 7 1 12 0;
-#X connect 7 2 11 0;
-#X connect 7 3 10 0;
-#X connect 7 4 9 0;
-#X connect 8 0 17 0;
-#X connect 16 0 15 0;
-#X connect 18 0 16 0;
+#X msg 395 89 stroke gray \, stroke-width 5 \, stroke-dasharray 1 15
+\, stroke-linecap 1 \, stroke-opacity 0.4 \, fill "";
+#X msg 139 86 stroke-width 30 \, stroke ay ax ay \, fill "";
+#X connect 2 0 25 0;
+#X connect 7 0 12 0;
+#X connect 7 1 11 0;
+#X connect 7 2 10 0;
+#X connect 7 3 9 0;
+#X connect 7 4 8 0;
+#X connect 16 0 24 0;
+#X connect 24 0 14 0;
+#X connect 25 0 15 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/quick-graph.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/quick-graph.pd
index b09147a93..c3bd1bd2b 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/quick-graph.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/quick-graph.pd
@@ -34,7 +34,7 @@ r float g float b float radius;
 #X obj 469 71 loadbang;
 #X obj 458 187 draw circle 0 y1 8;
 #X obj 458 147 loadbang;
-#X msg 458 168 stroke "";
+#X msg 458 168 fill "";
 #X connect 1 0 5 1;
 #X connect 1 1 0 1;
 #X connect 1 2 0 2;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/randolines.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/randolines.pd
index 412289985..c07414a3e 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/randolines.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/randolines.pd
@@ -1,4 +1,6 @@
-#N canvas -9 19 574 479 10;
+#N struct randolines float x float y float x0 float y0 float x1 float
+y1 float r float g float b;
+#N canvas 0 19 574 479 10;
 #X msg 93 144 100;
 #X obj 93 170 until;
 #X obj 93 226 t b b b b b;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/raphael-animation.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/raphael-animation.pd
index ae70db56a..f12babab4 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/raphael-animation.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/raphael-animation.pd
@@ -14,12 +14,8 @@
 #X obj 380 339 loadbang;
 #X obj 380 397 draw circle -50 0 20;
 #X obj 384 421 loadbang;
-#X msg 384 442 stroke-dasharray 5 2 \, stroke #fff \, stroke-opacity
-0.2 \, stroke-width 2;
-#X msg 380 360 stroke-dasharray 5 2 \, stroke #fff \, stroke-opacity
-0.2 \, stroke-width 2;
 #X obj 384 476 draw circle 50 0 20;
-#X obj 202 98 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+#X obj 202 98 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
 1;
 #X msg 202 118 \$1 1000;
 #X obj 202 160 t a a;
@@ -42,24 +38,28 @@ for the arrow. However \, there is not currently a way to control the
 z order among _different_ scalars. (But within a scalar \, the stacking
 order of the parent drawing commands determines the stacking order
 of the drawings.);
-#X connect 0 0 23 0;
+#X msg 380 360 stroke-dasharray 5 2 \, stroke #fff \, stroke-opacity
+0.2 \, stroke-width 2 \, fill "";
+#X msg 384 442 stroke-dasharray 5 2 \, stroke #fff \, stroke-opacity
+0.2 \, stroke-width 2 \, fill "";
+#X connect 0 0 21 0;
 #X connect 2 0 5 0;
 #X connect 3 0 4 0;
 #X connect 4 0 6 0;
 #X connect 5 0 7 0;
-#X connect 8 0 22 0;
-#X connect 10 0 14 0;
-#X connect 12 0 13 0;
-#X connect 13 0 15 0;
-#X connect 14 0 11 0;
+#X connect 8 0 20 0;
+#X connect 10 0 28 0;
+#X connect 12 0 29 0;
+#X connect 14 0 15 0;
+#X connect 15 0 23 0;
 #X connect 16 0 17 0;
-#X connect 17 0 25 0;
+#X connect 16 1 18 1;
+#X connect 17 0 18 0;
 #X connect 18 0 19 0;
-#X connect 18 1 20 1;
-#X connect 19 0 20 0;
-#X connect 20 0 21 0;
-#X connect 21 0 9 0;
-#X connect 22 0 9 0;
-#X connect 23 0 24 0;
-#X connect 24 0 16 0;
-#X connect 25 0 18 0;
+#X connect 19 0 9 0;
+#X connect 20 0 9 0;
+#X connect 21 0 22 0;
+#X connect 22 0 14 0;
+#X connect 23 0 16 0;
+#X connect 28 0 11 0;
+#X connect 29 0 13 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/spin-spin-spin.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/spin-spin-spin.pd
index 5a1c5e36e..2707ef342 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/spin-spin-spin.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/spin-spin-spin.pd
@@ -1,5 +1,5 @@
 #N struct leaf float x float y;
-#N canvas 0 19 910 680 10;
+#N canvas 0 19 910 539 10;
 #N canvas 2 65 668 608 render 0;
 #X obj 92 557 draw rect 0 0 300 300;
 #X obj 53 47 struct leaf float x float y;
@@ -131,36 +131,36 @@ stroke-opacity 0.6 \, rx 30 \, ry 30;
 #X msg 69 231 1 50;
 #X obj 69 252 line~;
 #X obj 99 42 t b b b;
-#X obj 28 211 del 100;
 #X msg 28 232 0 50;
 #X obj 43 362 outlet~;
 #X obj 135 269 phasor~ 150;
 #X obj 110 302 *~;
 #X obj 43 333 *~ 0.3;
 #X obj 33 170 del 400;
+#X obj 28 211 del 500;
 #X connect 0 0 1 0;
 #X connect 1 0 2 2;
 #X connect 3 0 13 0;
 #X connect 4 0 2 0;
 #X connect 4 0 7 0;
 #X connect 5 0 6 0;
-#X connect 5 0 20 0;
+#X connect 5 0 19 0;
 #X connect 6 0 2 0;
 #X connect 6 0 9 0;
 #X connect 7 0 8 0;
 #X connect 9 0 10 0;
 #X connect 11 0 12 0;
-#X connect 12 0 18 0;
+#X connect 12 0 17 0;
 #X connect 13 1 4 0;
 #X connect 13 1 5 0;
 #X connect 13 2 0 0;
-#X connect 14 0 15 0;
-#X connect 15 0 12 0;
-#X connect 17 0 18 1;
-#X connect 18 0 19 0;
-#X connect 19 0 16 0;
+#X connect 14 0 12 0;
+#X connect 16 0 17 1;
+#X connect 17 0 18 0;
+#X connect 18 0 15 0;
+#X connect 19 0 11 0;
+#X connect 19 0 20 0;
 #X connect 20 0 14 0;
-#X connect 20 0 11 0;
 #X restore 528 460 pd make-sound;
 #X obj 104 87 namecanvas spinner;
 #X obj 528 501 output~;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/splines.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/splines.pd
index aab40c6af..c4bdbaf2a 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/splines.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/splines.pd
@@ -1,9 +1,8 @@
 #N struct splines float x float y float qmid float c1 float c2;
-#N canvas 0 19 700 527 10;
-#X scalar splines 92 86 12.4121 179.988 327.414 \;;
-#X floatatom 331 201 5 0 0 0 - - -, f 5;
-#X msg 331 222 transform rotate \$1;
-#N canvas 503 120 798 446 (subpatch) 0;
+#N canvas 7 25 700 527 10;
+#X scalar splines 92 86 0.541397 165.533 330.641 \;;
+#X floatatom 311 221 5 0 0 0 - - -, f 5;
+#N canvas 493 185 798 446 (subpatch) 0;
 #X obj 319 -462 loadbang;
 #X obj 319 -392 loadbang;
 #X obj 319 -322 loadbang;
@@ -16,8 +15,6 @@
 #X obj 319 -129 draw path M 135 100 h 10 m -5 -5 v 10;
 #X obj 639 -462 loadbang;
 #X obj 639 -392 loadbang;
-#X msg 639 -441 stroke blue \, stroke-width 1;
-#X msg 639 -371 stroke black \, stroke-width 3;
 #X obj 639 -322 loadbang;
 #X obj 639 -276 draw path M 15 250 h 10 m -5 -5 v 10;
 #X msg 639 -301 stroke red;
@@ -28,8 +25,6 @@
 #X obj 639 -112 loadbang;
 #X msg 639 -91 stroke red;
 #X obj 639 -69 draw path M 135 250 h 10 m -5 -5 v 10;
-#X msg 319 -371 stroke black \, stroke-width 3;
-#X msg 319 -441 stroke blue \, stroke-width 1;
 #X text 187 -464 Quadratic spline;
 #X text 190 -270 Cubic spline;
 #X obj 319 -419 draw path M 20 100 L 80 qmid 140 100;
@@ -39,33 +34,76 @@
 #X obj 638 -135 draw path M 95 c2 h 10 m -5 -5 v 10;
 #X obj 639 -418 draw path M 20 250 L 60 c1 100 c2 140 250;
 #X obj 639 -351 draw path M 20 250 C 60 c1 100 c2 140 250;
-#X connect 0 0 25 0;
-#X connect 1 0 24 0;
+#X msg 319 -441 stroke blue \, stroke-width 1 \, fill "";
+#X msg 319 -371 stroke black \, stroke-width 3 \, fill "";
+#X msg 639 -441 stroke blue \, stroke-width 1 \, fill "";
+#X msg 639 -371 stroke black \, stroke-width 3 \, fill "";
+#X connect 0 0 31 0;
+#X connect 1 0 32 0;
 #X connect 2 0 4 0;
 #X connect 4 0 3 0;
 #X connect 5 0 6 0;
-#X connect 6 0 30 0;
+#X connect 6 0 26 0;
 #X connect 7 0 8 0;
 #X connect 8 0 9 0;
-#X connect 10 0 12 0;
-#X connect 11 0 13 0;
-#X connect 12 0 33 0;
-#X connect 13 0 34 0;
-#X connect 14 0 16 0;
-#X connect 16 0 15 0;
+#X connect 10 0 33 0;
+#X connect 11 0 34 0;
+#X connect 12 0 14 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 27 0;
 #X connect 17 0 18 0;
-#X connect 18 0 31 0;
+#X connect 18 0 28 0;
 #X connect 19 0 20 0;
-#X connect 20 0 32 0;
-#X connect 21 0 22 0;
-#X connect 22 0 23 0;
-#X connect 24 0 29 0;
-#X connect 25 0 28 0;
-#X restore 331 245 group;
-#X obj 329 93 struct splines float x float y float qmid float c1 float
+#X connect 20 0 21 0;
+#X connect 31 0 24 0;
+#X connect 32 0 25 0;
+#X connect 33 0 29 0;
+#X connect 34 0 30 0;
+#X restore 311 265 group;
+#X obj 309 93 struct splines float x float y float qmid float c1 float
 c2;
-#X text 332 144 <- Click-drag the inner red crosses to change the y-value
+#X text 272 334 <- Click-drag the inner red crosses to change the y-value
 of the lines and curves.;
-#X text 473 221 <- works when transformed \, too;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
+#X text 363 221 <- works when transformed \, too;
+#N canvas 890 193 450 300 sfx~ 0;
+#X obj 109 51 inlet;
+#X obj 109 71 b;
+#X obj 109 253 *~;
+#X obj 109 207 line~;
+#X msg 109 162 1 10;
+#X msg 157 183 0 10;
+#X obj 156 162 del 10;
+#X obj 203 216 osc~ 330;
+#X msg 218 129 330;
+#X obj 203 162 f;
+#X obj 218 108 del 400;
+#X obj 109 295 outlet~;
+#X obj 203 183 + 0.25;
+#X obj 109 274 *~ 0.2;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 0 6 0;
+#X connect 1 0 9 0;
+#X connect 1 0 10 0;
+#X connect 2 0 13 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 5 0 3 0;
+#X connect 6 0 5 0;
+#X connect 7 0 2 1;
+#X connect 8 0 9 1;
+#X connect 9 0 12 0;
+#X connect 10 0 8 0;
+#X connect 12 0 9 1;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X restore 309 135 pd sfx~;
+#X obj 309 114 route change;
+#X obj 309 156 output~;
+#X msg 311 242 transform rotate \$1 80 150;
+#X connect 1 0 9 0;
+#X connect 3 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 9 0 2 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/stroke-dasharray.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/stroke-dasharray.pd
index 6003788e7..5bc51cfa1 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/stroke-dasharray.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/stroke-dasharray.pd
@@ -1,8 +1,60 @@
 #N struct blah float x float y;
-#N canvas 0 21 618 300 10;
-#X obj 99 13 struct blah float x float y;
-#X scalar blah 80 40 \;;
-#X msg 105 157 stroke-dasharray 1 2 3 4 5 6;
-#X obj 105 183 draw line 20 20 400 20;
-#X text 102 107 Stroke-dasharray method. Try it:;
-#X connect 2 0 3 0;
+#N canvas 19 30 618 455 10;
+#X obj 79 13 struct blah float x float y;
+#X scalar blah 82 64 \;;
+#X text 82 107 Stroke-dasharray method. Try it:;
+#X obj 111 199 line;
+#X obj 111 230 * 400;
+#X obj 111 251 t a a;
+#X msg 138 277 400 \$1;
+#X obj 138 298 -;
+#X obj 111 322 pack;
+#X msg 111 178 0 \, 1 2000;
+#X text 185 177 <- trick to animate drawing the path;
+#X msg 111 343 stroke-dasharray \$1 \$2;
+#X text 263 344 <- probably \$2 can just be a constant number greater
+than the total path distance.;
+#N canvas 433 184 450 300 sfx~ 0;
+#X obj 79 21 inlet;
+#X obj 79 112 osc~;
+#X obj 79 183 outlet~;
+#X obj 79 133 *~ 0;
+#X msg 145 88 1;
+#X obj 180 46 b;
+#X msg 180 88 0;
+#X obj 79 70 * 660;
+#X obj 79 91 + 220;
+#X obj 79 154 *~ 0.2;
+#X obj 180 67 del 50;
+#X connect 0 0 4 0;
+#X connect 0 0 5 0;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 3 0 9 0;
+#X connect 4 0 3 1;
+#X connect 5 0 10 0;
+#X connect 6 0 3 1;
+#X connect 7 0 8 0;
+#X connect 8 0 1 0;
+#X connect 9 0 2 0;
+#X connect 10 0 6 0;
+#X restore 192 233 pd sfx~;
+#X obj 192 254 output~;
+#X obj 86 422 draw line 0 0 400 0;
+#X msg 85 147 stroke-dasharray 3 6 9 12 15 18;
+#X obj 137 373 loadbang;
+#X msg 137 394 stroke black;
+#X connect 3 0 4 0;
+#X connect 3 0 13 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 5 1 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 11 0;
+#X connect 9 0 3 0;
+#X connect 11 0 15 0;
+#X connect 13 0 14 0;
+#X connect 16 0 15 0;
+#X connect 17 0 18 0;
+#X connect 18 0 15 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/tiger.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/tiger.pd
index 8d57b17b6..eb933b5f6 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/tiger.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/tiger.pd
@@ -1,57 +1,47 @@
 #N struct tiger float x float y;
-#N canvas 154 98 692 426 10;
-#X floatatom 208 83 5 0 0 0 - - -, f 5;
-#X obj 208 33 struct tiger float x float y;
-#N canvas 230 315 678 300 (subpatch) 0;
+#N struct tiger-array float x float y array a tiger;
+#N canvas -9 19 741 374 10;
+#X floatatom 309 80 5 0 0 0 - - -, f 5;
+#X obj 63 36 struct tiger float x float y;
+#N canvas 0 27 1366 684 (subpatch) 0;
 #X obj 160 20 loadbang;
 #X obj 22 87 draw path M -122.304 84.285 C -122.304 84.285 -122.203
 86.179 -123.027 86.16 C -123.851 86.141 -140.305 38.066 -160.833 40.309
 C -160.833 40.309 -143.05 32.956 -122.304 84.285 z;
-#X msg 22 65 fill #ffffff \, stroke #000000;
+#X msg 21 55 fill #ffffff \, stroke #000000;
 #X obj 20 180 draw path M -118.774 81.262 C -118.774 81.262 -119.323
 83.078 -120.092 82.779 C -120.86 82.481 -119.977 31.675 -140.043 26.801
 C -140.043 26.801 -120.82 25.937 -118.774 81.262 z;
-#X msg 20 157 fill #ffffff \, stroke #000000;
 #X obj 20 270 draw path M -91.284 123.59 C -91.284 123.59 -89.648 124.55
 -90.118 125.227 C -90.589 125.904 -139.763 113.102 -149.218 131.459
 C -149.218 131.459 -145.539 112.572 -91.284 123.59 z;
-#X msg 20 247 fill #ffffff \, stroke #000000;
 #X obj 20 340 draw path M -94.093 133.801 C -94.093 133.801 -92.237
 134.197 -92.471 134.988 C -92.704 135.779 -143.407 139.121 -146.597
 159.522 C -146.597 159.522 -149.055 140.437 -94.093 133.801 z;
-#X msg 20 319 fill #ffffff \, stroke #000000;
 #X obj 20 430 draw path M -98.304 128.276 C -98.304 128.276 -96.526
 128.939 -96.872 129.687 C -97.218 130.435 -147.866 126.346 -153.998
 146.064 C -153.998 146.064 -153.646 126.825 -98.304 128.276 z;
-#X msg 20 410 fill #ffffff \, stroke #000000;
 #X obj 20 515 draw path M -109.009 110.072 C -109.009 110.072 -107.701
 111.446 -108.34 111.967 C -108.979 112.488 -152.722 86.634 -166.869
 101.676 C -166.869 101.676 -158.128 84.533 -109.009 110.072 z;
-#X msg 20 495 fill #ffffff \, stroke #000000;
 #X obj 20 601 draw path M -116.554 114.263 C -116.554 114.263 -115.098
 115.48 -115.674 116.071 C -116.25 116.661 -162.638 95.922 -174.992
 112.469 C -174.992 112.469 -168.247 94.447 -116.554 114.263 z;
-#X msg 20 579 fill #ffffff \, stroke #000000;
 #X obj 20 690 draw path M -119.154 118.335 C -119.154 118.335 -117.546
 119.343 -118.036 120.006 C -118.526 120.669 -167.308 106.446 -177.291
 124.522 C -177.291 124.522 -173.066 105.749 -119.154 118.335 z;
-#X msg 20 669 fill #ffffff \, stroke #000000;
 #X obj 20 770 draw path M -108.42 118.949 C -108.42 118.949 -107.298
 120.48 -107.999 120.915 C -108.7 121.35 -148.769 90.102 -164.727 103.207
 C -164.727 103.207 -153.862 87.326 -108.42 118.949 z;
-#X msg 20 749 fill #ffffff \, stroke #000000;
 #X obj 20 860 draw path M -128.2 90 C -128.2 90 -127.6 91.8 -128.4
 92 C -129.2 92.2 -157.8 50.2 -177.001 57.8 C -177.001 57.8 -161.8 46
 -128.2 90 z;
-#X msg 20 840 fill #ffffff \, stroke #000000;
 #X obj 20 930 draw path M -127.505 96.979 C -127.505 96.979 -126.53
 98.608 -127.269 98.975 C -128.007 99.343 -164.992 64.499 -182.101 76.061
 C -182.101 76.061 -169.804 61.261 -127.505 96.979 z;
-#X msg 20 970 fill #ffffff \, stroke #000000;
 #X obj 20 1010 draw path M -127.62 101.349 C -127.62 101.349 -126.498
 102.88 -127.199 103.315 C -127.9 103.749 -167.969 72.502 -183.927 85.607
 C -183.927 85.607 -173.062 69.726 -127.62 101.349 z;
-#X msg 20 1050 fill #ffffff \, stroke #000000;
 #X obj 20 1090 draw path M -129.83 103.065 C -129.327 109.113 -128.339
 115.682 -126.6 118.801 C -126.6 118.801 -130.2 131.201 -121.4 144.401
 C -121.4 144.401 -121.8 151.601 -120.2 154.801 C -120.2 154.801 -116.2
@@ -105,7 +95,6 @@ C 307.401 156.001 307.001 154.401 303.801 150.401 C 303.801 150.401
 282.201 95.6 302.601 117.601 C 302.601 117.601 314.451 131.151 308.051
 108.351 C 308.051 108.351 298.94 84.341 299.717 80.045 L -129.83 103.065
 z;
-#X msg 20 1130 fill #ffffff \, stroke #000000;
 #X obj 20 1170 draw path M 299.717 80.245 C 300.345 80.426 302.551
 81.55 303.801 83.2 C 303.801 83.2 310.601 94 305.401 75.6 C 305.401
 75.6 296.201 46.8 305.001 58 C 305.001 58 311.001 65.2 307.801 51.6
@@ -1719,12 +1708,6 @@ C 256 273.5 269.5 292 269.5 299 C 269.5 299 272 291.5 270.5 287 z;
 ;
 #X msg 20 19290 fill black \, stroke #000000;
 #X connect 0 0 2 0;
-#X connect 0 0 4 0;
-#X connect 0 0 6 0;
-#X connect 0 0 8 0;
-#X connect 0 0 10 0;
-#X connect 0 0 12 0;
-#X connect 0 0 14 0;
 #X connect 0 0 16 0;
 #X connect 0 0 18 0;
 #X connect 0 0 20 0;
@@ -1952,19 +1935,19 @@ C 256 273.5 269.5 292 269.5 299 C 269.5 299 272 291.5 270.5 287 z;
 #X connect 0 0 464 0;
 #X connect 0 0 466 0;
 #X connect 0 0 468 0;
-#X connect 0 0 470 0;
-#X connect 0 0 472 0;
-#X connect 0 0 474 0;
-#X connect 0 0 476 0;
-#X connect 0 0 478 0;
-#X connect 0 0 480 0;
 #X connect 2 0 1 0;
-#X connect 4 0 3 0;
-#X connect 6 0 5 0;
-#X connect 8 0 7 0;
-#X connect 10 0 9 0;
-#X connect 12 0 11 0;
-#X connect 14 0 13 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 2 0 5 0;
+#X connect 2 0 6 0;
+#X connect 2 0 7 0;
+#X connect 2 0 8 0;
+#X connect 2 0 9 0;
+#X connect 2 0 10 0;
+#X connect 2 0 11 0;
+#X connect 2 0 12 0;
+#X connect 2 0 13 0;
+#X connect 2 0 14 0;
 #X connect 16 0 15 0;
 #X connect 18 0 17 0;
 #X connect 20 0 19 0;
@@ -2192,25 +2175,207 @@ C 256 273.5 269.5 292 269.5 299 C 269.5 299 272 291.5 270.5 287 z;
 #X connect 464 0 463 0;
 #X connect 466 0 465 0;
 #X connect 468 0 467 0;
-#X connect 470 0 469 0;
-#X connect 472 0 471 0;
-#X connect 474 0 473 0;
-#X connect 476 0 475 0;
-#X connect 478 0 477 0;
-#X connect 480 0 479 0;
-#X restore 208 140 group;
-#X text 253 140 <-- an awful lot of paths inside here. In a case like
+#X restore 309 157 group;
+#X text 354 157 <-- an awful lot of paths inside here. In a case like
 this it would probably be preferable to have a [draw svg] where you
 can just specify the file name. A GUI toolkit like Qt might be able
 to do this \, but tcl/tk cannot.;
-#X scalar tiger 54 126 \;;
-#X msg 208 109 transform scale \$1 rotate -20;
-#X obj 23 312 osc~ 1337;
-#X obj 23 353 output~;
-#X obj 252 62 loadbang;
-#X msg 252 83 0.3;
-#X connect 0 0 5 0;
-#X connect 5 0 2 0;
-#X connect 6 0 7 0;
-#X connect 8 0 9 0;
-#X connect 9 0 5 0;
+#X scalar tiger 157 216 \;;
+#X obj 100 303 output~;
+#X obj 309 36 loadbang;
+#X obj 309 101 * 0.01;
+#X msg 309 57 30;
+#X obj 63 78 bang;
+#N canvas 654 71 531 545 roar~ 0;
+#X obj 181 402 osc~;
+#X obj 181 457 *~;
+#X obj 281 405 osc~;
+#X obj 281 457 *~;
+#X obj 381 405 osc~;
+#X obj 381 457 *~;
+#X obj 181 323 route 0 1 2;
+#X msg 218 401 \$1 10;
+#X obj 218 422 line~;
+#X msg 318 405 \$1 10;
+#X obj 318 426 line~;
+#X msg 423 405 \$1 10;
+#X obj 423 426 line~;
+#N canvas 0 27 1366 684 meow 0;
+#X obj 97 159 inlet;
+#X obj 97 2337 outlet;
+#X msg 97 182 11.61 0 255.361 0.00249419 \, 0 1 29.8486 0.00174458
+\, 0 2 114.769 0.000644872 \, 11.61 0 255.601 0.00191493 \, 0 1 68.6718
+0.00138135 \, 0 2 389.327 0.000850687 \, 11.61 0 257.245 0.00234202
+\, 0 1 1306.1 0.00071378 \, 0 2 538.269 0.000982878 \, 11.61 0 28.3545
+0.00366453 \, 0 1 1290.69 0.000949597 \, 0 2 256.781 0.00303523 \,
+11.61 0 71.4289 0.000952803 \, 0 1 733.891 0.000552509 \, 0 2 264.456
+0.00316993 \, 11.61 0 237.325 0.00159043 \, 0 1 357.394 0.000933307
+\, 0 2 288.466 0.00196591 \, 11.61 0 259.206 0.005309 \, 0 1 356.147
+0.00262878 \, 0 2 121.85 0.000956728 \, 11.61 0 262.62 0.0118747 \,
+0 1 435.308 0.00158666 \, 0 2 550.524 0.000700413 \, 11.61 0 252.468
+0.039256 \, 0 1 466.565 0.00126326 \, 0 2 23.9515 0.00716692 \, 11.61
+0 263.487 0.195175 \, 0 1 322.998 0.032029 \, 0 2 33.8915 0.0129197
+\, 11.61 0 259.116 0.292292 \, 0 1 779.356 0.00871802 \, 0 2 458.016
+0.00257389 \, 11.61 0 257.706 0.312246 \, 0 1 772.101 0.00868926 \,
+0 2 521.937 0.00472514 \, 11.61 0 256.713 0.330743 \, 0 1 769.905 0.00950569
+\, 0 2 517.671 0.00509711 \, 11.61 0 255.397 0.356797 \, 0 1 762.446
+0.00968923 \, 0 2 495.264 0.0040165 \, 11.61 0 260.77 0.368738 \, 0
+1 2342.11 0.0162942 \, 0 2 514.739 0.0312752 \, 11.61 0 261.579 0.326885
+\, 0 1 2342.01 0.0589008 \, 0 2 517.659 0.0832965 \, 11.61 0 257.204
+0.279787 \, 0 1 2566.9 0.0543424 \, 0 2 515.319 0.102448 \, 11.61 0
+251.28 0.243684 \, 0 1 2518.22 0.0607776 \, 0 2 506.842 0.110925 \,
+11.61 0 246.703 0.231112 \, 0 1 2218.97 0.0716691 \, 0 2 493.28 0.102166
+\, 11.61 0 241.462 0.216905 \, 0 1 2160.46 0.0886409 \, 0 2 481.354
+0.100466 \, 11.61 0 236.01 0.185202 \, 0 1 2114.72 0.100048 \, 0 2
+471.508 0.0978454 \, 11.61 0 229.942 0.151638 \, 0 1 465.354 0.0958779
+\, 0 2 697.855 0.131316 \, 11.61 0 229.725 0.148697 \, 0 1 459.897
+0.093246 \, 0 2 692.392 0.189331 \, 11.61 0 228.17 0.142449 \, 0 1
+1815.26 0.112207 \, 0 2 686.199 0.252008 \, 11.61 0 224.498 0.123504
+\, 0 1 1803.88 0.148235 \, 0 2 680.466 0.278802 \, 11.61 0 225.13 0.118343
+\, 0 1 1795.5 0.174668 \, 0 2 677.831 0.295159 \, 11.61 0 1570.97 0.113698
+\, 0 1 1793.32 0.183458 \, 0 2 676.145 0.294944 \, 11.61 0 1568.33
+0.128363 \, 0 1 1789.43 0.176265 \, 0 2 674.222 0.285594 \, 11.61 0
+1567.44 0.152595 \, 0 1 1789.35 0.140566 \, 0 2 674.082 0.272208 \,
+11.61 0 1565.68 0.180708 \, 0 1 1790.02 0.107535 \, 0 2 673.537 0.256826
+\, 11.61 0 1563.46 0.21586 \, 0 1 1120.22 0.114881 \, 0 2 672.482 0.242339
+\, 11.61 0 1562.42 0.26542 \, 0 1 1119.61 0.122849 \, 0 2 672.865 0.231011
+\, 11.61 0 1553.85 0.25449 \, 0 1 1115.53 0.128038 \, 0 2 670.279 0.219953
+\, 11.61 0 1554.53 0.197238 \, 0 1 1115.96 0.127339 \, 0 2 670.272
+0.211953 \, 11.61 0 1332.69 0.112711 \, 0 1 1113.5 0.121878 \, 0 2
+668.92 0.19949 \, 11.61 0 1328.94 0.12086 \, 0 1 1107.69 0.122032 \,
+0 2 666.667 0.191018 \, 11.61 0 1318.43 0.138386 \, 0 1 1099.96 0.112768
+\, 0 2 662.021 0.175292 \, 11.61 0 1306.23 0.152879 \, 0 1 1094.59
+0.105613 \, 0 2 659.191 0.160515 \, 11.61 0 1298.39 0.156277 \, 0 1
+1087.2 0.0904649 \, 0 2 655.864 0.138786 \, 11.61 0 1304.78 0.102055
+\, 0 1 1091.48 0.0876707 \, 0 2 656.832 0.123065 \, 11.61 0 220.315
+0.0812276 \, 0 1 1083.99 0.101195 \, 0 2 658.021 0.11556 \, 11.61 0
+222.625 0.0850247 \, 0 1 1060.54 0.117195 \, 0 2 658.591 0.10173 \,
+11.61 0 225.318 0.0927653 \, 0 1 887.319 0.0754559 \, 0 2 666.913 0.0942155
+\, 11.61 0 227.859 0.101391 \, 0 1 876.081 0.068262 \, 0 2 668.664
+0.0779699 \, 11.61 0 228.916 0.105734 \, 0 1 894.803 0.0134622 \, 0
+2 667.424 0.0517358 \, 11.61 0 225.844 0.0962918 \, 0 1 902.157 0.00727116
+\, 0 2 652.147 0.0326469 \, 11.61 0 224.746 0.0826158 \, 0 1 444.537
+0.00537328 \, 0 2 676.463 0.0114515 \, 11.61 0 225.28 0.0620762 \,
+0 1 25.7836 0.00497092 \, 0 2 661.641 0.00481306 \, 11.61 0 228.022
+0.0372205 \, 0 1 455.591 0.00165203 \, 0 2 898.748 0.00222254 \, 11.61
+0 233.243 0.0157903 \, 0 1 476.212 0.00127209 \, 0 2 898.475 0.0018215
+\, 11.61 0 223.81 0.00348615 \, 0 1 253.858 0.00357854 \, 0 2 38.486
+0.00165932 \, 11.61 0 390.267 0.000733509 \, 0 1 876.47 0.0015206 \,
+0 2 105.877 0.000815398 \, 11.61 0 1297.19 0.000990417 \, 0 1 891.122
+0.00104198 \, 0 2 212.515 0.000885851 \, 11.61 0 217.201 0.000852403
+\, 0 1 330.85 0.000751027 \, 0 2 33.8897 0.00546309 \, 11.61 0 125.659
+0.0014525 \, 0 1 494.009 0.000946342 \, 0 2 234.835 0.000902006 \,
+11.61 0 86.1328 0.00258973 \, 0 1 243.394 0.00125927 \, 0 2 237.5 0.0020027
+\, 11.61 0 81.0139 0.00593609 \, 0 1 879.538 0.000776519 \, 0 2 229.974
+0.00118105 \, 11.61 0 884.538 0.000761707 \, 0 1 610.62 0.000989435
+\, 0 2 288.779 0.0017356 \, 11.61 0 235.783 0.00191406 \, 0 1 310.901
+0.000824613 \, 0 2 59.7412 0.00338932 \, 11.61 0 231.585 0.00129186
+\, 0 1 324.901 0.00157807 \, 0 2 532.508 0.000995176 \, 11.61 0 35.5885
+0.00885179 \, 0 1 277.573 0.0033037 \, 0 2 166.4 0.0027316 \, 11.61
+0 41.21 0.0269299 \, 0 1 258 0.010608 \, 0 2 951.9 0.0026276 \, 11.61
+0 51.9279 0.00735665 \, 0 1 283.505 0.00213547 \, 0 2 178.279 0.00162383
+\, 11.61 0 47.754 0.0109488 \, 0 1 256.736 0.00375227 \, 0 2 841.202
+0.00164402 \, 11.61 0 240.254 0.00211805 \, 0 1 191.787 0.00306784
+\, 0 2 355.289 0.00128734 \, 11.61 0 242.655 0.00198385 \, 0 1 25.1866
+0.0131294 \, 0 2 64.5996 0.00159159 \, 11.61 0 239.003 0.00188621 \,
+0 1 791.806 0.00150726 \, 0 2 113.32 0.00307935 \, 11.61 0 268.968
+0.00373094 \, 0 1 782.606 0.00116552 \, 0 2 284.378 0.00222378 \, 11.61
+0 24.2341 0.044781 \, 0 1 152.83 0.00336931 \, 0 2 251.937 0.00290751
+\, 11.61 0 21.5332 0.0271017 \, 0 1 107.666 0.00757902 \, 0 2 193.799
+0.00157901 \, 11.61 0 296.205 0.00213384 \, 0 1 107.666 0.00316393
+\, 0 2 218.911 0.0032709 \, 11.61 0 275.156 0.00238776 \, 0 1 844.632
+0.00108507 \, 0 2 172.266 0.00130545 \, 11.61 0 312.854 0.00299665
+\, 0 1 284.077 0.00250141 \, 0 2 82.2415 0.0231099 \, 11.61 0 322.998
+0.00126827 \, 0 1 263.41 0.00209481 \, 0 2 921.832 0.00129723;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X restore 36 57 pd meow;
+#X obj 228 228 list split 1;
+#X obj 146 228 list split 1;
+#X obj 180 263 pipe f f f 0;
+#X obj 181 370 unpack 0 0;
+#X obj 281 370 unpack 0 0;
+#X obj 381 370 unpack 0 0;
+#X obj 146 174 textfile;
+#X obj 36 78 list prepend add;
+#X obj 36 99 list trim;
+#X obj 146 195 t a a;
+#X obj 92 229 b;
+#X obj 181 300 pack 0 0 0;
+#X obj 36 33 loadbang;
+#X msg 146 144 rewind \, bang;
+#X obj 146 33 inlet;
+#X obj 146 91 spigot 1;
+#X obj 297 83 f 1;
+#X obj 146 112 t b b;
+#X obj 226 104 f 0;
+#X obj 181 507 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 33 0;
+#X connect 2 0 3 0;
+#X connect 3 0 33 0;
+#X connect 4 0 5 0;
+#X connect 5 0 33 0;
+#X connect 6 0 17 0;
+#X connect 6 1 18 0;
+#X connect 6 2 19 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 1;
+#X connect 9 0 10 0;
+#X connect 10 0 3 1;
+#X connect 11 0 12 0;
+#X connect 12 0 5 1;
+#X connect 13 0 21 0;
+#X connect 14 0 16 3;
+#X connect 15 1 16 0;
+#X connect 16 0 24 0;
+#X connect 16 0 25 0;
+#X connect 16 1 25 1;
+#X connect 16 2 25 2;
+#X connect 17 0 0 0;
+#X connect 17 1 7 0;
+#X connect 18 0 2 0;
+#X connect 18 1 9 0;
+#X connect 19 0 4 0;
+#X connect 19 1 11 0;
+#X connect 20 0 23 0;
+#X connect 20 1 30 0;
+#X connect 21 0 22 0;
+#X connect 22 0 20 0;
+#X connect 23 0 15 0;
+#X connect 23 1 14 0;
+#X connect 24 0 20 0;
+#X connect 25 0 6 0;
+#X connect 26 0 13 0;
+#X connect 27 0 20 0;
+#X connect 28 0 29 0;
+#X connect 29 0 31 0;
+#X connect 30 0 29 1;
+#X connect 31 0 27 0;
+#X connect 31 1 32 0;
+#X connect 32 0 29 1;
+#X restore 63 259 pd roar~;
+#X msg 309 126 transform scale \$1 rotate -45;
+#X text 144 98 Enter the Tiger!;
+#X obj 63 57 route enter;
+#N canvas 609 64 706 300 tiger-array 0;
+#X obj 75 19 struct tiger-array float x float y array a tiger;
+#X scalar tiger-array 108 200 \; 0 0 \; 200 30 \; 400 -50 \; \;;
+#X obj 187 66 plot a 0 1 0 0 20;
+#X msg 406 20 traverse pd-tiger-array \, next;
+#X obj 406 41 pointer;
+#X obj 336 74 setsize tiger-array a;
+#X floatatom 336 42 5 0 0 0 - - -, f 5;
+#X connect 3 0 4 0;
+#X connect 4 0 5 1;
+#X connect 6 0 5 0;
+#X restore 566 257 pd tiger-array;
+#X connect 0 0 7 0;
+#X connect 1 0 13 0;
+#X connect 6 0 8 0;
+#X connect 7 0 11 0;
+#X connect 8 0 0 0;
+#X connect 9 0 10 0;
+#X connect 10 0 5 0;
+#X connect 11 0 2 0;
+#X connect 13 0 9 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/unit-circle.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/unit-circle.pd
index 8d7f47fa2..7c011a78d 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/unit-circle.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/unit-circle.pd
@@ -1,156 +1,182 @@
-#N struct unit_circle float x float y float rx float ry float lx array
-a balls float l2y;
-#N struct balls float y;
-#N canvas 84 19 1215 585 10;
-#X scalar unit_circle 203 99 99.9997 -0.238894 778 -0.318509 \; 5.02189
-\; 10.0311 \; 15.015 \; 19.961 \; 24.8566 \; 29 \; 34 \; 35 \; 33 \;
-30 \; 26.6667 \; 23.3333 \; 20 \; 13 \; 5.99999 \; -7.00001 \; -12
-\; -12 \; -12 \; -13 \; -14 \; -14.5714 \; -15.1429 \; -15.7143 \;
--16.2857 \; -16.8572 \; -17.4286 \; -18 \; -18 \; 23 \; 24 \; 24 \;
-24.3333 \; 24.6667 \; 25 \; 26 \; 26 \; 27 \; 28 \; 28 \; 29 \; 29
-\; 29 \; 30 \; 30 \; 39 \; 71 \; 74 \; 73 \; 58.8815 \; 54.7482 \;
-50.4768 \; 46.0779 \; 41.5627 \; 36.9427 \; 32.2295 \; 27.4349 \; 22.5711
-\; 17.6503 \; 12.685 \; 7.68767 \; 2.67094 \; -2.35253 \; -7.37006
-\; -12.369 \; -17.3367 \; -22.2607 \; -27.1284 \; -31.9278 \; -36.6466
-\; -41.2728 \; -45.795 \; -50.2015 \; -54.4814 \; -58.6238 \; -62.6183
-\; -66.4547 \; -70.1234 \; -73.6152 \; -76.9212 \; -80.0331 \; -82.9431
-\; -85.6437 \; -88.1282 \; -90.3903 \; -92.4243 \; -94.225 \; -95.788
-\; -97.1093 \; -98.1855 \; -99.0139 \; -99.5925 \; -99.9197 \; -99.9948
-\; -99.8176 \; -99.3884 \; -98.7085 \; -97.7794 \; -96.6037 \; -95.1841
-\; -93.5243 \; -91.6285 \; -89.5015 \; -87.1487 \; -84.5759 \; -81.7896
-\; -78.797 \; -75.6055 \; -72.2233 \; -68.6588 \; -64.921 \; -61.0194
-\; -56.9638 \; -52.7644 \; -48.4319 \; -43.9773 \; -39.4115 \; -34.7464
-\; -29.9935 \; -25.165 \; -20.273 \; -15.3298 \; -10.348 \; -5.33997
-\; -0.318509 \; \;;
-#X obj 377 430 pointer;
-#X floatatom 116 119 5 0 0 0 - - -, f 5;
-#X obj 100 328 * 6.28;
-#X obj 100 379 sin;
-#X obj 100 400 * 100;
-#X obj 154 379 cos;
-#X obj 100 349 t a a;
-#X obj 154 400 * 100;
-#X obj 100 303 + 0.25;
-#X obj 100 226 / 180;
-#X obj 100 278 * -1;
-#X obj 256 373 + 150;
-#X obj 256 316 * 628;
-#X obj 355 482 setsize unit_circle a;
-#X obj 346 510 element unit_circle a;
-#X obj 283 535 set balls y;
-#X obj 298 381 t a a;
-#X obj 231 474 spigot;
-#X msg 346 409 0;
-#X obj 298 408 change;
-#X msg 264 440 1;
-#X obj 100 247 t a a a;
-#X obj 207 359 * 6.28;
-#X obj 207 380 sin;
-#X obj 207 400 * 100;
-#X msg 100 75 0 \, 180 5000;
-#N canvas 433 184 450 300 nested 0;
-#X obj 171 35 struct balls float y;
-#X restore 704 173 pd nested;
-#X obj 704 36 struct unit_circle float x float y float rx float ry
-float lx array a balls float l2y;
-#X obj 100 535 set unit_circle rx ry lx l2y;
-#X obj 377 388 loadbang;
-#X obj 100 96 line 0 40;
-#X obj 100 45 bng 21 250 50 0 empty empty Go! 28 10 0 10 -4034 -1 -1
+#N struct unit_circle float x float y;
+#N canvas -9 19 683 520 10;
+#X scalar unit_circle 103 387 \;;
+#X obj 310 166 * 6.28;
+#X obj 310 212 sin;
+#X obj 310 251 * 100;
+#X obj 364 212 cos;
+#X obj 310 187 t a a;
+#X obj 310 146 + 0.25;
+#X obj 310 94 line 0 40;
+#X obj 310 5 bng 21 250 50 0 empty empty Go! 28 10 0 10 -4034 -1 -1
 ;
-#X msg 704 114 transform translate 75 0 scale \$1;
-#X obj 704 72 loadbang;
-#X text 229 170 This unit circle demo (which I just realized spins
-the wrong direction-- oops) shows some of the benefits and drawbacks
-of [draw] as it's currently implemented:;
-#X text 230 214 Benefits:;
-#X text 230 229 * you can easily scale the entire group;
-#X text 230 244 * a struct field can be used in different [draw] objects
-;
-#X text 345 264 Drawbacks:;
-#X text 345 281 * [draw group] doesn't affect [plot]. Thus I have to
-manually scale the x-spacing and y value accordingly.;
-#X text 345 307 * traversing the canvas is a pain. Fortunately \, you
-only need to do it once for arrays. But if you modify the patch at
-all you have to traverse again. This means it's way easier to send
-messages to [draw]-- which affect all scalars-- than it is to use field
-variables-- which are local to a particular scalar.;
-#X obj 298 360 div 5;
-#N canvas 655 108 616 478 (subpatch) 0;
+#X obj 52 101 loadbang;
+#N canvas 274 34 770 578 (subpatch) 0;
+#X obj 117 -58 draw path m -120 0 l 120 0 m 0 120 l 0 -240 0 20 150
+0 m -150 100 l 150 0 m -150 100 l 150 0 m 0 20 l 0 -240 0 20 150 0
+m -150 100 l 150 0 m -150 100 l 150 0 m 0 20 l 0 -240 0 20 150 0 m
+-150 100 l 150 0 m -150 100 l 150 0 m 0 20 l 0 -240 0 20 150 0 m -150
+100 l 150 0 m -150 100 l 150 0 m 0 20 l 0 -240 0 20 150 0 m -150 100
+l 150 0 m -150 100 l 150 0 m 0 20 l 0 -240 0 20 20 0 m -20 100 l 20
+0 m -20 100 l 20 0;
 #X obj 117 -140 draw circle 0 0 100;
-#X obj 117 -77 draw line 0 0 rx ry;
-#X obj 117 -1 draw line 150 0 lx 0;
-#X obj 117 62 draw path M 0 100 L 0 120 0 -120 M 0 0 L -120 0 798 0
-M 0 -100 l 0 0 798 0 M 0 100 l 798 0 M 150 -120 l 0 0 0 240 m 157 0
-l 0 0 0 -240 m 157 0 l 0 0 0 240 m 157 0 l 0 0 0 -240 m 157 0 l 0 0
-0 240;
-#X msg 117 41 stroke-width 2 \, stroke gray \, stroke-opacity 0.6;
-#X msg 117 -35 stroke-width 4 \, stroke blue \, stroke-opacity 0.6
-\, stroke-linecap 1;
 #X msg 117 -174 fill black \, fill-opacity 0.1 \, stroke blue \, stroke-opacity
 0.6 \, stroke-width 4;
-#X obj 117 171 draw line rx ry lx l2y;
-#X msg 117 149 stroke orange \, stroke-width 2;
-#X msg 117 -98 stroke-width 3 \, stroke blue \, stroke-opacity 0.6
-;
-#X obj 117 127 loadbang;
 #X obj 117 -195 loadbang;
-#X obj 117 -119 loadbang;
-#X obj 117 -56 loadbang;
-#X obj 117 20 loadbang;
-#X obj 119 213 plot a 0 1 150 0 5;
-#X connect 4 0 3 0;
-#X connect 5 0 2 0;
-#X connect 6 0 0 0;
-#X connect 8 0 7 0;
-#X connect 9 0 1 0;
-#X connect 10 0 8 0;
-#X connect 11 0 6 0;
-#X connect 12 0 9 0;
-#X connect 13 0 5 0;
-#X connect 14 0 4 0;
-#X restore 704 136 group;
-#X msg 704 93 0.3;
-#X msg 377 409 traverse pd-unit-circle.pd \, next;
-#X connect 1 0 14 1;
-#X connect 1 0 15 1;
-#X connect 1 0 29 4;
-#X connect 2 0 10 0;
-#X connect 3 0 7 0;
-#X connect 4 0 5 0;
-#X connect 5 0 29 0;
-#X connect 6 0 8 0;
-#X connect 7 0 4 0;
-#X connect 7 1 6 0;
-#X connect 8 0 29 1;
-#X connect 9 0 3 0;
-#X connect 10 0 22 0;
-#X connect 11 0 9 0;
-#X connect 12 0 29 2;
+#X obj 117 -100 loadbang;
+#X msg 166 154 stroke-width 4 \, stroke blue \, stroke-opacity 0.6
+\, stroke-linecap 1;
+#X obj 166 133 loadbang;
+#X msg 116 92 x2 \$1;
+#X msg 174 93 y2 \$1;
+#X obj 116 190 draw line 0 0 100 0;
+#X obj 116 67 r arc-x;
+#X obj 174 67 r arc-y;
+#X obj 507 329 draw line 0 0 0 0;
+#X msg 586 248 y1 \$1;
+#X msg 528 248 x1 \$1;
+#X msg 594 297 x2 \$1 \, y2 \$2;
+#X obj 586 223 r arc-y;
+#X obj 528 223 r arc-x;
+#X obj 594 274 r sine-xy;
+#X msg 184 258 stroke-width 4 \, stroke blue \, stroke-opacity 0.6
+\, stroke-linecap 1;
+#X obj 184 237 loadbang;
+#X obj 184 292 draw line 150 0 0 0;
+#X msg 116 260 x2 \$1;
+#X obj 116 237 r sine-xy;
+#X obj 504 39 list prepend points;
+#X obj 504 17 r sine-points;
+#X obj 505 135 draw polyline;
+#X obj 525 89 loadbang;
+#X obj 507 175 loadbang;
+#X msg 507 196 stroke-width 2 \, stroke orange;
+#X obj 504 61 list trim;
+#X text 511 -41 <- grid;
+#X text 602 135 <- sine wave;
+#X text 245 189 <- radius line;
+#X text 313 292 <- progress line;
+#X text 624 329 <- guide line;
+#X msg 117 -79 stroke-width 2 \, stroke gray \, stroke-opacity 0.6
+\, fill white;
+#X msg 525 110 stroke-width 3 \, stroke red \, fill "";
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 36 0;
+#X connect 5 0 9 0;
+#X connect 6 0 5 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
+#X connect 10 0 7 0;
+#X connect 11 0 8 0;
 #X connect 13 0 12 0;
-#X connect 13 0 42 0;
-#X connect 15 0 16 1;
-#X connect 17 0 20 0;
-#X connect 17 1 19 0;
-#X connect 18 0 29 3;
-#X connect 18 0 16 0;
-#X connect 19 0 18 1;
-#X connect 20 0 14 0;
-#X connect 20 0 15 0;
-#X connect 20 0 21 0;
-#X connect 21 0 18 1;
-#X connect 22 0 11 0;
-#X connect 22 1 23 0;
-#X connect 22 2 13 0;
-#X connect 23 0 24 0;
-#X connect 24 0 25 0;
-#X connect 25 0 18 0;
-#X connect 26 0 31 0;
-#X connect 30 0 45 0;
-#X connect 31 0 10 0;
-#X connect 32 0 26 0;
-#X connect 33 0 43 0;
-#X connect 34 0 44 0;
-#X connect 42 0 17 0;
-#X connect 44 0 33 0;
-#X connect 45 0 1 0;
+#X connect 14 0 12 0;
+#X connect 15 0 12 0;
+#X connect 16 0 13 0;
+#X connect 17 0 14 0;
+#X connect 18 0 15 0;
+#X connect 19 0 21 0;
+#X connect 20 0 19 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
+#X connect 24 0 30 0;
+#X connect 25 0 24 0;
+#X connect 27 0 37 0;
+#X connect 28 0 29 0;
+#X connect 29 0 12 0;
+#X connect 30 0 26 0;
+#X connect 36 0 0 0;
+#X connect 37 0 26 0;
+#X restore 52 247 group;
+#X obj 92 5 struct unit_circle float x float y;
+#X obj 364 251 * 100;
+#X obj 548 243 * 600;
+#X obj 548 264 + 150;
+#X obj 501 350 list prepend;
+#X obj 501 371 t a;
+#X obj 310 31 t b b;
+#X obj 310 115 t a a;
+#X obj 501 297 list prepend;
+#X msg 606 171 150 0;
+#X obj 310 287 s arc-x;
+#X obj 364 287 s arc-y;
+#X obj 509 322 s sine-xy;
+#X obj 501 402 s sine-points;
+#X floatatom 140 122 5 0 0 0 scale - -, f 5;
+#X msg 52 122 0.42;
+#X text 432 338 + 1;
+#X text 432 422 - 1;
+#X text 443 382 0;
+#X text 161 444 0;
+#X text 212 444 1/2*Pi;
+#X text 285 444 Pi;
+#X text 335 444 3/2*Pi;
+#X text 405 444 2*Pi;
+#X floatatom 186 122 5 0 0 1 rotate - -, f 5;
+#X obj 186 143 t b a;
+#X obj 140 143 * 0.01;
+#X msg 52 213 transform scale \$1 rotate \$2 150 0;
+#X obj 140 183 pack 0.42 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array csm 62079 float 2 black black;
+#X coords 0 1 62078 -1 114 59 1;
+#X restore 509 6 graph;
+#X obj 422 238 output~;
+#X msg 310 73 0 \, 1 4200;
+#N canvas 433 184 450 300 array-init 0;
+#X obj 86 110 soundfiler;
+#X obj 86 65 loadbang;
+#X msg 86 88 read -resize voice.wav csm;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 509 73 pd array-init;
+#N canvas 433 184 450 300 sfx~ 0;
+#X obj 62 18 inlet;
+#X obj 62 84 line~;
+#X obj 62 105 +~ 31039.5;
+#X obj 62 42 * 34039.5;
+#X obj 62 63 pack 0 100;
+#X obj 62 126 tabread4~ csm;
+#X obj 62 147 outlet~;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X restore 422 216 pd sfx~;
+#X connect 1 0 5 0;
+#X connect 2 0 3 0;
+#X connect 3 0 21 0;
+#X connect 4 0 12 0;
+#X connect 4 0 44 0;
+#X connect 5 0 2 0;
+#X connect 5 1 4 0;
+#X connect 6 0 1 0;
+#X connect 7 0 18 0;
+#X connect 8 0 17 0;
+#X connect 9 0 26 0;
+#X connect 12 0 19 0;
+#X connect 12 0 22 0;
+#X connect 13 0 14 0;
+#X connect 14 0 19 1;
+#X connect 15 0 16 0;
+#X connect 16 0 15 1;
+#X connect 16 0 24 0;
+#X connect 17 0 42 0;
+#X connect 17 1 20 0;
+#X connect 18 0 6 0;
+#X connect 18 1 13 0;
+#X connect 19 0 15 0;
+#X connect 19 0 23 0;
+#X connect 20 0 15 1;
+#X connect 25 0 37 0;
+#X connect 26 0 38 0;
+#X connect 35 0 36 0;
+#X connect 36 0 39 0;
+#X connect 36 1 39 1;
+#X connect 37 0 39 0;
+#X connect 38 0 10 0;
+#X connect 39 0 38 0;
+#X connect 42 0 7 0;
+#X connect 44 0 41 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-demos/violin.pd b/pd/doc/4.data.structures/pd-l2ork/ds-demos/violin.pd
index 06ed514bf..0e76cfc82 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-demos/violin.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-demos/violin.pd
@@ -19,7 +19,7 @@
 #X msg 249 404 0 30;
 #X msg 64 114 pos 280 \$1;
 #X obj 331 292 tgl 15 0 empty empty Autostroke 17 7 0 10 -4034 -1 -1
-1 1;
+0 1;
 #X obj 331 515 * 127;
 #X msg 42 364 set \$1;
 #X obj 102 329 r capo;
@@ -27,7 +27,7 @@
 -1 -1 0 1;
 #X obj 331 255 metro 500;
 #X obj 422 192 nbx 5 14 -1e+37 1e+37 0 1 empty auto-improve-rcv Auto-improve
-60 8 0 10 -4034 -1 -1 160 256 0;
+60 8 0 10 -4034 -1 -1 154 256 0;
 #X msg 331 467 \$1 \$2;
 #X obj 331 439 pack 0 400;
 #X obj 482 276 - 50;
@@ -124,7 +124,7 @@
 #X obj 144 45 f;
 #X obj 144 72 + 1;
 #X obj 144 144 t b a;
-#X msg 144 222 \$4;
+#X msg 144 222 \$8;
 #X msg 144 168 0 4 2 5 4 7 5 2;
 #X msg 172 191 set \, adddollar \$1;
 #X obj 192 57 mod 16;
@@ -199,7 +199,7 @@
 #X obj 165 244 mod;
 #X obj 165 160 f;
 #X obj 197 160 + 1;
-#X msg 146 367 \$657 \$1;
+#X msg 146 367 \$148 \$149;
 #X obj 245 27 inlet;
 #X obj 165 273 + 1;
 #X obj 305 244 mod;
@@ -422,7 +422,7 @@
 #X obj 286 176 r end;
 #X msg 286 202 0;
 #X text 156 188 Play some Bach;
-#X obj 208 611 ezoutput~;
+#X obj 191 611 ezoutput~;
 #X obj 249 281 r end;
 #X obj 249 303 t b b;
 #X obj 216 269 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
@@ -438,12 +438,9 @@
 #X obj 331 493 line;
 #X text 330 134 Use the green buttons to "learn" the violin.;
 #X obj 137 217 + 1;
-#X text 310 636 2014 Jonathan Wilkes;
+#X text 293 636 2014 Jonathan Wilkes;
 #X obj 137 150 loadbang;
-#N canvas 315 300 450 300 (subpatch) 0;
-#X msg 428 172 scalar foo 20 20;
-#X obj 428 193 s c;
-#X obj 428 214 namecanvas c;
+#N canvas 0 27 1366 684 (subpatch) 0;
 #X obj 595 303 loadbang;
 #X msg 595 325 fill black \, fill-rule 1 \, stroke-width 0;
 #X obj 199 268 loadbang;
@@ -542,7 +539,6 @@ c -6.192 -0.396 -13.752 -0.756 -18.396 -2.052 C 129.365 49.41 126.414
 47.25 124.793 44.262 z;
 #X obj 624 2217 draw path M 98.657 80.73 l 59.724 -4.68 l 281.484 -1.98
 l -0.217 2.232 l -281.267 1.476 l -59.724 4.428 V 80.73 z;
-#X obj 228 4006;
 #X obj 217 3425 draw path M 451.494 71.334 v -14.22 c 0.611 -0.648
 0.863 -1.224 0.611 -1.728 c -0.289 -0.576 -1.08 -1.08 -2.232 -1.512
 c 1.045 -1.476 1.691 -3.168 2.088 -5.364 c 0.289 -2.16 -0.504 -6.156
@@ -804,72 +800,71 @@ c 0.631 -0.071 0.188 0.931 0.96 0.72 c -0.03 -0.601 -0.458 -0.751 0.24
 #X obj 521 65 / 3.14;
 #X floatatom 521 86 5 0 0 0 - - -, f 5;
 #X connect 0 0 1 0;
-#X connect 3 0 4 0;
-#X connect 4 0 69 0;
-#X connect 5 0 43 0;
-#X connect 15 0 16 0;
-#X connect 16 0 7 0;
-#X connect 17 0 51 0;
-#X connect 19 0 52 0;
-#X connect 20 0 53 0;
-#X connect 21 0 54 0;
-#X connect 22 0 23 0;
-#X connect 23 0 55 0;
-#X connect 24 0 44 0;
-#X connect 25 0 26 0;
-#X connect 26 0 57 0;
-#X connect 27 0 45 0;
-#X connect 28 0 29 0;
-#X connect 29 0 59 0;
-#X connect 30 0 46 0;
+#X connect 1 0 65 0;
+#X connect 2 0 39 0;
+#X connect 11 0 12 0;
+#X connect 12 0 4 0;
+#X connect 13 0 47 0;
+#X connect 15 0 48 0;
+#X connect 16 0 49 0;
+#X connect 17 0 50 0;
+#X connect 18 0 19 0;
+#X connect 19 0 51 0;
+#X connect 20 0 40 0;
+#X connect 21 0 22 0;
+#X connect 22 0 53 0;
+#X connect 23 0 41 0;
+#X connect 24 0 25 0;
+#X connect 25 0 55 0;
+#X connect 26 0 42 0;
+#X connect 27 0 28 0;
+#X connect 28 0 57 0;
+#X connect 29 0 58 0;
+#X connect 30 0 59 0;
 #X connect 31 0 32 0;
-#X connect 32 0 61 0;
-#X connect 33 0 62 0;
+#X connect 32 0 62 0;
+#X connect 33 0 34 0;
 #X connect 34 0 63 0;
-#X connect 35 0 36 0;
-#X connect 36 0 66 0;
-#X connect 37 0 38 0;
-#X connect 38 0 67 0;
-#X connect 39 0 47 0;
-#X connect 40 0 48 0;
-#X connect 41 0 49 0;
-#X connect 42 0 50 0;
-#X connect 43 0 6 0;
-#X connect 44 0 56 0;
-#X connect 45 0 58 0;
-#X connect 46 0 60 0;
-#X connect 47 0 68 0;
-#X connect 48 0 11 0;
-#X connect 49 0 12 0;
-#X connect 50 0 13 0;
-#X connect 51 0 18 0;
-#X connect 52 0 14 0;
-#X connect 53 0 8 0;
-#X connect 54 0 9 0;
-#X connect 62 0 64 0;
-#X connect 63 0 65 0;
+#X connect 35 0 43 0;
+#X connect 36 0 44 0;
+#X connect 37 0 45 0;
+#X connect 38 0 46 0;
+#X connect 39 0 3 0;
+#X connect 40 0 52 0;
+#X connect 41 0 54 0;
+#X connect 42 0 56 0;
+#X connect 43 0 64 0;
+#X connect 44 0 7 0;
+#X connect 45 0 8 0;
+#X connect 46 0 9 0;
+#X connect 47 0 14 0;
+#X connect 48 0 10 0;
+#X connect 49 0 5 0;
+#X connect 50 0 6 0;
+#X connect 58 0 60 0;
+#X connect 59 0 61 0;
+#X connect 66 0 67 0;
+#X connect 67 0 77 0;
+#X connect 68 0 69 0;
+#X connect 69 0 66 0;
+#X connect 69 1 67 1;
 #X connect 70 0 71 0;
-#X connect 71 0 81 0;
+#X connect 71 0 68 0;
+#X connect 71 1 67 2;
 #X connect 72 0 73 0;
 #X connect 73 0 70 0;
-#X connect 73 1 71 1;
-#X connect 74 0 75 0;
-#X connect 75 0 72 0;
-#X connect 75 1 71 2;
-#X connect 76 0 77 0;
-#X connect 77 0 74 0;
-#X connect 77 1 71 3;
-#X connect 78 0 87 0;
-#X connect 80 0 86 0;
-#X connect 81 0 69 0;
-#X connect 82 0 83 0;
-#X connect 83 0 84 0;
+#X connect 73 1 67 3;
+#X connect 74 0 83 0;
+#X connect 76 0 82 0;
+#X connect 77 0 65 0;
+#X connect 78 0 79 0;
+#X connect 79 0 80 0;
+#X connect 80 0 81 0;
+#X connect 82 0 67 0;
+#X connect 83 0 77 0;
 #X connect 84 0 85 0;
-#X connect 86 0 71 0;
-#X connect 87 0 81 0;
-#X connect 88 0 89 0;
-#X connect 89 0 90 0;
-#X connect 90 0 91 0;
+#X connect 85 0 86 0;
+#X connect 86 0 87 0;
 #X restore 137 114 group;
 #X obj 137 50 struct violin float x float y;
 #X obj 137 72 loadbang;
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 80d51da29..99436b795 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
@@ -1,5 +1,5 @@
 #N struct yin-yang float x float y float yin float yang;
-#N canvas 0 19 660 636 10;
+#N canvas 383 44 660 636 10;
 #X obj 383 468 pointer;
 #X msg 406 439 next;
 #X obj 291 415 t a a;
@@ -66,8 +66,8 @@
 #X connect 13 0 6 0;
 #X connect 14 0 8 0;
 #X restore 151 581 group;
-#X scalar yin-yang 86 124 146.137 108.863 \;;
-#X scalar yin-yang 284 106 0 255 \;;
+#X scalar yin-yang 96 94 146.137 108.863 \;;
+#X scalar yin-yang 314 96 0 255 \;;
 #X msg 383 412 traverse pd-yin-yang.pd \, next;
 #X connect 0 0 26 2;
 #X connect 1 0 0 0;
-- 
GitLab