diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/00.under.construction.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/00.under.construction.pd
index e638b53188540372eaa2b931956e07a47694662b..47b7a28209e799c4bfddb9a47e27b5a83b9920fc 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/00.under.construction.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/00.under.construction.pd
@@ -1,86 +1,112 @@
 #N struct working-man-scalar float x float y;
-#N canvas 226 49 895 618 10;
-#N canvas 695 40 671 300 template 0;
-#X obj 115 -2451 loadbang;
-#X obj 115 -2409 draw path M 41.184 453.06 C 18.504 453.06 0 434.556
-0 411.804 C 0 404.532 1.872 397.476 5.544 391.212 L 219.528 20.628
-C 235.44 -6.876 274.968 -6.876 290.88 20.628 L 504.864 391.212 C 508.464
+#N canvas 0 19 895 618 10;
+#N canvas 195 124 671 300 template 1;
+#X obj 121 -2492 struct working-man-scalar float x float y;
+#N canvas 725 143 450 300 init 0;
+#X obj 88 67 line;
+#X obj 88 -19 loadbang;
+#X msg 88 135 transform matrix -1 0 0 1 510.336 0 translate 200 200
+scale \$1 translate -200 -200;
+#X obj 88 112 pow 3;
+#X msg 186 41 0.7 400;
+#X obj 88 169 outlet;
+#X obj 186 20 del 750;
+#X msg 88 23 0.2 \, 0.9 750;
+#X obj 88 2 del 750;
+#X msg 41 68 0.4;
+#X connect 0 0 3 0;
+#X connect 1 0 9 0;
+#X connect 1 0 8 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X connect 6 0 4 0;
+#X connect 7 0 0 0;
+#X connect 8 0 7 0;
+#X connect 8 0 6 0;
+#X connect 9 0 3 0;
+#X restore 121 -2454 pd init;
+#N canvas 548 143 450 559 (subpatch) 0;
+#X obj 76 44 loadbang;
+#X obj 76 86 draw path M 41.184 453.06 C 18.504 453.06 0 434.556 0
+411.804 C 0 404.532 1.872 397.476 5.544 391.212 L 219.528 20.628 C
+235.44 -6.876 274.968 -6.876 290.88 20.628 L 504.864 391.212 C 508.464
 397.476 510.336 404.604 510.336 411.804 C 510.336 434.556 491.976 452.988
 469.224 453.06 L 41.184 453.06 L 41.184 453.06 z;
-#X obj 119 -2313 loadbang;
-#X obj 119 -2271 draw polygon 52.2 405.468 458.136 405.468 255.168
-53.892 52.2 405.468;
-#X msg 119 -2292 fill #feb82f;
-#X obj 123 -2174 draw path M 419.4 378.396 L 419.4 384.444 L 90.648
-384.444 L 91.368 381.564 C 92.448 377.388 93.672 373.356 95.04 369.468
-C 96.048 366.3 97.56 363.06 99.36 360.108 C 100.584 358.092 101.736
-356.292 102.888 354.42 C 103.032 354.204 103.32 353.988 103.68 353.772
-L 104.4 352.548 L 107.064 346.716 C 107.712 345.204 108.576 343.764
-109.44 342.468 C 110.304 341.244 111.168 340.092 112.104 339.012 C
-113.904 336.852 115.56 334.548 117 332.172 C 118.44 329.652 120.168
-327.42 122.184 325.332 C 122.976 324.468 123.912 323.676 124.92 323.1
-C 126.144 322.308 127.08 321.3 127.728 320.076 C 129.168 317.268 131.04
-314.604 133.128 312.228 C 135.936 308.988 140.328 307.62 144.504 308.7
-C 146.664 309.276 148.752 310.068 150.696 311.004 C 154.296 312.804
-157.608 315.036 160.56 317.7 L 162.576 316.692 C 171.648 312.3 180.144
-307.476 188.352 302.22 L 192.024 303.66 L 196.488 299.916 L 198.936
-297.252 L 203.616 293.868 C 209.304 289.692 215.424 286.164 221.832
-283.284 L 225.576 279.972 L 231.48 274.428 C 232.128 273.78 232.56
-272.988 232.776 272.196 C 233.496 269.892 233.928 267.516 234.072 265.212
-C 234.288 261.828 234.432 258.732 234.576 255.564 C 234.648 253.116
-234.864 250.668 235.152 248.22 C 235.584 244.98 235.728 241.884 235.728
-238.644 C 235.728 237.996 235.728 237.42 235.728 236.7 C 235.728 236.196
-235.656 235.116 235.656 233.964 C 235.584 232.02 235.368 231.228 234.936
-230.58 L 230.976 222.084 L 225.576 212.868 C 224.424 210.852 223.704
-208.548 223.56 206.172 C 223.416 203.796 223.632 201.42 224.136 199.116
-C 224.352 198.18 224.64 197.316 225 196.452 C 225.144 196.164 225.216
-195.804 225.216 195.444 C 225.216 194.94 225 194.436 224.712 194.004
-C 224.424 193.572 223.92 193.356 223.416 193.356 C 223.272 193.356
-223.128 193.356 222.984 193.428 C 221.4 193.788 219.744 193.428 218.52
-192.348 C 215.712 189.972 213.768 186.804 212.832 183.276 C 212.472
-181.98 212.04 180.612 211.608 179.244 C 211.32 178.236 210.744 177.444
-209.952 176.796 C 208.44 175.5 207.36 173.772 206.856 171.9 C 206.352
-169.812 206.352 167.724 206.856 165.636 C 207.432 163.332 208.656 161.172
-210.528 159.588 C 212.4 158.004 214.56 156.78 216.864 155.988 C 219.384
-155.196 221.976 154.548 224.568 154.188 C 225.936 153.972 227.376 154.188
-228.6 154.836 C 230.184 155.7 231.696 156.636 232.992 157.788 C 234.36
-158.868 235.368 160.38 235.944 162.108 C 236.52 163.764 237.024 165.42
-237.384 167.076 C 237.672 168.156 237.888 169.164 238.032 170.172 C
-238.464 172.548 239.328 174.78 240.552 176.868 C 241.488 178.596 242.28
-179.892 243.144 181.188 C 243 180.972 244.152 181.836 245.52 182.268
-C 246.24 182.484 247.104 182.628 247.896 182.628 C 248.544 182.628
-249.12 182.556 249.696 182.412 C 252.072 181.908 254.376 181.62 256.752
-181.404 C 258.696 181.26 260.64 180.9 262.44 180.324 C 266.112 179.1
-269.712 178.092 273.384 177.012 C 275.4 176.436 277.704 176.292 279.936
-176.652 C 291.456 178.452 302.4 182.34 312.336 188.172 C 313.344 188.748
-314.352 189.324 315.288 189.972 C 316.728 190.908 317.88 192.204 318.528
-193.788 C 319.32 195.588 319.752 197.46 319.968 199.332 C 320.472 204.732
-321.048 209.556 321.768 214.38 C 322.2 217.548 323.784 220.86 326.304
-223.524 C 326.952 224.244 327.744 224.892 328.608 225.396 C 330.336
-226.404 331.776 227.844 332.856 229.572 C 333.36 230.292 333.576 231.156
-333.576 232.02 C 333.576 233.388 333 234.756 331.92 235.62 C 330.912
-236.412 329.832 237.204 328.752 237.852 C 327.888 238.428 326.952 238.716
-325.944 238.86 C 325.44 238.932 325.08 239.292 325.008 239.796 L 325.944
-260.604 L 326.088 277.74 L 325.8 285.948 L 325.944 293.076 L 325.512
-299.556 L 324.72 307.332 C 324.432 309.708 324.288 312.156 324.288
-314.532 C 324.288 318.132 324.576 321.66 325.08 325.188 C 325.44 327.42
-325.656 329.868 325.656 332.172 C 325.656 332.892 325.584 333.54 325.584
-334.188 L 325.728 343.548 L 325.512 354.276 L 325.224 364.212 L 325.368
-368.964 C 325.44 370.692 326.88 372.06 328.608 372.06 L 329.328 371.988
-L 333.576 368.532 C 334.224 368.028 334.584 367.236 334.584 366.444
-C 334.584 366.228 334.584 366.084 334.512 365.868 C 334.368 365.004
-334.224 363.996 334.224 363.06 C 334.152 362.196 334.44 361.404 335.016
-360.756 C 335.448 360.324 335.952 359.892 336.6 359.532 L 339.264 358.38
-L 342.144 356.796 C 344.664 355.428 347.04 353.844 349.2 351.972 C
-349.776 351.468 350.28 351.036 350.784 350.676 C 351.576 349.884 352.872
-349.452 354.168 349.524 C 355.824 349.524 357.48 350.028 358.92 350.964
-C 360.072 351.756 361.008 352.836 361.584 354.132 C 365.328 362.772
-371.016 370.26 378.216 376.164 C 379.584 377.244 381.24 377.964 382.896
-378.252 L 419.4 378.396 z;
-#X obj 123 -2216 loadbang;
-#X obj 123 -1115 loadbang;
-#X msg 123 -1094 fill #feb82f;
-#X obj 123 -1073 draw path M 247.248 264.636 C 247.32 264.708 247.392
+#X obj 80 182 loadbang;
+#X obj 80 224 draw polygon 52.2 405.468 458.136 405.468 255.168 53.892
+52.2 405.468;
+#X msg 80 203 fill #feb82f;
+#X obj 84 321 draw path M 419.4 378.396 L 419.4 384.444 L 90.648 384.444
+L 91.368 381.564 C 92.448 377.388 93.672 373.356 95.04 369.468 C 96.048
+366.3 97.56 363.06 99.36 360.108 C 100.584 358.092 101.736 356.292
+102.888 354.42 C 103.032 354.204 103.32 353.988 103.68 353.772 L 104.4
+352.548 L 107.064 346.716 C 107.712 345.204 108.576 343.764 109.44
+342.468 C 110.304 341.244 111.168 340.092 112.104 339.012 C 113.904
+336.852 115.56 334.548 117 332.172 C 118.44 329.652 120.168 327.42
+122.184 325.332 C 122.976 324.468 123.912 323.676 124.92 323.1 C 126.144
+322.308 127.08 321.3 127.728 320.076 C 129.168 317.268 131.04 314.604
+133.128 312.228 C 135.936 308.988 140.328 307.62 144.504 308.7 C 146.664
+309.276 148.752 310.068 150.696 311.004 C 154.296 312.804 157.608 315.036
+160.56 317.7 L 162.576 316.692 C 171.648 312.3 180.144 307.476 188.352
+302.22 L 192.024 303.66 L 196.488 299.916 L 198.936 297.252 L 203.616
+293.868 C 209.304 289.692 215.424 286.164 221.832 283.284 L 225.576
+279.972 L 231.48 274.428 C 232.128 273.78 232.56 272.988 232.776 272.196
+C 233.496 269.892 233.928 267.516 234.072 265.212 C 234.288 261.828
+234.432 258.732 234.576 255.564 C 234.648 253.116 234.864 250.668 235.152
+248.22 C 235.584 244.98 235.728 241.884 235.728 238.644 C 235.728 237.996
+235.728 237.42 235.728 236.7 C 235.728 236.196 235.656 235.116 235.656
+233.964 C 235.584 232.02 235.368 231.228 234.936 230.58 L 230.976 222.084
+L 225.576 212.868 C 224.424 210.852 223.704 208.548 223.56 206.172
+C 223.416 203.796 223.632 201.42 224.136 199.116 C 224.352 198.18 224.64
+197.316 225 196.452 C 225.144 196.164 225.216 195.804 225.216 195.444
+C 225.216 194.94 225 194.436 224.712 194.004 C 224.424 193.572 223.92
+193.356 223.416 193.356 C 223.272 193.356 223.128 193.356 222.984 193.428
+C 221.4 193.788 219.744 193.428 218.52 192.348 C 215.712 189.972 213.768
+186.804 212.832 183.276 C 212.472 181.98 212.04 180.612 211.608 179.244
+C 211.32 178.236 210.744 177.444 209.952 176.796 C 208.44 175.5 207.36
+173.772 206.856 171.9 C 206.352 169.812 206.352 167.724 206.856 165.636
+C 207.432 163.332 208.656 161.172 210.528 159.588 C 212.4 158.004 214.56
+156.78 216.864 155.988 C 219.384 155.196 221.976 154.548 224.568 154.188
+C 225.936 153.972 227.376 154.188 228.6 154.836 C 230.184 155.7 231.696
+156.636 232.992 157.788 C 234.36 158.868 235.368 160.38 235.944 162.108
+C 236.52 163.764 237.024 165.42 237.384 167.076 C 237.672 168.156 237.888
+169.164 238.032 170.172 C 238.464 172.548 239.328 174.78 240.552 176.868
+C 241.488 178.596 242.28 179.892 243.144 181.188 C 243 180.972 244.152
+181.836 245.52 182.268 C 246.24 182.484 247.104 182.628 247.896 182.628
+C 248.544 182.628 249.12 182.556 249.696 182.412 C 252.072 181.908
+254.376 181.62 256.752 181.404 C 258.696 181.26 260.64 180.9 262.44
+180.324 C 266.112 179.1 269.712 178.092 273.384 177.012 C 275.4 176.436
+277.704 176.292 279.936 176.652 C 291.456 178.452 302.4 182.34 312.336
+188.172 C 313.344 188.748 314.352 189.324 315.288 189.972 C 316.728
+190.908 317.88 192.204 318.528 193.788 C 319.32 195.588 319.752 197.46
+319.968 199.332 C 320.472 204.732 321.048 209.556 321.768 214.38 C
+322.2 217.548 323.784 220.86 326.304 223.524 C 326.952 224.244 327.744
+224.892 328.608 225.396 C 330.336 226.404 331.776 227.844 332.856 229.572
+C 333.36 230.292 333.576 231.156 333.576 232.02 C 333.576 233.388 333
+234.756 331.92 235.62 C 330.912 236.412 329.832 237.204 328.752 237.852
+C 327.888 238.428 326.952 238.716 325.944 238.86 C 325.44 238.932 325.08
+239.292 325.008 239.796 L 325.944 260.604 L 326.088 277.74 L 325.8
+285.948 L 325.944 293.076 L 325.512 299.556 L 324.72 307.332 C 324.432
+309.708 324.288 312.156 324.288 314.532 C 324.288 318.132 324.576 321.66
+325.08 325.188 C 325.44 327.42 325.656 329.868 325.656 332.172 C 325.656
+332.892 325.584 333.54 325.584 334.188 L 325.728 343.548 L 325.512
+354.276 L 325.224 364.212 L 325.368 368.964 C 325.44 370.692 326.88
+372.06 328.608 372.06 L 329.328 371.988 L 333.576 368.532 C 334.224
+368.028 334.584 367.236 334.584 366.444 C 334.584 366.228 334.584 366.084
+334.512 365.868 C 334.368 365.004 334.224 363.996 334.224 363.06 C
+334.152 362.196 334.44 361.404 335.016 360.756 C 335.448 360.324 335.952
+359.892 336.6 359.532 L 339.264 358.38 L 342.144 356.796 C 344.664
+355.428 347.04 353.844 349.2 351.972 C 349.776 351.468 350.28 351.036
+350.784 350.676 C 351.576 349.884 352.872 349.452 354.168 349.524 C
+355.824 349.524 357.48 350.028 358.92 350.964 C 360.072 351.756 361.008
+352.836 361.584 354.132 C 365.328 362.772 371.016 370.26 378.216 376.164
+C 379.584 377.244 381.24 377.964 382.896 378.252 L 419.4 378.396 z
+;
+#X obj 84 279 loadbang;
+#X obj 84 1380 loadbang;
+#X msg 84 1401 fill #feb82f;
+#X obj 84 1422 draw path M 247.248 264.636 C 247.32 264.708 247.392
 264.708 247.536 264.708 C 247.824 264.708 248.112 264.636 248.328 264.348
 C 249.768 262.692 251.064 261.108 252.288 259.452 C 253.224 258.3 254.016
 257.076 254.88 255.852 C 255.528 254.844 256.176 253.764 256.896 252.756
@@ -96,14 +122,12 @@ C 253.512 237.348 253.368 238.716 253.08 240.084 C 252.936 240.732
 256.572 L 248.04 259.02 L 247.032 261.972 C 246.816 262.476 246.672
 263.052 246.672 263.628 C 246.672 263.772 246.672 263.916 246.744 264.06
 C 246.744 264.348 246.96 264.636 247.248 264.636 z;
-#X obj 148 -160;
-#X obj 148 -139;
-#X obj 125 -796 loadbang;
-#X msg 125 -775 stroke black \, stroke-width 0.216;
-#X obj 125 -754 draw line 246.744 263.988 247.176 264.636;
-#X obj 126 -723 loadbang;
-#X msg 126 -702 fill #feb82f;
-#X obj 126 -681 draw path M 291.96 199.836 L 295.488 199.908 L 298.584
+#X obj 86 1699 loadbang;
+#X msg 86 1720 stroke black \, stroke-width 0.216;
+#X obj 86 1741 draw line 246.744 263.988 247.176 264.636;
+#X obj 87 1772 loadbang;
+#X msg 87 1793 fill #feb82f;
+#X obj 87 1814 draw path M 291.96 199.836 L 295.488 199.908 L 298.584
 200.268 L 303.408 201.204 C 303.624 201.276 303.912 201.42 303.984
 201.708 L 305.28 204.516 L 306.216 206.604 L 306.864 208.404 L 307.872
 210.78 L 309.528 214.092 L 310.536 215.892 L 311.688 218.7 L 312.768
@@ -115,9 +139,39 @@ L 303.192 219.132 L 302.328 217.476 C 301.68 216.108 301.032 214.74
 300.528 213.3 L 297.288 209.628 L 293.256 205.164 L 290.016 201.996
 C 289.8 201.78 289.8 201.492 290.088 201.348 L 291.024 200.196 C 291.24
 199.98 291.6 199.836 291.96 199.836 z;
-#X obj 127 -476 loadbang;
-#X msg 127 -455 fill #feb82f;
-#X obj 127 -434 draw path M 254.304 371.484 L 263.16 365.436 L 263.592
+#X obj 88 2019 loadbang;
+#X msg 88 2040 fill #feb82f;
+#X obj 92 2583 loadbang;
+#X msg 92 2604 fill #feb82f;
+#X obj 92 2625 draw path M 163.224 321.372 L 165.096 321.012 L 170.064
+319.932 C 173.448 319.212 176.688 318.204 179.856 316.836 C 182.592
+315.684 184.68 314.82 186.768 313.956 C 189.288 312.948 191.808 311.292
+194.04 309.204 L 197.568 306.252 L 200.592 303.228 L 202.536 301.572
+L 204.768 299.916 L 206.856 298.404 L 209.448 296.82 L 211.32 295.812
+L 213.336 294.804 L 215.424 293.796 L 217.656 292.644 L 219.312 291.78
+L 220.824 290.844 L 222.264 290.052 L 225.36 288.756 L 231.48 305.46
+L 231.624 306.108 L 231.768 306.756 L 234.144 314.676 L 236.16 322.812
+L 237.672 327.996 L 238.68 331.884 L 240.84 341.676 L 241.416 344.772
+C 241.776 346.356 242.496 347.796 243.648 349.02 C 244.08 349.452 244.584
+349.812 245.088 350.028 C 246.312 350.676 247.608 350.964 248.976 350.964
+C 249.192 350.964 249.48 350.964 249.696 350.892 C 250.632 350.82 251.568
+351.18 252.144 351.9 C 253.44 353.412 254.232 355.212 254.52 357.156
+C 254.52 357.228 254.52 357.372 254.52 357.444 C 254.52 357.804 254.448
+358.164 254.304 358.452 L 251.64 362.7 L 251.136 363.492 L 245.16 366.876
+C 244.728 367.092 244.44 367.596 244.44 368.1 C 244.44 368.172 244.44
+368.244 244.44 368.316 L 244.944 370.26 L 242.928 369.828 C 240.336
+369.18 237.672 368.892 234.864 368.892 C 233.28 368.892 231.624 368.964
+230.04 369.18 C 226.944 369.612 223.776 370.188 220.536 370.98 C 217.224
+371.772 213.84 372.204 210.312 372.276 C 207.936 372.348 205.56 372.06
+203.328 371.412 C 202.392 371.196 201.312 370.908 200.304 370.692 C
+198.216 370.332 196.344 369.324 194.976 367.812 C 193.968 366.804 192.744
+365.436 191.448 364.212 L 188.208 359.604 L 186.408 356.724 L 184.464
+353.916 L 182.736 351.396 L 180 347.22 L 178.704 345.132 L 176.832
+341.316 L 175.464 338.292 L 174.528 336.42 L 173.736 334.908 C 171
+329.94 167.544 325.332 163.296 321.372 L 163.224 321.372 z;
+#X msg 84 300 fill black;
+#X msg 76 65 fill #ed171f;
+#X obj 88 2064 draw path M 254.304 371.484 L 263.16 365.436 L 263.592
 365.148 L 265.248 364.644 L 268.56 363.852 L 274.968 360.036 L 274.608
 358.74 C 274.104 356.508 273.024 354.348 271.656 352.476 C 270.504
 350.82 269.424 349.092 268.56 347.22 C 267.84 345.78 267.48 344.34
@@ -148,123 +202,68 @@ C 297.288 367.884 296.208 368.82 295.992 370.044 C 295.848 370.62 295.776
 374.796 C 288.936 374.94 287.28 375.156 285.552 375.444 L 280.296 375.588
 L 274.176 375.3 L 269.28 374.508 L 266.184 373.788 L 261.432 372.852
 L 258.192 372.204 L 254.304 371.484 z;
-#X obj 131 88 loadbang;
-#X msg 131 109 fill #feb82f;
-#X obj 131 130 draw path M 163.224 321.372 L 165.096 321.012 L 170.064
-319.932 C 173.448 319.212 176.688 318.204 179.856 316.836 C 182.592
-315.684 184.68 314.82 186.768 313.956 C 189.288 312.948 191.808 311.292
-194.04 309.204 L 197.568 306.252 L 200.592 303.228 L 202.536 301.572
-L 204.768 299.916 L 206.856 298.404 L 209.448 296.82 L 211.32 295.812
-L 213.336 294.804 L 215.424 293.796 L 217.656 292.644 L 219.312 291.78
-L 220.824 290.844 L 222.264 290.052 L 225.36 288.756 L 231.48 305.46
-L 231.624 306.108 L 231.768 306.756 L 234.144 314.676 L 236.16 322.812
-L 237.672 327.996 L 238.68 331.884 L 240.84 341.676 L 241.416 344.772
-C 241.776 346.356 242.496 347.796 243.648 349.02 C 244.08 349.452 244.584
-349.812 245.088 350.028 C 246.312 350.676 247.608 350.964 248.976 350.964
-C 249.192 350.964 249.48 350.964 249.696 350.892 C 250.632 350.82 251.568
-351.18 252.144 351.9 C 253.44 353.412 254.232 355.212 254.52 357.156
-C 254.52 357.228 254.52 357.372 254.52 357.444 C 254.52 357.804 254.448
-358.164 254.304 358.452 L 251.64 362.7 L 251.136 363.492 L 245.16 366.876
-C 244.728 367.092 244.44 367.596 244.44 368.1 C 244.44 368.172 244.44
-368.244 244.44 368.316 L 244.944 370.26 L 242.928 369.828 C 240.336
-369.18 237.672 368.892 234.864 368.892 C 233.28 368.892 231.624 368.964
-230.04 369.18 C 226.944 369.612 223.776 370.188 220.536 370.98 C 217.224
-371.772 213.84 372.204 210.312 372.276 C 207.936 372.348 205.56 372.06
-203.328 371.412 C 202.392 371.196 201.312 370.908 200.304 370.692 C
-198.216 370.332 196.344 369.324 194.976 367.812 C 193.968 366.804 192.744
-365.436 191.448 364.212 L 188.208 359.604 L 186.408 356.724 L 184.464
-353.916 L 182.736 351.396 L 180 347.22 L 178.704 345.132 L 176.832
-341.316 L 175.464 338.292 L 174.528 336.42 L 173.736 334.908 C 171
-329.94 167.544 325.332 163.296 321.372 L 163.224 321.372 z;
-#X obj 121 -2492 struct working-man-scalar float x float y;
-#X msg 123 -2195 fill black;
-#X obj 246 -2434 draw group;
-#X msg 115 -2430 fill #ed171f;
-#N canvas 725 143 450 300 init 0;
-#X obj 88 67 line;
-#X obj 88 -19 loadbang;
-#X msg 88 135 transform matrix -1 0 0 1 510.336 0 translate 200 200
-scale \$1 translate -200 -200;
-#X obj 88 112 pow 3;
-#X msg 186 41 0.7 400;
-#X obj 88 169 outlet;
-#X obj 186 20 del 750;
-#X msg 88 23 0.2 \, 0.9 750;
-#X msg 41 68 0.5;
-#X obj 88 2 del 750;
-#X connect 0 0 3 0;
-#X connect 1 0 8 0;
-#X connect 1 0 9 0;
-#X connect 2 0 5 0;
-#X connect 3 0 2 0;
-#X connect 4 0 0 0;
-#X connect 6 0 4 0;
-#X connect 7 0 0 0;
-#X connect 8 0 3 0;
-#X connect 9 0 7 0;
-#X connect 9 0 6 0;
-#X restore 246 -2464 pd init;
-#X connect 0 0 27 0;
+#X connect 0 0 22 0;
 #X connect 2 0 4 0;
 #X connect 4 0 3 0;
-#X connect 6 0 25 0;
+#X connect 6 0 21 0;
 #X connect 7 0 8 0;
 #X connect 8 0 9 0;
 #X connect 10 0 11 0;
-#X connect 12 0 13 0;
+#X connect 11 0 12 0;
 #X connect 13 0 14 0;
-#X connect 15 0 16 0;
+#X connect 14 0 15 0;
 #X connect 16 0 17 0;
+#X connect 17 0 23 0;
 #X connect 18 0 19 0;
 #X connect 19 0 20 0;
-#X connect 21 0 22 0;
-#X connect 22 0 23 0;
-#X connect 25 0 5 0;
-#X connect 27 0 1 0;
-#X connect 28 0 26 0;
+#X connect 21 0 5 0;
+#X connect 22 0 1 0;
+#X restore 121 -2430 group;
+#X connect 1 0 2 0;
 #X restore 443 6 pd template;
 #X scalar working-man-scalar 218 -11 \;;
 #X text 13 0 Still under heavy development!;
-#X text 43 160 * stroke and fill methods;
+#X text 43 130 * stroke and fill methods;
 #X text 43 40 Stable methods of the new [draw] object are:;
-#X text 43 120 _Close_ to stable (won't change unless some big problem
+#X text 43 90 _Close_ to stable (won't change unless some big problem
 is revealed):;
-#X text 43 190 Wish I could figure out a better way to do them:;
-#X text 43 80 * stroke-opacity \, fill-opacity \, transform \, stroke-width
+#X text 43 345 Wish I could figure out a better way to do them:;
+#X text 43 60 * stroke-opacity \, fill-opacity \, transform \, stroke-width
 \, stroke-miterlimit \, rx \, ry \, and stroke-dasharray methods.;
-#X text 43 330 * [draw group]. This will probably change to [group]
-and feature a subpatch so that you can do svg group nesting.;
-#X text 43 300 Unstable (will probably change):;
-#X text 43 470 Experimental:;
-#X text 43 220 * fill-rule \, stroke-linejoin \, stroke-linecap. The
+#X text 43 460 Experimental:;
+#X text 43 365 * fill-rule \, stroke-linejoin \, stroke-linecap. The
 problem is that they take symbolic arguments in the svg standard \,
 but with data structures a symbolic argument represents a variable
 field. So I just use a float argument. I could use quotes around a
 symbol to specify a constant string \, but that would be obscure and
 at odds with the rest of Pd.;
-#X text 43 370 * [draw shape] pattern \, [drawsprite] name \, [drawimage]
-names. They are inconsistent. I don't particularly like the two word
-naming scheme of [draw shape] \, but [drawpolygon] is already taken
-and has a different interface. So I'll either change [draw shape] to
-some one-word selector or change [drawsprite] to make it more consistent
-with what I have so far.;
-#X text 43 570 * scalar bbox caching. All that code is essentially
-a duplication of tkpath and needs to happen in the GUI.;
-#X text 480 333 Upcoming:;
-#X text 480 353 * data method and x \, y \, etc. method for changing
-shape coordinates on the fly;
+#X text 43 480 * mouse-dragging hotspots. This currently works like
+old-school scalars \, and it even works with transforms. It's original
+design is too limiting \, and with ds arrays the element hotspot may
+even conflict with the coordinate hotspot. A more expressive way is
+needed \, maybe something ported or inspired by Raphael.;
 #X text 480 393 * methods to better control mouse interaction. Something
 like the old "-x" flag but allowing separate control of edit-mode displacement
 and hotspot dragging. (Just because the drawing data contains a variable
 doesn't mean it should be draggable.);
-#X text 480 463 * [draw image] instead of [drawimage] \, so that it's
-transformable. (Maybe the same with drawsprite \, not sure...);
-#X text 480 513 * [draw text] for scalable svg text.;
-#X text 480 543 * better [draw group] inheritance. Currently drawing
-a shape gives it a bunch of default attributes which you have to manually
-turn off to inherit attributes from a group.;
-#X text 43 490 * mouse-dragging hotspots. This currently works like
-old-school scalars \, and it even works with transforms. Its original
-design is too limiting \, and with ds arrays the element hotspot may
-even conflict with the coordinate hotspot. A more expressive way is
-needed \, maybe something ported or inspired by Raphael.;
+#X text 480 473 * [draw text] for scalable svg text.;
+#X text 43 250 Stable group handling:;
+#X text 43 155 * [draw [shape-name]] pattern \, [draw sprite] \, and
+[draw image] names. I don't particularly like the two word naming scheme
+of [draw shape] \, but [drawpolygon] is already taken and has a different
+interface. Additionally \, Gem already has the bare word polygon \,
+so "draw" is as good a qualifier as I can think of.;
+#X text 43 270 * [group] subpatch seems to work fine. It's basically
+just a subpatch with an inlet to control svg attributes of the drawing
+commands it conatins. It might also be handy to search abstractions
+for drawing instructions \, but that isn't supported at the moment.
+;
+#X text 43 570 * scalar bbox caching. Should give more control to the
+user as with mouse-dragging.;
+#X text 480 503 * way to reset an svg attribute. Probably by just sending
+a message with no arguments (not sure if tkpath supports this yet)
+;
+#X text 480 313 New:;
+#X text 480 333 * messages to set path data \, polygon points \, x
+\, y \, cx \, cy \, r \, height \, width \, etc.;
+#X text 480 373 Needed:;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd
index 50b0cd42d47955197acf0255bfbd417c46eb0250..437aa136ed2388bdce7b9d006ec187b2797d91f9 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/01.intro.pd
@@ -1,5 +1,5 @@
 #N struct foo float x float y;
-#N canvas -9 19 565 491 10;
+#N canvas 0 19 565 491 10;
 #X scalar foo 96 105 \;;
 #N canvas 429 132 808 465 welcome-animation 0;
 #X obj 877 107 bng 54 250 50 0 empty empty empty 17 7 0 10 -262144
@@ -133,8 +133,6 @@
 #X obj 311 66 draw rect -40 -50 200 90;
 #X obj 189 -26 struct foo float x float y;
 #X obj 189 4 loadbang;
-#X msg 311 35 stroke-dasharray 10 4 \, stroke-width 4 \, stroke gray
-;
 #N canvas 433 184 450 300 welcome-text 0;
 #N canvas 71 237 450 300 w 0;
 #X obj 40 215 draw path m 93.8047 87.029 c 0 1.17187 0.859375 2.05078
@@ -635,10 +633,12 @@ c -0.21485 -0.05859 -0.41016 -0.9375 -0.41016 -1.21094;
 #X restore 37 97 group exclamation-point;
 #X restore 189 66 group welcome-text;
 #X msg 189 37 fill black;
-#X connect 2 0 3 0;
+#X msg 311 35 stroke-dasharray 10 4 \, stroke-width 4 \, stroke gray
+\, fill "";
 #X connect 2 0 5 0;
-#X connect 3 0 0 0;
-#X connect 5 0 4 0;
+#X connect 2 0 4 0;
+#X connect 4 0 3 0;
+#X connect 5 0 0 0;
 #X restore 339 39 pd welcome-struct;
 #X text 0 1 New Drawing Commands: Intro;
 #X text 0 1 ___________________________;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/04.attributes.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/04.attributes.pd
index a250a15a6be0e9465c35d71287e16182e6da1213..798000e37a7664d42d903870eacbc6a23a2948bf 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/04.attributes.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/04.attributes.pd
@@ -18,7 +18,6 @@ object attributes are supported in Pd. But the basic ones are.;
 object and a scalar created from them. Let's send a message to make
 the rectangle more interesting.;
 #X msg 53 252 fill red;
-#X msg 123 252 fill white;
 #X text 53 229 Click a message box to change the "fill" attribute:
 ;
 #X text 53 394 As you can see \, the "fill" message changes the fill
@@ -40,7 +39,8 @@ the fourth argument specifying opacity.;
 using a [loadbang] message. Notice that attributes will be the same
 for all scalars created from this [struct]. Later you will see how
 to set attributes to be different for each scalar.;
+#X msg 123 252 fill green;
 #X connect 9 0 6 0;
-#X connect 10 0 6 0;
-#X connect 17 0 18 0;
-#X connect 18 0 6 0;
+#X connect 16 0 17 0;
+#X connect 17 0 6 0;
+#X connect 19 0 6 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/05.more.attributes.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/05.more.attributes.pd
index fcbfcc40f14d484a6499e3b2f0922447bc94512e..b2dc9bd90f72e00ee5f26840cc52f44f0cbe9de5 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/05.more.attributes.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/05.more.attributes.pd
@@ -1,55 +1,56 @@
 #N struct drawtut-attr-cont float x float y;
 #N canvas 0 19 638 678 10;
-#X obj 93 563 draw rect 0 0 50 50;
-#X msg 93 92 fill red;
+#X obj 93 583 draw rect 0 0 50 50;
+#X msg 93 112 fill red;
 #X text 0 1 New Drawing Commands: attributes (continued);
 #X text 0 1 ____________________________________________;
 #X text 53 23 There are quite a few attributes we can control to change
 the appearance of a shape:;
 #X obj 53 57 struct drawtut-attr-cont float x float y;
 #X scalar drawtut-attr-cont 24 283 \;;
-#X text 200 92 fill color. 1 symbol \, 3 floats (rgb) \, or 4 floats
+#X text 200 112 fill color. 1 symbol \, 3 floats (rgb) \, or 4 floats
 (rgba);
-#X text 200 150 opacity for fill color. float in range 0-1;
-#X msg 100 149 fill-opacity \$1;
-#X text 200 176 fill-rule for overlapping polygons. 0 = nonzero \,
+#X text 200 170 opacity for fill color. float in range 0-1;
+#X msg 100 169 fill-opacity \$1;
+#X text 200 196 fill-rule for overlapping polygons. 0 = nonzero \,
 1 = evenodd;
-#X floatatom 113 201 5 0 0 0 - - -, f 5;
-#X floatatom 120 246 5 0 0 0 - - -, f 5;
-#X msg 113 223 rx \$1;
-#X msg 120 270 ry \$1;
-#X text 160 223 x value for rounded rectangle corner;
-#X text 164 271 y value for rounded rectangle corner;
-#X text 214 297 stroke color. 1 symbol \, 3 floats (rgb) \, or 4 floats
+#X floatatom 113 221 5 0 0 0 - - -, f 5;
+#X floatatom 120 266 5 0 0 0 - - -, f 5;
+#X msg 113 243 rx \$1;
+#X msg 120 290 ry \$1;
+#X text 160 243 x value for rounded rectangle corner;
+#X text 164 291 y value for rounded rectangle corner;
+#X text 214 317 stroke color. 1 symbol \, 3 floats (rgb) \, or 4 floats
 (rgba);
-#X text 274 324 list of numbers to specify dash lengths;
-#X msg 140 351 stroke-linecap 0;
-#X text 254 351 for ends of open subpaths. 0 = butt \, 1 = round \,
+#X text 274 344 list of numbers to specify dash lengths;
+#X msg 140 371 stroke-linecap 0;
+#X text 254 371 for ends of open subpaths. 0 = butt \, 1 = round \,
 2 = square;
-#X text 264 379 shape of path corners. 0 = miter \, 1 = round \, 2
+#X text 264 399 shape of path corners. 0 = miter \, 1 = round \, 2
 = bevel;
-#X text 286 405 limit miter length;
-#X text 286 432 opacity for the stroke. float in range 0-1;
-#X text 286 458 width of the stroke.;
-#X msg 146 378 stroke-linejoin 0;
-#X msg 151 405 stroke-miterlimit 0;
-#X msg 155 432 stroke-opacity 0.4;
-#X text 286 536 affine transformation on the object.;
-#X msg 158 459 stroke-width 10;
-#X floatatom 161 491 5 0 0 0 - - -, f 5;
-#X msg 161 536 transform skewx \$1;
-#X obj 161 512 * 0.01;
-#X text 275 580 Read more about svg attributes here:;
-#X obj 275 601 pddp/pddplink http://www.w3.org/TR/SVG11/painting.html
+#X text 286 425 limit miter length;
+#X text 286 452 opacity for the stroke. float in range 0-1;
+#X text 286 478 width of the stroke.;
+#X msg 146 398 stroke-linejoin 0;
+#X msg 151 425 stroke-miterlimit 0;
+#X msg 155 452 stroke-opacity 0.4;
+#X text 286 556 affine transformation on the object.;
+#X msg 158 479 stroke-width 10;
+#X floatatom 161 511 5 0 0 0 - - -, f 5;
+#X msg 161 556 transform skewx \$1;
+#X obj 161 532 * 0.01;
+#X text 275 600 Read more about svg attributes here:;
+#X obj 275 621 pddp/pddplink http://www.w3.org/TR/SVG11/painting.html
 ;
-#X msg 107 176 fill-rule 0;
-#X msg 134 324 stroke-dasharray 5 10;
-#X msg 127 297 stroke purple;
-#X obj 127 121 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 600 1;
-#X text 107 121 0;
-#X text 268 121 1;
+#X msg 107 196 fill-rule 0;
+#X msg 134 344 stroke-dasharray 5 10;
+#X msg 127 317 stroke purple;
+#X obj 127 141 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 107 141 0;
+#X text 268 141 1;
 #X text 25 348 (scalar);
+#X obj 93 85 loadbang;
 #X connect 1 0 0 0;
 #X connect 9 0 0 0;
 #X connect 11 0 13 0;
@@ -68,3 +69,4 @@ the appearance of a shape:;
 #X connect 36 0 0 0;
 #X connect 37 0 0 0;
 #X connect 38 0 9 0;
+#X connect 42 0 1 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/08.circle.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/08.circle.pd
index 0e66156317303a4a7ae2da36d5f05e68dd94c484..61d1ade6a1945263c421285ec98cd2847c43b3ff 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/08.circle.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/08.circle.pd
@@ -1,6 +1,6 @@
 #N struct drawtut-circle float x float y;
 #N canvas 0 19 638 554 10;
-#X msg 53 117 stroke blue;
+#X msg 143 117 stroke blue;
 #X text 52 484 Lines are only a single stroke. They don't have any
 inner area to fill \, so none of the messages like "fill" or "fill-rule"
 have any effect.;
@@ -10,7 +10,7 @@ have any effect.;
 #X obj 53 57 struct drawtut-circle float x float y;
 #X scalar drawtut-circle 157 283 \;;
 #X text 248 270 <- a circle;
-#X msg 142 117 fill yellow;
+#X msg 53 117 fill yellow;
 #X msg 228 117 stroke-width \$1;
 #X floatatom 228 93 5 0 0 0 - - -, f 5;
 #X obj 53 153 draw circle 0 0 80;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/09.ellipse.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/09.ellipse.pd
index 5157979abbf64e0e6eed95818a00eb17da31700f..65c0619be1b65cb2dd1c816f8dc6c539c41dd464 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/09.ellipse.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/09.ellipse.pd
@@ -1,7 +1,7 @@
 #N struct drawtut-ellipse float x float y;
 #N canvas 0 19 509 498 10;
-#X msg 53 117 stroke blue;
-#X msg 142 117 fill yellow;
+#X msg 141 117 stroke blue;
+#X msg 54 117 fill yellow;
 #X msg 228 117 stroke-width \$1;
 #X floatatom 228 93 5 0 0 0 - - -, f 5;
 #X obj 53 153 draw ellipse 0 0 86 42;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/10.polyline.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/10.polyline.pd
index 387e87181e2fb6d506a5a4f1b7cc4c8da87a9861..33e6b8a91d4f0c8a0e28b8b3c512b62477553f18 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/10.polyline.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/10.polyline.pd
@@ -27,6 +27,7 @@ the [draw] object quite powerful.;
 #X msg 53 137 stroke purple;
 #X msg 142 137 fill gray;
 #X msg 228 95 10;
+#X obj 53 103 loadbang;
 #X connect 0 0 6 0;
 #X connect 1 0 0 0;
 #X connect 9 0 14 0;
@@ -37,3 +38,4 @@ the [draw] object quite powerful.;
 #X connect 15 0 6 0;
 #X connect 16 0 6 0;
 #X connect 17 0 1 0;
+#X connect 18 0 15 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/14.group.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/14.group.pd
index 505d881f864d98c085a6d126bb68424f884cc25f..d6eff9dd6d4cc397fddff6efd2d0703da453af1c 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/14.group.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/14.group.pd
@@ -19,17 +19,17 @@ of individually.;
 #X obj 35 26 loadbang;
 #X msg 35 47 fill blue;
 #X obj 35 210 loadbang;
-#X msg 35 231 stroke-width 10;
 #X obj 35 101 loadbang;
-#X msg 35 122 stroke darkgreen \, stroke-width 10;
 #X msg 49 148 fill white;
+#X msg 35 122 stroke darkgreen \, stroke-width 10 \, fill "";
+#X msg 35 231 stroke-width 10 \, stroke black;
 #X connect 3 0 4 0;
 #X connect 4 0 0 0;
-#X connect 5 0 6 0;
-#X connect 6 0 2 0;
-#X connect 7 0 8 0;
+#X connect 5 0 9 0;
+#X connect 6 0 8 0;
+#X connect 7 0 1 0;
 #X connect 8 0 1 0;
-#X connect 9 0 1 0;
+#X connect 9 0 2 0;
 #X restore 434 236 group;
 #X text 53 263 The [group] object is essentially just a subpatch with
 an inlet. You can send it all the same messages that you can send to
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd
index f3be7f667c80c7c1026dc315b4b76d071a7f1831..c448a1bdaa00ca416ba0ed23ed89dd659ba64fe4 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/15.events.pd
@@ -5,8 +5,8 @@
 #X text 0 1 New Drawing Commands: mouse events;
 #X text 53 43 When the user mouses over or clicks a scalar a message
 gets sent to the outlet of the corresponding [struct] object.;
-#X obj 373 87 loadbang;
-#X msg 373 108 fill blue;
+#X obj 343 87 loadbang;
+#X msg 343 108 fill blue;
 #X text 53 430 The following events are reported:;
 #X text 53 490 click - clicking the scalar in "Run mode";
 #X text 53 550 enter - moving the mouse over a scalar;
@@ -20,9 +20,9 @@ shape or value;
 #X obj 53 138 list split 1;
 #X obj 63 113 print;
 #X obj 53 87 struct drawtut-events float x float y;
-#X msg 411 200 fill white;
+#X msg 381 200 fill white;
 #X text 149 261 <- Click and move the mouse over these shapes;
-#X obj 373 157 loadbang;
+#X obj 343 157 loadbang;
 #X text 149 299 Notice that when you move from the circle's border
 to its center \, you generate a "leave" event. This is because the
 circle has no fill color. Once you set a fill color-- even white--
@@ -31,14 +31,14 @@ then the middle will count as part of the shape.;
 event \, which will register a click for anything inside the scalar's
 bounding box (i.e. \, the selection rectangle that appears when you
 select it in edit-mode.;
-#X obj 373 129 draw rect 0 0 60 60;
-#X msg 373 178 stroke-width 20;
-#X obj 373 221 draw circle 30 120 25;
+#X obj 343 129 draw rect 0 0 60 60;
+#X obj 343 221 draw circle 30 120 25;
+#X msg 343 178 stroke-width 20 \, stroke black \, fill "";
 #X connect 4 0 5 0;
 #X connect 5 0 23 0;
 #X connect 15 0 14 0;
 #X connect 17 0 15 0;
 #X connect 17 0 16 0;
-#X connect 18 0 25 0;
-#X connect 20 0 24 0;
-#X connect 24 0 25 0;
+#X connect 18 0 24 0;
+#X connect 20 0 25 0;
+#X connect 25 0 24 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/16.animation.pd b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/16.animation.pd
index f0264879d03d9fda8a613ed286e1db6dbf9139f3..47d9e491d65fbaf6ec0e31d4437a49c0d541680c 100644
--- a/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/16.animation.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/ds-tutorials/16.animation.pd
@@ -1,45 +1,45 @@
 #N struct drawtut-animation float x float y;
-#N canvas -9 19 537 571 10;
-#X scalar drawtut-animation 47 306 \;;
-#X obj 47 271 draw rect 0 0 40 40;
-#X obj 47 135 struct drawtut-animation float x float y;
+#N canvas 0 19 537 571 10;
+#X scalar drawtut-animation 47 309 \;;
+#X obj 47 279 draw rect 0 0 40 40;
+#X obj 47 131 struct drawtut-animation float x float y;
 #X text 0 1 New Drawing Commands: animation;
 #X text 1 1 _______________________________;
-#X text 47 26 The svg specification has some handy attributes which
+#X text 47 25 The svg specification has some handy attributes which
 can be used to animate the transition between values for other attributes.
 Unfortunately the new [draw] commands don't currently support those
 attributes.;
-#X text 47 86 However \, if you can do the same thing using some of
+#X text 47 82 However \, if you can do the same thing using some of
 Pd's core objects. For example \, with [line] you can create a ramp
 between values.;
-#X obj 47 166 tgl 23 0 empty empty empty 17 7 0 10 -4034 -1 -1 0 1
+#X obj 47 168 tgl 23 0 empty empty empty 17 7 0 10 -4034 -1 -1 0 1
 ;
-#X obj 47 193 * 255;
-#X msg 47 212 \$1 500;
-#X text 171 271 <- use the 2nd argument to set the "grain" rate;
-#X text 47 358 This is less efficient than svg's animation interface.
+#X msg 47 220 \$1 500;
+#X text 171 279 <- use the 2nd argument to set the "grain" rate;
+#X text 47 371 This is less efficient than svg's animation interface.
 Here \, Pd must send a message for each change in value during the
 ramp. However \, you can use the 2nd argument to [line] to tell it
 how many milliseconds it should wait before outputting a ramp value.
 Use the objects below to convert between "grain" rate and frames-per-second.
 ;
-#X floatatom 50 451 5 0 0 0 - - -, f 5;
-#X msg 50 472 1000 \$1;
-#X obj 50 493 /;
-#X floatatom 50 514 5 0 0 1 - - -, f 5;
-#X obj 47 232 line 0 33.333;
-#X text 112 450 <-- If you want to convert grain-rate to fps \, type
+#X floatatom 50 459 5 0 0 0 - - -, f 5;
+#X msg 50 480 1000 \$1;
+#X obj 50 501 /;
+#X floatatom 50 522 5 0 0 1 - - -, f 5;
+#X obj 47 240 line 0 33.333;
+#X text 112 458 <-- If you want to convert grain-rate to fps \, type
 the grain-rate in the box and read out the answer in the bottom box.
 On the other hand if you want to convert fps to grain-rate simply think
 your desire at the patch and Pd will automatically do the conversion
 in the other direction!;
-#X text 112 516 How does it know?;
-#X msg 47 252 fill \$1 \$1 \$1;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 9 0 16 0;
+#X text 112 524 How does it know?;
+#X msg 47 260 fill \$1 \$1 \$1;
+#X obj 47 198 * 255;
+#X connect 7 0 19 0;
+#X connect 8 0 15 0;
+#X connect 11 0 12 0;
 #X connect 12 0 13 0;
 #X connect 13 0 14 0;
-#X connect 14 0 15 0;
-#X connect 16 0 19 0;
-#X connect 19 0 1 0;
+#X connect 15 0 18 0;
+#X connect 18 0 1 0;
+#X connect 19 0 8 0;
diff --git a/pd/doc/4.data.structures/pd-l2ork/sprite-game/game.pd b/pd/doc/4.data.structures/pd-l2ork/sprite-game/game.pd
index 8d83572ee0d12317ea9351e3d4d3dda935fbeb7c..067459399877a88bd9a572f3d2f1ed3b5e1ce442 100644
--- a/pd/doc/4.data.structures/pd-l2ork/sprite-game/game.pd
+++ b/pd/doc/4.data.structures/pd-l2ork/sprite-game/game.pd
@@ -1,6 +1,6 @@
 #N struct foo;
-#N canvas 34 19 881 608 10;
-#X obj 661 39 pddplink http://remusprites.carbonmade.com/ -text Sprite
+#N canvas 0 19 881 608 10;
+#X obj 731 39 pddplink http://remusprites.carbonmade.com/ -text Sprite
 by Bleed;
 #N canvas 480 111 853 605 (subpatch) 0;
 #X obj 253 455 cnv 15 378 41 empty empty empty 20 12 0 14 -204786 -66577
@@ -367,13 +367,13 @@ z m -10.2 6.76 c -16.409 -1.07188 2.85868 -24.3778 6.81644 -7.79128
 #X msg 68 509 stroke-dasharray 5 6 \, fill yellow \, fill-opacity 0.5
 \, stroke darkgray;
 #X obj 367 401 loadbang;
-#X msg 367 422 fill yellow \, transform translate 27 -7 scale 0.57
-;
 #X msg 411 245 fill black \, transform translate -130 100 scale 0.75
 \, fill-opacity 0.6 \, stroke-opacity 0.6;
 #X obj 411 224 loadbang;
 #X obj 606 168 loadbang;
 #X obj 259 324 r \$0-hit-object;
+#X msg 367 422 fill yellow \, transform translate 27 -7 scale 0.57
+\, stroke black;
 #X connect 5 0 22 0;
 #X connect 8 0 23 0;
 #X connect 9 0 27 0;
@@ -417,14 +417,14 @@ z m -10.2 6.76 c -16.409 -1.07188 2.85868 -24.3778 6.81644 -7.79128
 #X connect 45 0 33 0;
 #X connect 45 0 34 0;
 #X connect 46 0 7 0;
-#X connect 47 0 48 0;
-#X connect 48 0 14 0;
-#X connect 49 0 25 1;
-#X connect 50 0 49 0;
-#X connect 51 0 28 0;
-#X connect 52 0 17 0;
-#X restore 664 138 group;
-#N canvas 322 56 1002 543 guts 0;
+#X connect 47 0 52 0;
+#X connect 48 0 25 1;
+#X connect 49 0 48 0;
+#X connect 50 0 28 0;
+#X connect 51 0 17 0;
+#X connect 52 0 14 0;
+#X restore 734 138 group;
+#N canvas 150 76 1002 543 guts 1;
 #X obj 155 292 * 6;
 #X obj 181 254 + 1;
 #X obj 155 342 pack;
@@ -563,7 +563,7 @@ z m -10.2 6.76 c -16.409 -1.07188 2.85868 -24.3778 6.81644 -7.79128
 #X obj 181 223 float 40;
 #X obj 36 223 float 47;
 #X obj 797 75 loadbang;
-#N canvas 421 92 756 500 game-engine 0;
+#N canvas 82 159 756 500 game-engine 0;
 #X obj 37 14 inlet;
 #X obj 37 65 f;
 #X obj 67 65 + 1;
@@ -720,6 +720,11 @@ connect 10 0 11 0 \,;
 #X obj 134 296 send game-canvas;
 #X obj 254 100 send bullets;
 #X obj 254 79 f 14;
+#X obj 347 58 b;
+#X obj 347 100 send music;
+#X obj 318 19 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 347 80 list append verse synthbass pluck1 simple-snare;
 #X msg 134 132 obj 190 239 float 0 \, obj 190 319 + 1 \, obj 190 149
 bng 50 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1 \, text 235
 319 <- This will add '1' to the incoming value and also store that
@@ -731,20 +736,15 @@ time you fire a 'bang' above. \, obj 190 392 * 7 \, floatatom 223 369
 6 0 4 0 \, connect 8 0 10 0 \, connect 8 0 11 0 \, connect 11 0 12
 0 \, text 200 20 Level 7: My End is My Next Bang'd Beginning \, text
 200 20 ___________________________________________;
-#X obj 347 58 b;
-#X obj 347 100 send music;
-#X obj 318 19 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 347 80 list append verse synthbass pluck1 simple-snare;
-#X connect 0 0 5 0;
+#X connect 0 0 9 0;
 #X connect 0 0 1 0;
-#X connect 0 0 6 0;
+#X connect 0 0 5 0;
 #X connect 1 0 4 0;
 #X connect 4 0 3 0;
-#X connect 5 0 2 0;
-#X connect 6 0 9 0;
+#X connect 5 0 8 0;
+#X connect 7 0 5 0;
 #X connect 8 0 6 0;
-#X connect 9 0 7 0;
+#X connect 9 0 2 0;
 #X restore 232 198 pd accumulate;
 #X obj 132 146 select 0 1 2 3 4 5 6;
 #N canvas 677 249 537 300 dynamic 0;
@@ -776,6 +776,10 @@ empty empty empty 17 7 0 10 -262144 -1 -1 \, obj 396 328 send the_answer
 #X obj 134 436 send game-canvas;
 #X obj 254 100 send bullets;
 #X obj 254 79 f 21;
+#X obj 353 45 b;
+#X obj 353 107 send music;
+#X obj 353 69 list append verse simple-bass simple-snare guitar-arpeggios
+;
 #X msg 134 132 obj 259 125 bng 48 250 50 0 empty empty empty 17 7 0
 10 -262144 -1 -1 \, obj 259 199 metro 1000 \, obj 259 230 float 0 \,
 obj 259 268 == 0 \, obj 174 309 tgl 15 0 empty empty empty 17 7 0 10
@@ -783,29 +787,26 @@ obj 259 268 == 0 \, obj 174 309 tgl 15 0 empty empty empty 17 7 0 10
 10 -262144 -1 -1 0 1 \, obj 227 392 spigot 0 \, obj 157 391 spigot
 0 \, obj 227 329 bng 32 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1 \, obj 157 329 bng 32 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1 \, obj 157 452 + \, text 200 20 Level 11: I've Got Rhythm \,
-obj 227 367 f 21 \, obj 157 367 f 21 \, obj 157 473 select 42 \, obj
-157 494 send the_answer \, floatatom 237 413 5 0 0 0 - - - \, f 5 \,
-floatatom 167 412 5 0 0 0 - - - \, f 5 \, text 332 199 <- after you
-send a bang it will send out one bang every second. \, connect 4 0
-5 0 \, connect 5 0 6 0 \, connect 6 0 7 0 \, connect 6 0 8 0 \, connect
-6 0 11 1 \, connect 7 0 6 1 \, connect 7 0 9 0 \, connect 7 0 10 1
-\, connect 10 0 14 1 \, connect 10 0 20 0 \, connect 11 0 14 0 \, connect
-11 0 21 0 \, connect 12 0 16 0 \, connect 13 0 17 0 \, connect 14 0
-18 0 \, connect 16 0 10 0 \, connect 17 0 11 0 \, connect 18 0 19 0
-\, text 200 20 _________________________;
-#X obj 353 45 b;
-#X obj 353 107 send music;
-#X obj 353 69 list append verse simple-bass simple-snare guitar-arpeggios
+-1 -1 \, obj 157 452 + \, text 200 20 Level 11: You and Me and a Metronome
+Makes Three \, obj 227 367 f 21 \, obj 157 367 f 21 \, obj 157 473
+select 42 \, obj 157 494 send the_answer \, floatatom 237 413 5 0 0
+0 - - - \, f 5 \, floatatom 167 412 5 0 0 0 - - - \, f 5 \, text 332
+199 <- after you send a bang it will send out one bang every second.
+\, connect 4 0 5 0 \, connect 5 0 6 0 \, connect 6 0 7 0 \, connect
+6 0 8 0 \, connect 6 0 11 1 \, connect 7 0 6 1 \, connect 7 0 9 0 \,
+connect 7 0 10 1 \, connect 10 0 14 1 \, connect 10 0 20 0 \, connect
+11 0 14 0 \, connect 11 0 21 0 \, connect 12 0 16 0 \, connect 13 0
+17 0 \, connect 14 0 18 0 \, connect 16 0 10 0 \, connect 17 0 11 0
+\, connect 18 0 19 0 \, text 200 20 ________________________________________________
 ;
-#X connect 0 0 5 0;
+#X connect 0 0 8 0;
 #X connect 0 0 1 0;
-#X connect 0 0 6 0;
+#X connect 0 0 5 0;
 #X connect 1 0 4 0;
 #X connect 4 0 3 0;
-#X connect 5 0 2 0;
-#X connect 6 0 8 0;
-#X connect 8 0 7 0;
+#X connect 5 0 7 0;
+#X connect 7 0 6 0;
+#X connect 8 0 2 0;
 #X restore 394 322 pd metro-and-spigots;
 #N canvas 677 249 618 300 delay 0;
 #X obj 134 25 inlet;
@@ -1005,9 +1006,15 @@ change it to 'X' for '1'... \, connect 4 0 10 0 \, connect 6 0 7 0
 #X obj 134 436 send game-canvas;
 #X obj 254 100 send bullets;
 #X obj 254 79 f 21;
+#X obj 344 38 b;
+#X obj 344 100 send music;
+#X obj 344 62 list append verse simple-bass simple-snare guitar-arpeggios
+pluck2;
+#X obj 441 33 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
 #X msg 134 132 obj 367 193 bng 48 250 50 0 empty empty empty 17 7 0
 10 -262144 -1 -1 \, obj 367 286 float 0 \, obj 367 321 == 0 \, text
-268 38 Level 10: I've Got Rhythm \, text 268 38 _________________________
+268 38 Level 10: I've Got Quantized Rhythm \, text 268 38 __________________________________
 \, obj 367 257 metro 1500 \, obj 334 454 spigot \, obj 167 333 bng
 48 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1 \, obj 367 433
 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 \, obj 334 475
@@ -1016,21 +1023,15 @@ text 442 255 <- This metronome sends a bang every 1 1/2 seconds. \,
 connect 4 0 9 0 \, connect 5 0 6 0 \, connect 6 0 5 1 \, connect 6
 0 12 0 \, connect 9 0 5 0 \, connect 10 0 13 0 \, connect 11 0 15 0
 \, connect 12 0 10 1 \, connect 13 0 14 0 \, connect 15 0 10 0 \,;
-#X obj 344 38 b;
-#X obj 344 100 send music;
-#X obj 344 62 list append verse simple-bass simple-snare guitar-arpeggios
-pluck2;
-#X obj 441 33 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X connect 0 0 5 0;
+#X connect 0 0 9 0;
 #X connect 0 0 1 0;
-#X connect 0 0 6 0;
+#X connect 0 0 5 0;
 #X connect 1 0 4 0;
 #X connect 4 0 3 0;
-#X connect 5 0 2 0;
-#X connect 6 0 8 0;
+#X connect 5 0 7 0;
+#X connect 7 0 6 0;
 #X connect 8 0 7 0;
-#X connect 9 0 8 0;
+#X connect 9 0 2 0;
 #X restore 373 353 pd metro;
 #N canvas 674 144 639 474 toggle 0;
 #X obj 134 25 inlet;
@@ -1042,7 +1043,7 @@ pluck2;
 -1 -1 0 1 \, obj 209 418 select 42 \, obj 209 439 s the_answer \, text
 373 164 <- This is a toggle. When you send it a 'bang' the toggle displays
 an 'X' and sends a '1'. 'Bang' it again and it becomes empty and sends
-'0'. \, text 200 20 Level 5: To Be or Not \, text 200 20 _____________________
+'0'. \, text 200 20 Level 6: To Be or Not \, text 200 20 _____________________
 \, obj 357 298 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1 \, obj 306 298 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1 \, obj 298 271 select 0 1 \, obj 209 325 float 42 \, obj 209
@@ -1052,10 +1053,9 @@ an 'X' and sends a '1'. 'Bang' it again and it becomes empty and sends
 0 \, connect 12 1 10 0 \, connect 12 1 15 0 \, connect 13 0 17 0 \,
 connect 14 0 13 0 \, connect 15 0 17 1 \, connect 16 0 17 1 \, connect
 17 0 5 0 \,;
-#X obj 340 58 b;
-#X obj 340 100 send music;
-#X obj 339 78 list append verse siren-fade-single pluck-fade simple-snare
-;
+#X obj 374 51 b;
+#X obj 374 93 send music;
+#X obj 374 72 list append verse siren-to-bass pluck1 simple-snare;
 #X connect 0 0 5 0;
 #X connect 0 0 1 0;
 #X connect 0 0 6 0;
@@ -1064,7 +1064,7 @@ connect 14 0 13 0 \, connect 15 0 17 1 \, connect 16 0 17 1 \, connect
 #X connect 5 0 2 0;
 #X connect 6 0 8 0;
 #X connect 8 0 7 0;
-#X restore 198 252 pd toggle;
+#X restore 215 223 pd toggle;
 #N canvas 553 178 608 363 gate 0;
 #X obj 134 25 inlet;
 #X obj 254 58 b;
@@ -1078,22 +1078,20 @@ connect 14 0 13 0 \, connect 15 0 17 1 \, connect 16 0 17 1 \, connect
 is a spigot. Input at left only passes if the input at right has received
 a number that isn't a '0'. \, connect 4 0 5 0 \, connect 5 0 6 0 \,
 connect 6 0 8 0 \, connect 7 0 6 1 \, connect 8 0 9 0 \, text 200 20
-Level 6: Heaven's Gate \, text 200 20 ______________________;
-#X obj 346 57 b;
-#X obj 346 99 send music;
-#X obj 430 37 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 346 78 list append verse siren-to-bass pluck1 simple-snare;
+Level 5: Heaven's Gate \, text 200 20 ______________________;
+#X obj 353 56 b;
+#X obj 352 98 send music;
+#X obj 352 76 list append verse siren-fade-single pluck-fade simple-snare
+;
 #X connect 0 0 5 0;
 #X connect 0 0 1 0;
 #X connect 0 0 6 0;
 #X connect 1 0 4 0;
 #X connect 4 0 3 0;
 #X connect 5 0 2 0;
-#X connect 6 0 9 0;
-#X connect 8 0 9 0;
-#X connect 9 0 7 0;
-#X restore 215 221 pd gate;
+#X connect 6 0 8 0;
+#X connect 8 0 7 0;
+#X restore 198 251 pd gate;
 #N canvas 408 232 721 435 line 0;
 #X obj 134 25 inlet;
 #X obj 254 58 b;
@@ -1393,8 +1391,8 @@ connect 14 0 16 1 \, connect 15 0 20 0 \, connect 15 1 17 0 \, connect
 #X connect 12 1 9 0;
 #X connect 12 2 7 0;
 #X connect 12 3 10 0;
-#X connect 12 4 25 0;
-#X connect 12 5 26 0;
+#X connect 12 4 26 0;
+#X connect 12 5 25 0;
 #X connect 12 6 11 0;
 #X connect 12 7 22 0;
 #X connect 18 0 34 0;
@@ -1437,7 +1435,7 @@ connect 14 0 16 1 \, connect 15 0 20 0 \, connect 15 1 17 0 \, connect
 #X obj 786 454 list append;
 #X obj 786 475 send sfx;
 #X msg 786 314 bbox \, class;
-#N canvas 717 92 574 583 check_for_object 0;
+#N canvas 717 92 574 583 check_for_object 1;
 #X obj 38 20 inlet;
 #X msg 139 88 72 236;
 #X msg 194 88 -76 60;
@@ -1804,7 +1802,7 @@ shooting the final [s the_answer] object;
 #X obj 58 265 route 0 1 2 3;
 #X obj 85 515 del 140;
 #X obj 58 611 rev1~;
-#N canvas 905 222 450 300 cut 0;
+#N canvas 373 246 450 300 cut 1;
 #X obj 102 10 inlet;
 #X obj 104 152 list split;
 #X msg 224 133 5;
@@ -1825,7 +1823,6 @@ shooting the final [s the_answer] object;
 #X restore 58 440 pd cut;
 #X msg 112 585 2;
 #X obj 85 395 random 3;
-#X msg 58 353 0 12 19 24 31 36;
 #N canvas 291 46 408 438 ks 0;
 #X obj 260 30 inlet;
 #X obj 67 130 noise~;
@@ -1909,16 +1906,17 @@ shooting the final [s the_answer] object;
 #X obj 278 404 random 4;
 #X obj 58 632 *~ 0.14;
 #X obj 278 494 random 2;
+#X msg 58 353 0 12 19 24 31 36;
 #X connect 0 0 2 0;
 #X connect 1 0 3 0;
 #X connect 1 1 12 0;
 #X connect 2 0 1 0;
 #X connect 2 1 0 1;
-#X connect 3 0 48 0;
-#X connect 4 0 47 0;
-#X connect 5 0 47 0;
-#X connect 6 0 47 0;
-#X connect 7 0 47 0;
+#X connect 3 0 47 0;
+#X connect 4 0 46 0;
+#X connect 5 0 46 0;
+#X connect 6 0 46 0;
+#X connect 7 0 46 0;
 #X connect 8 0 14 0;
 #X connect 9 0 8 0;
 #X connect 9 1 16 0;
@@ -1928,62 +1926,62 @@ shooting the final [s the_answer] object;
 #X connect 11 2 6 0;
 #X connect 11 3 7 0;
 #X connect 12 0 0 0;
-#X connect 13 0 58 0;
+#X connect 13 0 57 0;
 #X connect 14 0 2 0;
 #X connect 15 0 13 1;
 #X connect 16 0 8 1;
-#X connect 17 0 9 0;
-#X connect 18 0 13 0;
+#X connect 17 0 13 0;
+#X connect 18 0 19 0;
 #X connect 19 0 20 0;
-#X connect 20 0 21 0;
-#X connect 21 0 49 0;
-#X connect 22 0 39 0;
-#X connect 23 0 15 0;
-#X connect 27 0 26 0;
-#X connect 27 0 43 1;
-#X connect 28 0 43 1;
-#X connect 29 0 28 0;
-#X connect 30 0 35 0;
-#X connect 31 0 32 0;
-#X connect 31 1 33 0;
-#X connect 31 2 34 0;
-#X connect 31 3 34 0;
-#X connect 32 0 47 0;
-#X connect 33 0 47 0;
-#X connect 34 0 47 0;
-#X connect 35 0 11 0;
-#X connect 35 1 31 0;
-#X connect 36 0 40 1;
-#X connect 37 0 38 0;
-#X connect 39 0 19 0;
-#X connect 39 1 41 0;
-#X connect 40 0 30 1;
+#X connect 20 0 48 0;
+#X connect 21 0 38 0;
+#X connect 22 0 15 0;
+#X connect 26 0 25 0;
+#X connect 26 0 42 1;
+#X connect 27 0 42 1;
+#X connect 28 0 27 0;
+#X connect 29 0 34 0;
+#X connect 30 0 31 0;
+#X connect 30 1 32 0;
+#X connect 30 2 33 0;
+#X connect 30 3 33 0;
+#X connect 31 0 46 0;
+#X connect 32 0 46 0;
+#X connect 33 0 46 0;
+#X connect 34 0 11 0;
+#X connect 34 1 30 0;
+#X connect 35 0 39 1;
+#X connect 36 0 37 0;
+#X connect 38 0 18 0;
+#X connect 38 1 40 0;
+#X connect 39 0 29 1;
+#X connect 40 0 41 0;
+#X connect 41 0 39 0;
 #X connect 41 0 42 0;
-#X connect 42 0 40 0;
-#X connect 42 0 43 0;
-#X connect 43 0 26 0;
-#X connect 43 0 46 0;
-#X connect 44 0 26 0;
-#X connect 44 0 43 1;
-#X connect 45 0 41 1;
-#X connect 46 0 45 0;
+#X connect 42 0 25 0;
+#X connect 42 0 45 0;
+#X connect 43 0 25 0;
+#X connect 43 0 42 1;
+#X connect 44 0 40 1;
+#X connect 45 0 44 0;
+#X connect 46 0 59 0;
+#X connect 46 1 3 1;
 #X connect 47 0 17 0;
-#X connect 47 1 3 1;
-#X connect 48 0 18 0;
-#X connect 49 0 30 0;
-#X connect 49 1 50 0;
-#X connect 50 0 51 0;
-#X connect 51 0 56 0;
-#X connect 51 1 52 0;
-#X connect 52 0 12 1;
-#X connect 53 0 59 0;
-#X connect 54 0 12 1;
-#X connect 55 0 53 0;
-#X connect 56 0 57 0;
-#X connect 57 0 55 0;
-#X connect 58 0 24 0;
-#X connect 58 0 25 0;
-#X connect 59 0 54 0;
+#X connect 48 0 29 0;
+#X connect 48 1 49 0;
+#X connect 49 0 50 0;
+#X connect 50 0 55 0;
+#X connect 50 1 51 0;
+#X connect 51 0 12 1;
+#X connect 52 0 58 0;
+#X connect 53 0 12 1;
+#X connect 54 0 52 0;
+#X connect 55 0 56 0;
+#X connect 56 0 54 0;
+#X connect 57 0 23 0;
+#X connect 57 0 24 0;
+#X connect 58 0 53 0;
+#X connect 59 0 9 0;
 #X restore 795 246 pd guitar-arpeggios;
 #X msg 107 58 0;
 #X obj 107 79 send omni;
@@ -2361,7 +2359,7 @@ shooting the final [s the_answer] object;
 #X restore 923 246 pd simple-snare;
 #N canvas 115 68 1190 634 baseline 0;
 #X obj 326 343 phasor~;
-#X msg 326 186 \$12;
+#X msg 326 186 \$15;
 #X obj 326 227 mtof;
 #X obj 326 279 line~;
 #X obj 1065 87 + 1;
@@ -2534,7 +2532,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X connect 72 0 11 0;
 #X restore 469 285 pd baseline;
 #N canvas 1 37 682 683 siren 0;
-#X msg 269 204 \$3;
+#X msg 269 204 \$4;
 #X obj 269 235 mtof;
 #X obj 269 287 line~;
 #X obj 479 152 + 1;
@@ -2552,7 +2550,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X obj 350 -2 f;
 #X msg 269 173 \$1 \$2 \$2 \$2;
 #X obj 269 -87 trigger anything anything;
-#X msg 789 274 \$3;
+#X msg 789 274 \$4;
 #X obj 789 298 mtof;
 #X obj 789 346 line~;
 #X obj 969 182 + 1;
@@ -2705,7 +2703,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X restore 713 285 pd siren;
 #N canvas 19 60 947 608 simple-bass 0;
 #X obj 195 273 phasor~;
-#X msg 195 166 \$12;
+#X msg 195 166 \$15;
 #X obj 195 197 mtof;
 #X obj 195 249 line~;
 #X msg 195 74 40 52;
@@ -2817,7 +2815,7 @@ adddollar 1 \, add2 0 0 0 0 0 0 0 0 0;
 #X restore 76 285 pd simple-bass;
 #N canvas 0 19 1366 684 stepwise-bass 0;
 #X obj 215 303 phasor~;
-#X msg 215 146 \$12;
+#X msg 215 146 \$15;
 #X obj 215 177 mtof;
 #X obj 215 229 line~;
 #X obj 565 13 + 1;
@@ -2916,7 +2914,7 @@ adddollar 1 \, add2 0 0 0 0 0 0 0 0 0;
 adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 2 \, adddollar 2 \, adddollar 3 \, adddollar 3 \, adddollar 3 \, adddollar
 3;
-#X obj 155 423 *~ 0.15;
+#X obj 155 423 *~ 0.1;
 #X connect 0 0 31 1;
 #X connect 1 0 2 0;
 #X connect 1 0 35 0;
@@ -3044,7 +3042,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X restore 167 285 pd stepwise-bass;
 #N canvas 288 49 565 650 siren-to-bass 0;
 #X obj 200 380 phasor~;
-#X msg 75 179 \$3;
+#X msg 75 179 \$4;
 #X obj 200 264 mtof;
 #X obj 200 311 line~;
 #X msg 75 55 40 52;
@@ -3151,7 +3149,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X restore 539 285 pd siren-to-bass;
 #N canvas 440 34 584 635 siren-fade 0;
 #X obj 192 372 phasor~;
-#X msg 95 246 \$3;
+#X msg 95 246 \$4;
 #X obj 192 300 mtof;
 #X obj 192 348 line~;
 #X msg 95 109 40 52;
@@ -3271,7 +3269,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X restore 713 335 pd siren-fade;
 #N canvas 440 34 584 670 siren-fade-long 0;
 #X obj 192 372 phasor~;
-#X msg 95 246 \$3;
+#X msg 95 246 \$4;
 #X obj 192 300 mtof;
 #X obj 192 348 line~;
 #X msg 95 109 40 52;
@@ -3391,7 +3389,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X restore 803 335 pd siren-fade-long;
 #N canvas 440 34 584 670 siren-fade-single 0;
 #X obj 192 372 phasor~;
-#X msg 95 246 \$3;
+#X msg 95 246 \$4;
 #X obj 192 300 mtof;
 #X obj 192 348 line~;
 #X msg 95 109 40 52;
@@ -3698,7 +3696,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X restore 642 175 pd pluck-fade;
 #N canvas 0 19 797 634 level8-bass 0;
 #X obj 326 343 phasor~;
-#X msg 326 186 \$12;
+#X msg 326 186 \$15;
 #X obj 326 227 mtof;
 #X obj 326 279 line~;
 #X obj 645 127 + 1;
@@ -3823,7 +3821,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X obj 286 494 *~ 0.5;
 #X obj 493 494 *~ 0.5;
 #N canvas 76 51 1221 608 stepwise-osc 0;
-#X msg 215 146 \$12;
+#X msg 215 146 \$15;
 #X obj 215 177 mtof;
 #X obj 215 229 line~;
 #X obj 565 13 + 1;
@@ -3924,7 +3922,6 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X obj 215 303 osc~;
 #X obj 681 130 r stepwise-osc;
 #X obj 215 345 clip~ -1 1;
-#X obj 155 463 *~ 0.1;
 #X obj 279 216 v \$0-x;
 #X obj 266 168 metro 100;
 #X obj 254 144 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
@@ -3935,6 +3932,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X obj 274 308 line~;
 #X obj 215 324 *~;
 #X obj 529 375 loadbang;
+#X obj 155 463 *~ 0.1;
 #X connect 0 0 1 0;
 #X connect 0 0 34 0;
 #X connect 1 0 44 0;
@@ -3976,7 +3974,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X connect 28 0 26 1;
 #X connect 29 0 31 0;
 #X connect 30 0 51 0;
-#X connect 30 0 95 0;
+#X connect 30 0 104 0;
 #X connect 31 0 30 0;
 #X connect 32 0 31 0;
 #X connect 33 0 32 0;
@@ -4007,7 +4005,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X connect 48 0 61 0;
 #X connect 49 0 61 0;
 #X connect 50 0 61 0;
-#X connect 51 0 95 0;
+#X connect 51 0 104 0;
 #X connect 52 0 53 0;
 #X connect 53 0 51 1;
 #X connect 54 0 25 0;
@@ -4055,20 +4053,20 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X connect 89 0 78 0;
 #X connect 90 0 87 0;
 #X connect 91 0 56 0;
-#X connect 92 0 103 0;
+#X connect 92 0 102 0;
 #X connect 93 0 13 0;
 #X connect 94 0 30 1;
-#X connect 95 0 9 0;
-#X connect 95 0 10 0;
-#X connect 96 0 100 0;
+#X connect 95 0 99 0;
+#X connect 96 0 95 0;
 #X connect 97 0 96 0;
-#X connect 98 0 97 0;
-#X connect 99 0 102 0;
-#X connect 100 0 101 0;
-#X connect 101 0 99 0;
-#X connect 102 0 103 1;
-#X connect 103 0 94 0;
-#X connect 104 0 97 0;
+#X connect 98 0 101 0;
+#X connect 99 0 100 0;
+#X connect 100 0 98 0;
+#X connect 101 0 102 1;
+#X connect 102 0 94 0;
+#X connect 103 0 96 0;
+#X connect 104 0 9 0;
+#X connect 104 0 10 0;
 #X restore 157 335 pd stepwise-osc;
 #N canvas 0 24 597 402 shuffle 0;
 #X obj 204 17 inlet;
@@ -4110,7 +4108,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X connect 16 0 7 0;
 #X restore 923 166 pd shuffle;
 #N canvas 76 51 1221 608 stepwise-fm 0;
-#X msg 215 146 \$12;
+#X msg 215 146 \$15;
 #X obj 215 177 mtof;
 #X obj 215 229 line~;
 #X obj 565 13 + 1;
@@ -4250,7 +4248,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X restore 546 377 pd bang-mod;
 #X obj 681 130 r stepwise-fm;
 #X msg 274 287 \$1 900;
-#X obj 155 463 *~ 0.06;
+#X obj 155 463 *~ 0.05;
 #X connect 0 0 1 0;
 #X connect 0 0 34 0;
 #X connect 1 0 44 0;
@@ -4556,9 +4554,9 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X connect 0 0 45 0;
 #X connect 0 0 36 0;
 #X connect 0 0 54 0;
-#X connect 0 0 55 0;
 #X connect 0 0 56 0;
 #X connect 0 0 57 0;
+#X connect 0 0 55 0;
 #X connect 1 0 0 1;
 #X connect 2 0 46 0;
 #X connect 3 0 20 0;
@@ -4604,7 +4602,7 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X obj 385 305 del 450;
 #X obj 620 203 del 600;
 #X obj 271 325 hsl 91 15 0 1 0 0 \$0-master \$0-from-nowhere Volume
-29 8 0 10 -237503 -1 -1 6700 1;
+29 8 0 10 -237503 -1 -1 7300 1;
 #X connect 0 0 2 0;
 #X connect 0 0 18 0;
 #X connect 1 0 3 0;
@@ -4710,20 +4708,58 @@ adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar 2 \, adddollar
 #X connect 88 0 86 0;
 #X connect 89 0 68 0;
 #X coords 0 -1 1 1 115 61 1 262 284;
-#X restore 664 61 pd guts;
-#X obj 664 15 struct foo;
-#X obj 450 200 bng 61 250 50 0 empty empty empty 17 7 0 10 -262144
+#X restore 734 61 pd guts;
+#X obj 734 15 struct foo;
+#X obj 74 87 bng 26 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 74 119 float 42;
+#X obj 119 154 tgl 27 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 158 224 tgl 27 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 164 338 tgl 27 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 203 408 tgl 27 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 119 195 * 43;
+#X obj 74 243 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 158 313 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1;
-#X obj 450 370 float 42;
-#X obj 450 390 send the_answer;
-#X text 200 50 Use the arrow keys to move;
-#X text 200 80 Click 'f' to turn on the flashlight. When you hit an
-object that you can shoot you'll see an exclamation mark.;
-#X text 200 120 Click 'b' to shoot!;
-#X text 200 20 Level 1: Send the Answer;
-#X text 200 20 ________________________;
+#X obj 119 427 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 164 527 select 42;
+#X obj 164 548 send the_answer;
+#X obj 203 498 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 200 20 Level 16: Straighten Up and Float Right;
+#X obj 158 265 * 43;
+#X obj 164 379 * 43;
+#X obj 203 449 * 43;
+#X obj 119 292 moses 0;
+#X obj 164 476 moses 0;
+#X obj 74 222 moses 43;
+#X obj 119 406 moses 43;
+#X text 200 20 _______________________________________;
 #X scalar foo \;;
 #X connect 2 0 1 0;
 #X connect 2 1 1 1;
 #X connect 4 0 5 0;
-#X connect 5 0 6 0;
+#X connect 5 0 23 0;
+#X connect 6 0 10 0;
+#X connect 7 0 18 0;
+#X connect 8 0 19 0;
+#X connect 9 0 20 0;
+#X connect 10 0 23 1;
+#X connect 14 0 15 0;
+#X connect 18 0 21 1;
+#X connect 19 0 24 1;
+#X connect 20 0 22 1;
+#X connect 21 0 24 0;
+#X connect 21 1 12 0;
+#X connect 22 0 14 0;
+#X connect 22 1 16 0;
+#X connect 23 0 11 0;
+#X connect 23 1 21 0;
+#X connect 24 0 13 0;
+#X connect 24 1 22 0;