diff --git a/paper/figures/BH_scaling.eps b/paper/figures/BH_scaling.eps
new file mode 100644
index 0000000000000000000000000000000000000000..9681494a5d9cb012902edc0bf5e6d3f8bc0f32bf
--- /dev/null
+++ b/paper/figures/BH_scaling.eps
@@ -0,0 +1,408 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: MATLAB, The MathWorks, Inc. Version 8.0.0.783 (R2012b). Operating System: Linux 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64.
+%%Title: figures/BH_scaling.eps
+%%CreationDate: 11/01/2013  17:10:24
+%%DocumentNeededFonts: Helvetica
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox:    25    16   788   297
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s {show newpath} bdef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile 
+  3 index 0 eq {/ASCIIHexDecode filter}
+  {/ASCII85Decode filter 3 index 2 eq {/RunLengthDecode filter} if }
+  ifelse exch readstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:    25    16   788   297
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode 0192 3636 csm
+
+  114    65  9156  3375 rc
+85 dict begin %Colortable dictionary
+/c0 { 0.000000 0.000000 0.000000 sr} bdef
+/c1 { 1.000000 1.000000 1.000000 sr} bdef
+/c2 { 0.900000 0.000000 0.000000 sr} bdef
+/c3 { 0.000000 0.820000 0.000000 sr} bdef
+/c4 { 0.000000 0.000000 0.800000 sr} bdef
+/c5 { 0.910000 0.820000 0.320000 sr} bdef
+/c6 { 1.000000 0.260000 0.820000 sr} bdef
+/c7 { 0.000000 0.820000 0.820000 sr} bdef
+c0
+1 j
+1 sg
+   0    0 9404 3445 rf
+6 w
+0 2756 2821 0 0 -2756 282 3100 4 MP
+PP
+-2821 0 0 2756 2821 0 0 -2756 282 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+ 282 3100 mt 3103 3100 L
+ 282 3100 mt  282  344 L
+ 685 3100 mt  685 3071 L
+ 685  344 mt  685  372 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+ 619 3245 mt 
+(10) s
+1132 3100 mt 1132 3071 L
+1132  344 mt 1132  372 L
+1066 3245 mt 
+(20) s
+1580 3100 mt 1580 3071 L
+1580  344 mt 1580  372 L
+1514 3245 mt 
+(30) s
+2028 3100 mt 2028 3071 L
+2028  344 mt 2028  372 L
+1962 3245 mt 
+(40) s
+2476 3100 mt 2476 3071 L
+2476  344 mt 2476  372 L
+2410 3245 mt 
+(50) s
+2923 3100 mt 2923 3071 L
+2923  344 mt 2923  372 L
+2857 3245 mt 
+(60) s
+ 282 2706 mt  310 2706 L
+3103 2706 mt 3074 2706 L
+ 114 2750 mt 
+(10) s
+ 282 2268 mt  310 2268 L
+3103 2268 mt 3074 2268 L
+ 114 2312 mt 
+(20) s
+ 282 1831 mt  310 1831 L
+3103 1831 mt 3074 1831 L
+ 114 1875 mt 
+(30) s
+ 282 1393 mt  310 1393 L
+3103 1393 mt 3074 1393 L
+ 114 1437 mt 
+(40) s
+ 282  956 mt  310  956 L
+3103  956 mt 3074  956 L
+ 114 1000 mt 
+(50) s
+ 282  518 mt  310  518 L
+3103  518 mt 3074  518 L
+ 114  562 mt 
+(60) s
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+gs 282 344 2822 2757 rc
+24 w
+45 122 45 -42 45 -15 45 46 44 -76 45 108 45 -21 45 -65 
+44 40 45 -4 45 -41 45 24 45 -10 44 5 45 0 45 -17 
+45 6 44 -58 45 36 45 -29 45 26 45 -39 44 8 45 -44 
+45 -12 45 5 44 -34 45 -10 45 -18 45 -12 45 -22 44 -60 
+45 2 45 -39 45 -18 44 -52 45 -26 45 -38 45 -39 45 -41 
+44 -37 45 -38 45 -36 45 -40 44 -41 45 -41 45 -42 45 -42 
+45 -39 44 -40 45 -42 45 -42 45 -43 44 -42 45 -41 45 -41 
+45 -43 45 -42 44 -43 45 -43 45 -42 45 -43 44 -44 282 3100 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+2568 1516 mt 
+(3539ms) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1464 3388 mt 
+(nr. cores) s
+gs 282 344 2822 2757 rc
+DO
+16.8 w
+2821 -2756 282 3100 2 MP stroke
+gr
+
+16.8 w
+DO
+1115  249 mt 
+(Speedup Barnes-Hut) s
+SO
+6 w
+1 sg
+0 2757 5642 0 0 -2757 3573 3100 4 MP
+PP
+-5642 0 0 2757 5642 0 0 -2757 3573 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+3573 3100 mt 9215 3100 L
+3573 3100 mt 3573  343 L
+4379 3100 mt 4379 3043 L
+4379  344 mt 4379  400 L
+4313 3245 mt 
+(10) s
+5274 3100 mt 5274 3043 L
+5274  344 mt 5274  400 L
+5208 3245 mt 
+(20) s
+6170 3100 mt 6170 3043 L
+6170  344 mt 6170  400 L
+6104 3245 mt 
+(30) s
+7065 3100 mt 7065 3043 L
+7065  344 mt 7065  400 L
+6999 3245 mt 
+(40) s
+7961 3100 mt 7961 3043 L
+7961  344 mt 7961  400 L
+7895 3245 mt 
+(50) s
+8856 3100 mt 8856 3043 L
+8856  344 mt 8856  400 L
+8790 3245 mt 
+(60) s
+3573 3100 mt 3629 3100 L
+9215 3100 mt 9158 3100 L
+3472 3144 mt 
+(0) s
+3573 2598 mt 3629 2598 L
+9215 2598 mt 9158 2598 L
+3372 2642 mt 
+(0.2) s
+3573 2097 mt 3629 2097 L
+9215 2097 mt 9158 2097 L
+3372 2141 mt 
+(0.4) s
+3573 1596 mt 3629 1596 L
+9215 1596 mt 9158 1596 L
+3372 1640 mt 
+(0.6) s
+3573 1095 mt 3629 1095 L
+9215 1095 mt 9158 1095 L
+3372 1139 mt 
+(0.8) s
+3573  594 mt 3629  594 L
+9215  594 mt 9158  594 L
+3472  638 mt 
+(1) s
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+gs 3573 344 5643 2757 rc
+24 w
+90 132 90 -17 89 9 90 68 89 -48 90 130 89 7 90 -38 
+89 69 90 26 90 -14 89 58 90 21 89 40 90 36 89 16 
+90 45 89 -32 90 87 90 4 89 79 90 -6 89 58 90 -12 
+89 34 90 62 89 3 90 43 90 33 89 43 90 30 89 -37 
+90 75 89 3 90 43 89 -22 90 30 90 6 89 5 90 2 
+89 11 90 8 89 15 90 5 89 5 90 2 90 1 89 -2 
+90 14 89 8 90 3 89 4 90 -3 89 -2 90 11 90 15 
+89 -1 90 5 89 7 90 -3 89 11 90 9 89 19 3573 594 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+8909 1650 mt 
+(52%) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+6166 3388 mt 
+(nr. cores) s
+gs 3573 344 5643 2757 rc
+DO
+16.8 w
+5642 0 3573 594 2 MP stroke
+gr
+
+16.8 w
+DO
+5586  249 mt 
+(Parallel Efficiency Barnes-Hut) s
+SO
+6 w
+
+end %%Color Dict
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
diff --git a/paper/figures/BH_scaling.pdf b/paper/figures/BH_scaling.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..154f7c0c06b58461c4ffcbe1e29b9e240f4f22a3
Binary files /dev/null and b/paper/figures/BH_scaling.pdf differ
diff --git a/paper/figures/CellParts.pdf b/paper/figures/CellParts.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6d2b58b44648d95cb4410ca24287208baf9587cb
Binary files /dev/null and b/paper/figures/CellParts.pdf differ
diff --git a/paper/figures/CellParts.svg b/paper/figures/CellParts.svg
new file mode 100644
index 0000000000000000000000000000000000000000..78a4e8288f01cbe02d88fc9b3624ccfcfd14cfa3
--- /dev/null
+++ b/paper/figures/CellParts.svg
@@ -0,0 +1,1095 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1052.3622"
+   height="744.09448"
+   id="svg10294"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="CellParts.svg">
+  <defs
+     id="defs10296">
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         id="path3851"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         id="path3854"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="429.34598"
+     inkscape:cy="449.53119"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1280"
+     inkscape:window-height="753"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid10302"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata10299">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.2677)">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 210,692.36218 360,0 0,20"
+       id="path11220"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11222"
+       d="m 270,688.36218 340,0 0,24"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 330,696.36218 320,0 0,16"
+       id="path11224"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11226"
+       d="m 390,684.36218 290,0 0,28"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11136"
+       d="m 180,592.36218 260,0 0,20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 240,588.36218 280,0 0,24"
+       id="path11138"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11140"
+       d="m 300,596.36218 270,0 0,16"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 360,584.36218 350,0 0,28"
+       id="path11142"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10304"
+       width="10"
+       height="10"
+       x="-760.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-750.19794"
+       height="10"
+       width="10"
+       id="rect10814"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-740.19794"
+       height="10"
+       width="10"
+       id="rect10816"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10818"
+       width="10"
+       height="10"
+       x="-730.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-720.19794"
+       height="10"
+       width="10"
+       id="rect10820"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10822"
+       width="10"
+       height="10"
+       x="-710.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10824"
+       width="10"
+       height="10"
+       x="-700.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-690.19794"
+       height="10"
+       width="10"
+       id="rect10826"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-680.19794"
+       height="10"
+       width="10"
+       id="rect10828"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10830"
+       width="10"
+       height="10"
+       x="-670.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10832"
+       width="10"
+       height="10"
+       x="-660.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-650.19794"
+       height="10"
+       width="10"
+       id="rect10834"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10836"
+       width="10"
+       height="10"
+       x="-640.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-630.19794"
+       height="10"
+       width="10"
+       id="rect10838"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-620.19794"
+       height="10"
+       width="10"
+       id="rect10840"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10842"
+       width="10"
+       height="10"
+       x="-610.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10844"
+       width="10"
+       height="10"
+       x="-600.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-590.19794"
+       height="10"
+       width="10"
+       id="rect10846"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-580.19794"
+       height="10"
+       width="10"
+       id="rect10848"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10850"
+       width="10"
+       height="10"
+       x="-570.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-560.19794"
+       height="10"
+       width="10"
+       id="rect10852"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10854"
+       width="10"
+       height="10"
+       x="-550.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10856"
+       width="10"
+       height="10"
+       x="-540.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-530.19794"
+       height="10"
+       width="10"
+       id="rect10858"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-520.19794"
+       height="10"
+       width="10"
+       id="rect10860"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10862"
+       width="10"
+       height="10"
+       x="-510.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10864"
+       width="10"
+       height="10"
+       x="-500.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-490.19794"
+       height="10"
+       width="10"
+       id="rect10866"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10868"
+       width="10"
+       height="10"
+       x="-480.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-470.19794"
+       height="10"
+       width="10"
+       id="rect10870"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-460.19794"
+       height="10"
+       width="10"
+       id="rect10872"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10874"
+       width="10"
+       height="10"
+       x="-450.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10876"
+       width="40"
+       height="40"
+       x="-270.19794"
+       y="472.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="572.36218"
+       x="-300.19794"
+       height="40"
+       width="40"
+       id="rect10878"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10880"
+       width="40"
+       height="40"
+       x="-240.19795"
+       y="572.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="572.36218"
+       x="-180.19795"
+       height="40"
+       width="40"
+       id="rect10882"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10884"
+       width="40"
+       height="40"
+       x="-360.19794"
+       y="572.36218"
+       transform="scale(-1,1)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 270.19795,492.36218 169.80205,0 0,20"
+       id="path10886"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <rect
+       y="612.36218"
+       x="-760.19794"
+       height="10"
+       width="10"
+       id="rect11072"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11074"
+       width="10"
+       height="10"
+       x="-750.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11076"
+       width="10"
+       height="10"
+       x="-740.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-730.19794"
+       height="10"
+       width="10"
+       id="rect11078"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11080"
+       width="10"
+       height="10"
+       x="-720.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-710.19794"
+       height="10"
+       width="10"
+       id="rect11082"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-700.19794"
+       height="10"
+       width="10"
+       id="rect11084"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11086"
+       width="10"
+       height="10"
+       x="-690.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11088"
+       width="10"
+       height="10"
+       x="-680.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-670.19794"
+       height="10"
+       width="10"
+       id="rect11090"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-660.19794"
+       height="10"
+       width="10"
+       id="rect11092"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11094"
+       width="10"
+       height="10"
+       x="-650.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-640.19794"
+       height="10"
+       width="10"
+       id="rect11096"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11098"
+       width="10"
+       height="10"
+       x="-630.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11100"
+       width="10"
+       height="10"
+       x="-620.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-610.19794"
+       height="10"
+       width="10"
+       id="rect11102"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-600.19794"
+       height="10"
+       width="10"
+       id="rect11104"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11106"
+       width="10"
+       height="10"
+       x="-590.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11108"
+       width="10"
+       height="10"
+       x="-580.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-570.19794"
+       height="10"
+       width="10"
+       id="rect11110"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11112"
+       width="10"
+       height="10"
+       x="-560.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-550.19794"
+       height="10"
+       width="10"
+       id="rect11114"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-540.19794"
+       height="10"
+       width="10"
+       id="rect11116"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11118"
+       width="10"
+       height="10"
+       x="-530.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11120"
+       width="10"
+       height="10"
+       x="-520.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-510.19794"
+       height="10"
+       width="10"
+       id="rect11122"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-500.19794"
+       height="10"
+       width="10"
+       id="rect11124"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11126"
+       width="10"
+       height="10"
+       x="-490.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-480.19794"
+       height="10"
+       width="10"
+       id="rect11128"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11130"
+       width="10"
+       height="10"
+       x="-470.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11132"
+       width="10"
+       height="10"
+       x="-460.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-450.19794"
+       height="10"
+       width="10"
+       id="rect11134"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11144"
+       width="40"
+       height="40"
+       x="-330.19794"
+       y="672.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="672.36218"
+       x="-270.19794"
+       height="40"
+       width="40"
+       id="rect11146"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11148"
+       width="40"
+       height="40"
+       x="-210.19795"
+       y="672.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="672.36218"
+       x="-390.19794"
+       height="40"
+       width="40"
+       id="rect11150"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11152"
+       width="10"
+       height="10"
+       x="-760.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-750.19794"
+       height="10"
+       width="10"
+       id="rect11154"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-740.19794"
+       height="10"
+       width="10"
+       id="rect11156"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11158"
+       width="10"
+       height="10"
+       x="-730.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-720.19794"
+       height="10"
+       width="10"
+       id="rect11160"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11162"
+       width="10"
+       height="10"
+       x="-710.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11164"
+       width="10"
+       height="10"
+       x="-700.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-690.19794"
+       height="10"
+       width="10"
+       id="rect11166"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-680.19794"
+       height="10"
+       width="10"
+       id="rect11168"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11170"
+       width="10"
+       height="10"
+       x="-670.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11172"
+       width="10"
+       height="10"
+       x="-660.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-650.19794"
+       height="10"
+       width="10"
+       id="rect11174"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11176"
+       width="10"
+       height="10"
+       x="-640.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-630.19794"
+       height="10"
+       width="10"
+       id="rect11178"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-620.19794"
+       height="10"
+       width="10"
+       id="rect11180"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11182"
+       width="10"
+       height="10"
+       x="-610.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11184"
+       width="10"
+       height="10"
+       x="-600.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-590.19794"
+       height="10"
+       width="10"
+       id="rect11186"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-580.19794"
+       height="10"
+       width="10"
+       id="rect11188"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11190"
+       width="10"
+       height="10"
+       x="-570.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-560.19794"
+       height="10"
+       width="10"
+       id="rect11192"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11194"
+       width="10"
+       height="10"
+       x="-550.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11196"
+       width="10"
+       height="10"
+       x="-540.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-530.19794"
+       height="10"
+       width="10"
+       id="rect11198"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-520.19794"
+       height="10"
+       width="10"
+       id="rect11200"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11202"
+       width="10"
+       height="10"
+       x="-510.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11204"
+       width="10"
+       height="10"
+       x="-500.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-490.19794"
+       height="10"
+       width="10"
+       id="rect11206"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11208"
+       width="10"
+       height="10"
+       x="-480.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-470.19794"
+       height="10"
+       width="10"
+       id="rect11210"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-460.19794"
+       height="10"
+       width="10"
+       id="rect11212"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11214"
+       width="10"
+       height="10"
+       x="-450.19794"
+       y="712.36218" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       d="m 160,572.36218 0,-20 90,0 0,-40"
+       id="path11228"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 250,552.36218 90,0 0,20"
+       id="path11230"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       d="m 220,572.36218 0,-20"
+       id="path11232"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       d="m 280,572.36218 0,-20"
+       id="path11234"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12170"
+       d="m 190,672.36218 0,-20 90,0 0,-40"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       sodipodi:nodetypes="cccc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12172"
+       d="m 280,652.36218 90,0 0,20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12174"
+       d="m 250,672.36218 0,-20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12176"
+       d="m 310,672.36218 0,-20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       x="110"
+       y="496.36218"
+       id="text12197"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan12199"
+         x="110"
+         y="496.36218">level 0</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text12201"
+       y="596.36218"
+       x="110"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       xml:space="preserve"><tspan
+         y="596.36218"
+         x="110"
+         id="tspan12203"
+         sodipodi:role="line">level 1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       x="110"
+       y="696.36218"
+       id="text12205"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan12207"
+         x="110"
+         y="696.36218">level 2</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text12209"
+       y="520.36218"
+       x="780"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       xml:space="preserve"><tspan
+         y="520.36218"
+         x="780"
+         id="tspan12211"
+         sodipodi:role="line">parts</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       x="780"
+       y="620.36218"
+       id="text12213"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan12215"
+         x="780"
+         y="620.36218">parts</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text12217"
+       y="720.36218"
+       x="780"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       xml:space="preserve"><tspan
+         y="720.36218"
+         x="780"
+         id="tspan12219"
+         sodipodi:role="line">parts</tspan></text>
+  </g>
+</svg>
diff --git a/paper/figures/QR_scaling.eps b/paper/figures/QR_scaling.eps
new file mode 100644
index 0000000000000000000000000000000000000000..48f3f7901e3e831ffa6724f767af5e9dfe7fbcc1
--- /dev/null
+++ b/paper/figures/QR_scaling.eps
@@ -0,0 +1,412 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: MATLAB, The MathWorks, Inc. Version 8.0.0.783 (R2012b). Operating System: Linux 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64.
+%%Title: figures/QR_scaling.eps
+%%CreationDate: 10/30/2013  20:36:25
+%%DocumentNeededFonts: Helvetica
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox:    25    16   788   297
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s {show newpath} bdef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile 
+  3 index 0 eq {/ASCIIHexDecode filter}
+  {/ASCII85Decode filter 3 index 2 eq {/RunLengthDecode filter} if }
+  ifelse exch readstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:    25    16   788   297
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode 0192 3636 csm
+
+  114    65  9156  3375 rc
+85 dict begin %Colortable dictionary
+/c0 { 0.000000 0.000000 0.000000 sr} bdef
+/c1 { 1.000000 1.000000 1.000000 sr} bdef
+/c2 { 0.900000 0.000000 0.000000 sr} bdef
+/c3 { 0.000000 0.820000 0.000000 sr} bdef
+/c4 { 0.000000 0.000000 0.800000 sr} bdef
+/c5 { 0.910000 0.820000 0.320000 sr} bdef
+/c6 { 1.000000 0.260000 0.820000 sr} bdef
+/c7 { 0.000000 0.820000 0.820000 sr} bdef
+c0
+1 j
+1 sg
+   0    0 9404 3445 rf
+6 w
+0 2756 2821 0 0 -2756 282 3100 4 MP
+PP
+-2821 0 0 2756 2821 0 0 -2756 282 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+ 282 3100 mt 3103 3100 L
+ 282 3100 mt  282  344 L
+ 685 3100 mt  685 3071 L
+ 685  344 mt  685  372 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+ 619 3245 mt 
+(10) s
+1132 3100 mt 1132 3071 L
+1132  344 mt 1132  372 L
+1066 3245 mt 
+(20) s
+1580 3100 mt 1580 3071 L
+1580  344 mt 1580  372 L
+1514 3245 mt 
+(30) s
+2028 3100 mt 2028 3071 L
+2028  344 mt 2028  372 L
+1962 3245 mt 
+(40) s
+2476 3100 mt 2476 3071 L
+2476  344 mt 2476  372 L
+2410 3245 mt 
+(50) s
+2923 3100 mt 2923 3071 L
+2923  344 mt 2923  372 L
+2857 3245 mt 
+(60) s
+ 282 3100 mt  310 3100 L
+3103 3100 mt 3074 3100 L
+ 181 3144 mt 
+(0) s
+ 282 2669 mt  310 2669 L
+3103 2669 mt 3074 2669 L
+ 114 2713 mt 
+(10) s
+ 282 2238 mt  310 2238 L
+3103 2238 mt 3074 2238 L
+ 114 2282 mt 
+(20) s
+ 282 1808 mt  310 1808 L
+3103 1808 mt 3074 1808 L
+ 114 1852 mt 
+(30) s
+ 282 1377 mt  310 1377 L
+3103 1377 mt 3074 1377 L
+ 114 1421 mt 
+(40) s
+ 282  946 mt  310  946 L
+3103  946 mt 3074  946 L
+ 114  990 mt 
+(50) s
+ 282  516 mt  310  516 L
+3103  516 mt 3074  516 L
+ 114  560 mt 
+(60) s
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+gs 282 344 2822 2757 rc
+24 w
+45 10 45 -16 45 -36 45 -14 44 -36 45 -2 45 2 45 -8 
+44 -79 45 21 45 -53 45 -20 45 -20 44 -32 45 -2 45 -23 
+45 -18 44 -26 45 -33 45 -16 45 -35 45 -29 44 -34 45 -15 
+45 -24 45 -27 44 -52 45 -27 45 -24 45 -49 45 -17 44 -27 
+45 -6 45 -52 45 -43 44 -37 45 -43 45 -4 45 -46 45 -34 
+44 -52 45 -37 45 -42 45 -37 44 -20 45 -53 45 -37 45 -28 
+45 -51 44 -38 45 -33 45 -40 45 -40 44 -51 45 -42 45 -40 
+45 -39 45 -43 44 -37 45 -44 45 -41 45 -43 44 -42 282 3056 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+2648 1059 mt 
+(233ms) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1464 3388 mt 
+(nr. cores) s
+gs 282 344 2822 2757 rc
+DO
+16.8 w
+2821 -2712 282 3056 2 MP stroke
+gr
+
+16.8 w
+DO
+ 942  249 mt 
+(Speedup QR decomposition) s
+SO
+6 w
+1 sg
+0 2757 5642 0 0 -2757 3573 3100 4 MP
+PP
+-5642 0 0 2757 5642 0 0 -2757 3573 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+3573 3100 mt 9215 3100 L
+3573 3100 mt 3573  343 L
+4379 3100 mt 4379 3043 L
+4379  344 mt 4379  400 L
+4313 3245 mt 
+(10) s
+5274 3100 mt 5274 3043 L
+5274  344 mt 5274  400 L
+5208 3245 mt 
+(20) s
+6170 3100 mt 6170 3043 L
+6170  344 mt 6170  400 L
+6104 3245 mt 
+(30) s
+7065 3100 mt 7065 3043 L
+7065  344 mt 7065  400 L
+6999 3245 mt 
+(40) s
+7961 3100 mt 7961 3043 L
+7961  344 mt 7961  400 L
+7895 3245 mt 
+(50) s
+8856 3100 mt 8856 3043 L
+8856  344 mt 8856  400 L
+8790 3245 mt 
+(60) s
+3573 3100 mt 3629 3100 L
+9215 3100 mt 9158 3100 L
+3472 3144 mt 
+(0) s
+3573 2598 mt 3629 2598 L
+9215 2598 mt 9158 2598 L
+3372 2642 mt 
+(0.2) s
+3573 2097 mt 3629 2097 L
+9215 2097 mt 9158 2097 L
+3372 2141 mt 
+(0.4) s
+3573 1596 mt 3629 1596 L
+9215 1596 mt 9158 1596 L
+3372 1640 mt 
+(0.6) s
+3573 1095 mt 3629 1095 L
+9215 1095 mt 9158 1095 L
+3372 1139 mt 
+(0.8) s
+3573  594 mt 3629  594 L
+9215  594 mt 9158  594 L
+3472  638 mt 
+(1) s
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+gs 3573 344 5643 2757 rc
+24 w
+90 38 90 14 89 -3 90 17 89 -3 90 30 89 36 90 26 
+89 -48 90 59 90 -21 89 16 90 15 89 3 90 39 89 14 
+90 22 89 11 90 4 90 26 89 2 90 10 89 4 90 32 
+89 18 90 18 89 -24 90 17 90 23 89 -20 90 38 89 20 
+90 62 89 -25 90 -7 89 6 90 -9 90 78 89 -12 90 16 
+89 -30 90 9 89 -5 90 10 89 61 90 -38 90 13 89 45 
+90 -34 89 13 90 35 89 11 90 11 89 -52 90 0 90 8 
+89 25 90 -12 89 55 90 -19 89 33 90 -20 89 26 3573 594 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+8909 1149 mt 
+(73%) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+6166 3388 mt 
+(nr. cores) s
+gs 3573 344 5643 2757 rc
+DO
+16.8 w
+5642 0 3573 594 2 MP stroke
+gr
+
+16.8 w
+DO
+5412  249 mt 
+(Parallel Efficiency QR decomposition) s
+SO
+6 w
+
+end %%Color Dict
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
diff --git a/paper/figures/QR_scaling.pdf b/paper/figures/QR_scaling.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5e165c3ae338368f044dfc39c4ce7117d06b7608
Binary files /dev/null and b/paper/figures/QR_scaling.pdf differ
diff --git a/paper/paper.tex b/paper/paper.tex
index 2fe9a44f0922f93c2c4dedb25d29f4d5b9643bd4..f4d5fdf999d0523c98a56361c44e016a6b51bae4 100644
--- a/paper/paper.tex
+++ b/paper/paper.tex
@@ -475,6 +475,8 @@ that are themselves subsets of larger resources.
 This can be useful, e.g.~in the context of particle simulations
 described in the next section, where particles are sorted
 into hierarchical cells which are used at different levels.
+The owner field is the ID of the queue to which this
+resource has been preferentially assigned.
 
 The {\tt lock} field is either {\tt 0} or {\tt 1} and indicates
 whether this resource is currently in use, i.e.~{\em locked}.
@@ -798,7 +800,7 @@ struct task *qsched_gettask ( qsched *s , int qid ) {
     else
       break;
     }
-  if ( res != NULL ) {
+  if ( res != NULL && s->reown ) {
     for ( k = 0 ; k < res->nr_locks ; k++ )
       res->locks[k]->owner = qid;
     for ( k = 0 ; k < res->nr_uses ; k++ )
@@ -815,7 +817,8 @@ unresolved conflicts, the scheduler uses {\em work stealing}
 \cite{ref:Blumofe1999}, i.e.~it loops over all other queues
 in a random order (line~6) and tries to get a task from them
 (line~7).
-If a task could be obtained from any queue (line~13),
+If a task could be obtained from any queue and task re-owning
+is switched on (line~13),
 the resources it locks and uses are marked as now being owned
 by the prefered queue (lines~14--17).
 Finally, the task, or {\tt NULL} if no task could be obtained,
@@ -894,9 +897,11 @@ The main functions for setting up the scheduler are:
         e.g. they are used only to group or otherwise dependencies, and
         are not passed to the execution function in {\tt qsched\_run}.
         \vspace{1mm}
-    \item {\tt qsched\_res\_t qsched\_addres( struct qsched *s , qsched\_res\_t parent )} \\
+    \item {\tt qsched\_res\_t qsched\_addres( struct qsched *s , int owner , qsched\_res\_t parent )} \\
         Creates a new resource within the given {\tt qsched} and returns
         its handle.
+        The owner field is the initial queue ID to which this resource
+        should be assigned, or {\tt qsched\_owner\_none}.
         The {\tt parent} field is the handle of the heirarchical parent of
         the new resource or {\tt qsched\_res\_none} if the resource
         has no hierarchical parent.
@@ -959,8 +964,22 @@ This section presents two test cases showing both
 how QuickSched can be used in real-world applications, and
 providing benchmarks to assess its efficiency and scalability.
 
+The first test is the tiled QR decomposition originally
+from \citeN{ref:Buttari2009}, which has been used as a benchmark
+by other authors \cite{ref:Agullo2009b,ref:Badia2009,ref:Bosilca2012}.
+This example only requires dependencies and is presented
+only as a point of comparison to existing task-based
+parallel infrastructures.
+
+The second example is a Barnes-Hut tree-code, a problem
+similar to the Fast Multipole Method described in both
+\citeN{ref:Ltaief2012} and \citeN{ref:Agullo2013}.
+This example shows how conflicts, modeled
+via hierarchical resources, can be useful.
+
 The source code of both examples is distributed with the
-QuickSched library.
+QuickSched library, along with scripts to run the benchmarks
+and generate the plots used in the following.
 
 
 \subsection{Task-Based QR Decomposition}
@@ -1135,11 +1154,383 @@ void exec_fun ( int type , void *data ) {
 \noindent where {\tt A} is the matrix over which the QR
 decmposition is executed.
 
+The QR decomposition was computed for a $2048\times 2048$
+random matrix using tiles of size $64\times 64$ using QuickSched
+as described above.
+For the DGEQRF and DLARFT kernels, the respective routines
+from the LAPACKE\footnote{\url{http://www.netlib.org/lapack/lapacke.html}}
+library were used.
+The DTSQRF and DSSRFT kernels were implemented by Sam Townsend
+as part of his MSc thesis in Computer Science at Durham University.
+For this matrix, a total of 11440 tasks with 32240 dependencies
+were generated.
+
+All tests were run on a 64-core AMD Opteron 6376 machine running
+at 2.6\,GHz.
+For these tests, OpenMP parallelism and resource re-owning
+were used.
+The QR decomposition was computed 10 times for each number of
+cores, and the average thereof taken for the scaling and
+efficiency results in \fig{QRResults}.
+The timings are for {\tt qsched\_run}, including the cost of
+{\tt qsched\_start}, which does not run in parallel.
+Setting up the scheduler, tasks, and resources took, in all
+cases, an average of 7.2\,ms.
+
+\begin{figure}
+    \centerline{\epsfig{file=figures/QR_scaling.pdf,width=0.9\textwidth}}
+    \caption{Strong scaling and parallel efficiency of the tiled QR decomposition
+        computed over a $2048\times 2048$ matrix with tiles of size
+        $64\times 64$.
+        The QR decomposition takes 233\,ms, achieving 73\% parallel
+        efficiency, over all 64 cores.
+        }
+    \label{fig:QRResults}
+\end{figure}
+
 
 \subsection{Task-Based Barnes-Hut N-Body Solver}
 
-The Barnes-Hut tree-code is an algorithm to compute the
-interactions between a set of particles 
+The Barnes-Hut tree-code is an algorithm to approximate the
+solution of an $N$-body problem, i.e.~computing all the
+pairwise interactions between a set of $N$ particles,
+in \oh{N\log N} operations, as opposed to the \oh{N^2}
+naive direct computation.
+
+The algorithm is based on a recursive octree decomposition:
+Starting from a cubic cell containing all the particles,
+the cell is recursivel bisected along all three spatial dimensions,
+resulting in eight sub-cells, until the number of particles
+per cell is smaller than some limit $n_\mathsf{max}$.
+
+The particle interactions can also be formulated recursively:
+Given a particle an a cell of particles, if the particle and cell
+are sufficiently well separated, the particle-cell interactions
+are approximated by interacting the particle with the cell's
+centre of mass.
+If the particle and the cell are too close, and the cell
+has sub-cells, i.e.~it contained more than $n_\mathsf{max}$
+particles and was split in the recursive octree decomposition,
+then the particle is interacted with each of the sub-cells
+recursively.
+Finally, if the cell is not split, i.e.~it is a leaf cell
+in the octree, then the particle is interacted with all
+particles in the cell, except for the particle itself if
+it is in the same cell.
+This operation is performed for each particle, starting
+with the root-level cell containing all the particles.
+
+The cells have the following structure:
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+struct cell {
+  double loc[3], h[3], com[3], mass;
+  int split, count;
+  struct part *parts;
+  struct cell *progeny[8];
+  qsched_res_t res;
+  qsched_task_t task_com;
+  };
+    \end{lstlisting}
+\end{minipage}\end{center}
+\noindent where {\tt loc} and {\tt h} are the location
+and size of the cell, respectively.
+The {\tt com} and {\tt mass} fields represent the cell's
+center of mass, which will be used in the interactions.
+The {\tt res} filed is the hieararchical resource representing
+the cell's particles, and it is the parent resource of the cell
+progeny's {\tt res}.
+Similarly, the {\tt task\_com} is a task handle to
+compute the center of mass of the cell's particles, and 
+it depends on the {\tt task\_com} of all the progeny if
+the cell is split.
+{\tt parts} is a pointer to an array of {\tt count} 
+particle strutures, which contain all the particle
+data of the form:
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+struct part {
+  double x[3], a[3], mass;
+  int id;
+  };
+    \end{lstlisting}
+\end{minipage}\end{center}
+\noindent i.e.~the particle position, accelleration, mass,
+and ID, respectively.
+
+The particle data is sorted hierarchically, following the
+octree structure.
+Unlike in many codes, where the leaves store an array of
+pointers to the underlying particles, the cells, at all
+levels, store only a pointer to the first of their own particles,
+and the total number of particles.
+The current approach, illustrated in \fig{CellParts} is not
+only more compact, it also allows a direct and more cache-efficient access
+to the list of particles for any inner node of the tree.
+The cost of sorting the particles, with a recursive
+partitioning similar to QuickSort \cite{ref:Hoare1962},
+is in \oh{N\log N}.
+
+\begin{figure}
+    \centerline{\epsfig{file=figures/CellParts.pdf,width=0.9\textwidth}}
+    \caption{Hierarchical ordering of the particle data structures
+    (right) according to their cell (left).
+    Each cell has a pointer to the first of its particles (same colour
+    as cells) in the same global parts array.}
+    \label{fig:CellParts}
+\end{figure}
+
+The task-based implementation will consist of four
+types of tasks:
+\begin{itemize}
+    \item {\em Self}-interactions in which all particles
+        in a single cell interact with all other particles in the
+        same cell,
+    \item {\em Particle-particle pair}-interactions in which
+        all particles in a pair of cells interact with all
+        particles in the opposite cell, and
+    \item {\em Particle-cell pair}-interactions in which
+        all particles in one cell are interacted with the
+        center of mass of another cell.
+    \item {\em Center of mass} tasks, which compute
+        the center of mass of a single cell either from
+        the sum of the centers of mass of its sub-cells
+        if it has been split, or directly from the
+        particles otherwise.
+\end{itemize}
+
+\begin{figure}
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+enum { tSELF , tPAIR_PP , tPAIR_PC , tCOM };
+void make_tasks ( struct qsched *s , struct cell *ci , struct cell *cj ) {
+  int j, k;
+  qsched_task_t tid;
+  struct cell *data[2];
+  if ( cj == NULL ) {
+    if ( ci->split && ci->count > n_task )
+      for ( j = 0 ; j < 8 ; j++ ) {
+        make_tasks( s , ci->progeny[j] , NULL );
+        for ( k = j+1 ; k < 8 ; k++ )
+          make_tasks( s , ci->progeny[j] , ci->progeny[k] );
+        }
+    else {
+      tid = qsched_addtask( s , tSELF , qsched_flags_none ,
+        &ci , sizeof(struct cell *) , ci->count*ci->count );
+      qsched_addlock( s , tid , ci->res );
+      if ( ci->split )
+        qsched_addunlock( s , ci->com , tid );
+      }
+    }
+  else if ( ci and cj are well separated ) {
+      data[0] = ci; data[1] = cj;
+      tid = qsched_addtask( s , tPAIR_PC , qsched_flags_none ,
+        data , sizeof(struct cell *)*2 , ci->count );
+      qsched_addlock( s , tid , ci->res );
+      qsched_addunlock( s , cj->com , tid );
+      data[0] = cj; data[1] = ci;
+      tid = qsched_addtask( s , tPAIR_PC , qsched_flags_none ,
+        data , sizeof(struct cell *)*2 , cj->count );
+      qsched_addlock( s , tid , cj->res );
+      qsched_addunlock( s , ci->com , tid );
+      }
+  else if ( ci->split && cj->split && 
+     ci->count*cj->count > n_task*n_task )
+    for ( j = 0 ; j < 8 ; j++ )
+      for ( k = 0 ; k < 8 ; k++ )
+        make_tasks( s , ci->progeny[j] , cj->progeny[k] );
+  else {
+    data[0] = ci; data[1] = cj;
+    tid = qsched_addtask( s , tPAIR_PP , qsched_flags_none ,
+      data , sizeof(struct cell *)*2 , ci->count*cj->count );
+    qsched_addlock( s , tid , ci->res );
+    qsched_addlock( s , tid , cj->res );
+    if ( ci->split && cj->split ) {
+      qsched_addunlock( s , ci->com , tid );
+      qsched_addunlock( s , cj->com , tid );
+      }
+    }
+  }
+    \end{lstlisting}
+\end{minipage}\end{center}
+    \caption{C-like pseudo-code for recursive task creation
+        for the Barnes-Hut tree-code.}
+    \label{fig:MakeTasks}
+\end{figure}
+
+These tasks can be created recursively over the cell hierarchy
+as shown in the function {\tt make\_tasks} in \fig{MakeTasks}.
+The function is called on the root cell with the root cell
+and {\tt NULL} as its two cell parameters.
+The function recurses as follows:
+\begin{itemize}
+    \item If called with a single (line~6), split (line~7) cell,
+        recurse over all the cell's sub cells (line~9), and all
+        pairs of the cell's sub cells (line~11),
+    \item If called with a single unslplit cell (line~13),
+        create a self-interaction task on that cell (line~14),
+    \item If called with two cells that are sufficiently well
+        separated (line~21), create two particle-cell pair
+        interactions (lines~23 and~28) over both cells in
+        opposite orders, which depend on the center of mass
+        task of each cell,
+    \item If called with two cells that are not well
+        separated and both cells are split (line~33),
+        recurse over all pairs of sub-cells spanning
+        both cells (line~37), and
+    \item If called with two cells that are not well separated
+        and either of the cells are not split, create
+        a particle-particle pair task over both cells.
+\end{itemize}
+\noindent where every interaction task additionally locks
+the cells on which it operates (lines~16, 25, 30, and 42--43).
+
+In order to reduce the number of tasks, and to prevent generating
+too many very small tasks, the task generation only recurses
+if the cells contain more than a minimum number $n_\mathsf{task}$
+of threads each (lines~7 and~34).
+The tasks themselves are then left to recurse over the sub-trees,
+which is why in these cases, the tasks are made to depend on the
+center of mass tasks (lines~17--18 and~41--47)
+which may be used in the ensuing interactions.
+
+\begin{figure}
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+void comp_com ( struct cell *c ) {
+  int j, k;
+  c->com[0] = 0.0; c->com[1] = 0.0; c->com[2] = 0.0;
+  c->mas = 0.0;
+  if ( c->split )
+    for ( k = 0 ; k < 8 ; k++ ) {
+      struct cell *cp = c->progeny[k]
+      for ( j = 0 ; j < 3 ; j++ ) c->com[j] += cp->com[j]*cp->mass;
+      c->mass += cp->mass;
+      }
+  else
+    for ( k = 0 ; k < 8 ; k++ ) {
+      struct part *p = &c->parts[k];
+      for ( j = 0 ; j < 3 ; j++ ) c->com[j] += p->x[j]*p->mass;
+      c->mass += p->mass;
+      }
+  c->com[0] /= c->mass; c->com[1] /= c->mass; c->com[2] /= c->mass; 
+  }
+
+void comp_self ( struct cell *c ) {
+  int j, k;
+  if ( c->split )
+    for ( j = 0 ; j < 8 ; j++ ) {
+      comp_self( c->progeny[j] );
+      for ( k = j+1 ; k < 8 ; k++ )
+        comp_pair( c->progeny[j] , c->progeny[k] );
+      }
+  else
+    for ( j = 0 ; j < c->count ; j++ )
+      for ( k = j+1 ; k < c->count ; k++ )
+        interact c->parts[j] and c->parts[k].
+  }
+
+void comp_pair ( struct cell *ci , struct cell *cj ) {
+  int j, k;
+  if ( ci and cj well separated ) {
+    comp_pair_pc( ci , cj );
+    comp_pair_pc( cj , ci );
+    }
+  else if ( ci->split && cj->split )
+    for ( j = 0 ; j < 8 ; j++ )
+      for ( k = 0 ; k < 8 ; k++ )
+        comp_pair( ci->progeny[j] , cj->progeny[k] );
+  else
+    for ( j = 0 ; j < ci->count ; j++ )
+      for ( k = 0 ; k < cj->count ; k++ )
+        interact ci->parts[j] and cj->parts[k].
+  }
+
+void comp_pair_cp ( struct cell *ci , struct cell *cj ) {
+  int k;
+  for ( k = 0 ; k < ci->count ; k++ )
+    interact ci->parts[k] and cj center of mass.
+  }
+    \end{lstlisting}
+\end{minipage}\end{center}
+    \caption{Task functions for the Barnes-Hut tree-code.}
+    \label{fig:BHTasks}
+\end{figure}
+
+The functions for the task themselves are relatively
+straight-forward and shown in \fig{BHTasks}, and the
+execution function can be written as:
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+void exec_fun ( int type , void *data ) {
+  struct cell **cells = (struct cell **)data;
+  switch ( type ) {
+    case tSELF:
+      comp_self( cells[0] );
+      break;
+    case tPAIR_PP:
+      comp_pair( cells[0] , cells[1] );
+      break;
+    case tPAIR_PC:
+      comp_pair_pc( cells[0] , cells[1] );
+      break;
+    case tCOM:
+      comp_com( cells[0] );
+      break;
+    default:
+      error( "Unknown task type." );
+    }
+  }
+    \end{lstlisting}
+\end{minipage}\end{center}
+
+
+This Barnes-Hut tree-code was used to approximate the gravitational
+N-Body problem for 1\,000\,000 particles with random coordinates the
+parameters $n_\mathsf{max}=100$ and $n_\mathsf{task}=5000$.
+Cell pairs were considered well separated if not adjecent.
+Using the above scheme generated 161\,613 tasks, of which
+512 self-interaction tasks, 18\,532 particle-particle interaction
+task, 105\,120 particle-cell interaction tasks, and 37\,449
+center of mass tasks.
+Additionally 179\,632 dependencies were generated, along with
+142'696 locks on 37\,449 resources.
+
+As with the previous example, all
+tests were run on a 64-core AMD Opteron 6376 machine running
+at 2.6\,GHz.
+For these tests, OpenMP parallelism was used and resource
+re-owning was switched off.
+The interactions  computed 10 times for each number of
+cores, and the average thereof taken for the scaling and
+efficiency results in \fig{BHResults}.
+The timings are for {\tt qsched\_run}, including the cost of
+{\tt qsched\_start}, which does not run in parallel.
+Setting up the scheduler, tasks, and resources took, in all
+cases, an average of 51.3\,ms.
+
+\begin{figure}
+    \centerline{\epsfig{file=figures/BH_scaling.pdf,width=0.9\textwidth}}
+    \caption{Strong scaling and parallel efficiency of the Barnes-Hut tree-code
+        computed over 1\,000\,000 particles.
+        Solving the N-Body problem takes 3.5\,s, achieving 52\% parallel
+        efficiency, over all 64 cores.
+        }
+    \label{fig:BHResults}
+\end{figure}
+
+Unlike the QR decomposition, the results scale well only to
+32 cores, achieving 90\% parallel efficiency, and then
+level off for increasing numbers of cores.
+This, however, is not a problem of the task-based parallel
+algorith, or of QuickSched, but of the cache hierarchies
+of the underlying hardware.
+On the AMD Opteron 6376, the cores are grouped into pairs
+which each share a 2\,MB L2 cache.
+Each group of four pairs, or eight cores, shares a common
+6\,MB L3 cache.
+It is the difference between the sum of the L2 caches and
+the (smaller) L3 cache which causes problems.
 
 
 \section{Conclusions}
diff --git a/paper/quicksched.bib b/paper/quicksched.bib
index 646bde21806a6875ce71b3de077c378366cf65db..6ec34f5e82d554dd86e5ad3f79b9b728040bdba5 100644
--- a/paper/quicksched.bib
+++ b/paper/quicksched.bib
@@ -169,3 +169,45 @@
     year={2009},
     organization={IOP Publishing}
     }
+
+@article{ref:Hoare1962,
+    title={Quicksort},
+    author={Hoare, Charles AR},
+    journal={The Computer Journal},
+    volume={5},
+    number={1},
+    pages={10--16},
+    year={1962},
+    publisher={Br Computer Soc}
+    }
+
+@article{ref:Bosilca2012,
+    title={{DAGuE}: A generic distributed DAG engine for high performance computing},
+    author={Bosilca, George and Bouteiller, Aurelien and Danalis, Anthony and Herault, Thomas and Lemarinier, Pierre and Dongarra, Jack},
+    journal={Parallel Computing},
+    volume={38},
+    number={1},
+    pages={37--51},
+    year={2012},
+    publisher={Elsevier}
+    }
+
+@article{ref:Badia2009,
+    title={Parallelizing dense and banded linear algebra libraries using {SMPSs}},
+    author={Badia, Rosa M and Herrero, Jos{\'e} R and Labarta, Jes{\'u}s and P{\'e}rez, Josep M and Quintana-Ort{\'\i}, Enrique S and Quintana-Ort{\'\i}, Gregorio},
+    journal={Concurrency and Computation: Practice and Experience},
+    volume={21},
+    number={18},
+    pages={2438--2456},
+    year={2009},
+    publisher={Wiley Online Library}
+    }
+
+@inproceedings{ref:Agullo2009b,
+    title={Comparative study of one-sided factorizations with multiple software packages on multi-core hardware},
+    author={Agullo, Emmanuel and Hadri, Bilel and Ltaief, Hatem and Dongarrra, Jack},
+    booktitle={Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis},
+    pages={20},
+    year={2009},
+    organization={ACM}
+    }