diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,47 @@
+1.2 (27 May 2014)
+-----------------
+
+* **New features**
+
+    - New function `matrixHomRep` to convert a transformation to a
+      homogeneous matrix representation.
+
+    - New function `dropTransl` to drop the translation component
+      from a transformation.
+
+    - A mini-DSL for Measures.
+
+    - New `extent` function, used in `diameter`.
+
+    - New `dimension` function to return the dimension of a vector space.
+
+    - New `_relative` iso between points and vectors.
+
+    - `avgScale` function (for computing the average scaling factor of
+      a transformation) has been moved from `diagrams-lib` to
+      `diagrams-core` and generalized to work over any vector space.
+
+* **Dependency/version changes**
+
+    - Allow `semigroups-0.15`
+    - Allow `lens-4.2`
+
+* **API changes**
+
+    - Major refactoring which removes `freeze` (and hence `Split` transforms,
+      etc.) and adds units of `Measure`.
+
+    - Refactoring and simplification of the `Backend` class.
+
+    - Remove `Multibackend`.
+
+    - Remove `nullPrim`, `IsPrim` and simplify `RPrim` so that it does not
+      carry a transformation.
+
+    - Update `adjustDia` to return a transformation, not just a scale factor.
+      Add `renderDiaT` which returns a transformation (for use by end
+      users, e.g. to convert output coordinates back into local coordinates).
+
 1.1.0.3 (15 May 2014)
 ----------------------
 
diff --git a/diagrams-core.cabal b/diagrams-core.cabal
--- a/diagrams-core.cabal
+++ b/diagrams-core.cabal
@@ -1,5 +1,5 @@
 Name:                diagrams-core
-Version:             1.1.0.3
+Version:             1.2
 Synopsis:            Core libraries for diagrams EDSL
 Description:         The core modules underlying diagrams,
                      an embedded domain-specific language
@@ -37,15 +37,14 @@
 
   Build-depends:       base >= 4.2 && < 4.8,
                        containers >= 0.4.2 && < 0.6,
-                       semigroups >= 0.8.4 && < 0.15,
+                       semigroups >= 0.8.4 && < 0.16,
                        vector-space >= 0.8.4 && < 0.9,
                        vector-space-points >= 0.1 && < 0.3,
                        MemoTrie >= 0.4.7 && < 0.7,
                        newtype >= 0.2 && < 0.3,
                        monoid-extras >= 0.3 && < 0.4,
                        dual-tree >= 0.2 && < 0.3,
-                       lens >= 4.0 && < 4.2
-
+                       lens >= 4.0 && < 4.3
   hs-source-dirs:      src
 
   Other-extensions:    DeriveDataTypeable
diff --git a/diagrams/src_Diagrams_Core_Trace_maxRayTracePEx.svg b/diagrams/src_Diagrams_Core_Trace_maxRayTracePEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_maxRayTracePEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_maxRayTracePEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.188205771643666,0.0,0.0,50.188205771643666,84.19071518193223,125.59598494353831)"><g><g><path d="M 7.127500000000001,1.9206044693365778 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.677500000000002,-1.5793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.627500000000001,-1.5793955306634222 l 0.20472536320389398,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.927500000000002,-2.079395530663422 l -6.400648041348231e-2,0.2780448438866492 l -2.8602755563472637e-2,-0.12369611725839137 l -0.12260375314021488,3.2972212036178644e-2 l 0.21521298911716982,-0.18732093866443647 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.834890764023047,-1.9250468040351643 l 1.6220638094109115e-3,7.01481347572395e-3 l -8.574929257125418e-3,-5.144957554275266e-3 l 6.952865447714507e-3,-1.8698559214486844e-3 v 4.336808689942018e-19 Z" /></g></g></g></g></g></g><g><g><path d="M 2.8275000000000006,1.525 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 1.08,-1.8 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8775000000000004,0.32499999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1275,-0.17499999999999996 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.034890764023046,-2.0651273371741996e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 4.9575000000000005,-1.475 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.525,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 2.0,-3.3333333333333335 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.4749999999999999,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.22499999999999998,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.31760923597695473,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 1.5250000000000001,-1.1083333333333336 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.5528821304000942" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.9071518193225,225.97239648682563 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.8870765370139,50.31367628607279 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.3776662484316,50.31367628607279 l 8.065638164754679,-13.442730274591154 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.4341279799247,25.219573400250958 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.5785476260271,36.645540656747066 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g></g></g><g><g><path d="M 226.09786700125468,202.1329987452949 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 276.28607277289836,141.9071518193225 l 54.20326223337516,-90.33877038895861 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 278.7954830614805,141.9071518193225 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 276.28607277289836,141.9071518193225 l 8.065638164754676,-13.442730274591147 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 291.34253450439144,116.81304893350068 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 284.4869541504938,128.2390161899968 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 332.99874529485567,51.5683814303639 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g><g><path d="M 7.653701380175647,161.98243412797996 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 57.84190715181931,237.26474278544546 l 100.37641154328733,-167.29401923881224 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.351317440401495,237.26474278544546 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.84190715181931,237.26474278544546 l 8.065638164754697,-13.442730274591153 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 72.89836888331241,212.17063989962364 l -3.7905642133058626,16.466251981400134 l -3.065016140591802,-5.040284724904033 l -5.889670588134995,-0.3325273123320498 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.04278852941475,223.59660715611975 l -0.13524321284074367,0.22540535473457263 l 0.428746462856272,0.2572478777137634 l -0.29350325001552835,-0.482653232448336 l -0.13524321284074367,0.22540535473457263 l -0.428746462856272,-0.2572478777137634 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 160.72772898368885,69.97072354663322 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_maxRayTraceVEx.svg b/diagrams/src_Diagrams_Core_Trace_maxRayTraceVEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_maxRayTraceVEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_maxRayTraceVEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.188205771643666,0.0,0.0,50.188205771643666,84.19071518193223,125.59598494353831)"><g><g><path d="M 7.127500000000001,1.9206044693365778 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.677500000000002,-1.5793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.627500000000001,-1.5793955306634222 l 0.20472536320389398,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.927500000000002,-2.079395530663422 l -6.400648041348231e-2,0.2780448438866492 l -2.8602755563472637e-2,-0.12369611725839137 l -0.12260375314021488,3.2972212036178644e-2 l 0.21521298911716982,-0.18732093866443647 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.834890764023047,-1.9250468040351643 l 1.6220638094109115e-3,7.01481347572395e-3 l -8.574929257125418e-3,-5.144957554275266e-3 l 6.952865447714507e-3,-1.8698559214486844e-3 v 4.336808689942018e-19 Z" /></g></g></g></g></g></g><g><g><path d="M 2.8275000000000006,1.525 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 1.08,-1.8 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8775000000000004,0.32499999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1275,-0.17499999999999996 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.034890764023046,-2.0651273371741996e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 0.9847253632038933,-1.6412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 4.907500000000001,-1.4749999999999999 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 4.814890764023046,-1.320651273371742 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 4.9575000000000005,-1.475 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.525,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 2.0,-3.3333333333333335 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.4749999999999999,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.22499999999999998,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.31760923597695473,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 1.9047253632038939,-3.17454227200649 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 1.4750000000000005,-1.1083333333333345 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 1.3823907640230457,-0.9539846067050766 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 1.5250000000000001,-1.1083333333333336 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.5528821304000942" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.9071518193225,225.97239648682563 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.8870765370139,50.31367628607279 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.3776662484316,50.31367628607279 l 8.065638164754679,-13.442730274591154 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.4341279799247,25.219573400250958 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.5785476260271,36.645540656747066 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g></g></g><g><g><path d="M 226.09786700125468,202.1329987452949 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 276.28607277289836,141.9071518193225 l 54.20326223337516,-90.33877038895861 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 278.7954830614805,141.9071518193225 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 276.28607277289836,141.9071518193225 l 8.065638164754676,-13.442730274591147 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 291.34253450439144,116.81304893350068 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 284.4869541504938,128.2390161899968 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 276.28607277289836,141.9071518193225 l 47.21243866663673,-78.68739777772794 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 330.4893350062735,51.568381430363885 l -3.790564213305852,16.466251981400134 l -3.0650161405918057,-5.04028472490403 l -5.889670588134995,-0.3325273123320458 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 323.63375465237584,62.99434868685999 l -0.13524321284074353,0.2254053547345727 l 0.42874646285627216,0.2572478777137631 l -0.2935032500155286,-0.4826532324483358 l -0.13524321284074353,0.2254053547345727 l -0.42874646285627216,-0.2572478777137631 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 332.99874529485567,51.5683814303639 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g><g><path d="M 7.653701380175647,161.98243412797996 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 57.84190715181931,237.26474278544546 l 100.37641154328733,-167.29401923881224 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.351317440401495,237.26474278544546 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.84190715181931,237.26474278544546 l 8.065638164754697,-13.442730274591153 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 72.89836888331241,212.17063989962364 l -3.7905642133058626,16.466251981400134 l -3.065016140591802,-5.040284724904033 l -5.889670588134995,-0.3325273123320498 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.04278852941475,223.59660715611975 l -0.13524321284074367,0.22540535473457263 l 0.428746462856272,0.2572478777137634 l -0.29350325001552835,-0.482653232448336 l -0.13524321284074367,0.22540535473457263 l -0.428746462856272,-0.2572478777137634 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 57.84190715181931,237.26474278544546 l 93.38558797654892,-155.64264662758154 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 158.21831869510663,69.97072354663325 l -3.7905642133058564,16.466251981400134 l -3.065016140591804,-5.040284724904032 l -5.889670588134995,-0.3325273123320476 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 151.36273834120897,81.39669080312936 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 160.72772898368885,69.97072354663322 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_maxTracePEx.svg b/diagrams/src_Diagrams_Core_Trace_maxTracePEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_maxTracePEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_maxTracePEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.188205771643666,0.0,0.0,50.188205771643666,84.19071518193223,125.59598494353831)"><g><g><path d="M 7.127500000000001,1.9206044693365778 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 9.627500000000001,-1.5793955306634222 l -0.2999999999999998,0.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.677500000000002,-1.5793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.627500000000001,-1.5793955306634222 l 0.20472536320389398,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.927500000000002,-2.079395530663422 l -6.400648041348231e-2,0.2780448438866492 l -2.8602755563472637e-2,-0.12369611725839137 l -0.12260375314021488,3.2972212036178644e-2 l 0.21521298911716982,-0.18732093866443647 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.834890764023047,-1.9250468040351643 l 1.6220638094109115e-3,7.01481347572395e-3 l -8.574929257125418e-3,-5.144957554275266e-3 l 6.952865447714507e-3,-1.8698559214486844e-3 v 4.336808689942018e-19 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.377500000000001,-1.0793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><g><path d="M 2.8275000000000006,1.525 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 1.08,-1.8 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8775000000000004,0.32499999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1275,-0.17499999999999996 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.034890764023046,-2.0651273371741996e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 4.9575000000000005,-1.475 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.525,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 2.0,-3.3333333333333335 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.4749999999999999,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.22499999999999998,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.31760923597695473,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 1.5250000000000001,-1.1083333333333336 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.5528821304000942" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.9071518193225,225.97239648682563 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 567.3776662484316,50.31367628607279 l -15.05646173149309,25.094102885821833 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.8870765370139,50.31367628607279 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.3776662484316,50.31367628607279 l 8.065638164754679,-13.442730274591154 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.4341279799247,25.219573400250958 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.5785476260271,36.645540656747066 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 554.8306148055208,75.40777917189462 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g><g><g><path d="M 226.09786700125468,202.1329987452949 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 276.28607277289836,141.9071518193225 l 54.20326223337516,-90.33877038895861 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 278.7954830614805,141.9071518193225 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 276.28607277289836,141.9071518193225 l 8.065638164754676,-13.442730274591147 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 291.34253450439144,116.81304893350068 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 284.4869541504938,128.2390161899968 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 332.99874529485567,51.5683814303639 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g><g><path d="M 7.653701380175647,161.98243412797996 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 57.84190715181931,237.26474278544546 l 100.37641154328733,-167.29401923881224 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.351317440401495,237.26474278544546 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.84190715181931,237.26474278544546 l 8.065638164754697,-13.442730274591153 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 72.89836888331241,212.17063989962364 l -3.7905642133058626,16.466251981400134 l -3.065016140591802,-5.040284724904033 l -5.889670588134995,-0.3325273123320498 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.04278852941475,223.59660715611975 l -0.13524321284074367,0.22540535473457263 l 0.428746462856272,0.2572478777137634 l -0.29350325001552835,-0.482653232448336 l -0.13524321284074367,0.22540535473457263 l -0.428746462856272,-0.2572478777137634 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 160.72772898368885,69.97072354663322 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_maxTraceVEx.svg b/diagrams/src_Diagrams_Core_Trace_maxTraceVEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_maxTraceVEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_maxTraceVEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.188205771643666,0.0,0.0,50.188205771643666,84.19071518193223,125.59598494353831)"><g><g><path d="M 7.127500000000001,1.9206044693365778 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 9.627500000000001,-1.5793955306634222 l -0.2999999999999998,0.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.677500000000002,-1.5793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.627500000000001,-1.5793955306634222 l 0.20472536320389398,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.927500000000002,-2.079395530663422 l -6.400648041348231e-2,0.2780448438866492 l -2.8602755563472637e-2,-0.12369611725839137 l -0.12260375314021488,3.2972212036178644e-2 l 0.21521298911716982,-0.18732093866443647 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.834890764023047,-1.9250468040351643 l 1.6220638094109115e-3,7.01481347572395e-3 l -8.574929257125418e-3,-5.144957554275266e-3 l 6.952865447714507e-3,-1.8698559214486844e-3 v 4.336808689942018e-19 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M 9.627500000000001,-1.5793955306634222 l -0.20472536320389395,0.34120893867315594 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 9.3275,-1.079395530663422 l 6.400648041348217e-2,-0.2780448438866492 l 2.8602755563472707e-2,0.12369611725839134 l 0.12260375314021486,-3.2972212036178714e-2 l -0.21521298911716974,0.18732093866443655 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 9.420109235976955,-1.23374425729168 l -1.6220638094109154e-3,-7.014813475723949e-3 l 8.574929257125422e-3,5.1449575542752615e-3 l -6.952865447714507e-3,1.8698559214486874e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.377500000000001,-1.0793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><g><path d="M 2.8275000000000006,1.525 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 1.08,-1.8 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8775000000000004,0.32499999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1275,-0.17499999999999996 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.034890764023046,-2.0651273371741996e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8275000000000006,0.32499999999999996 l 0.9847253632038933,-1.6412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 4.907500000000001,-1.4749999999999999 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 4.814890764023046,-1.320651273371742 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 4.9575000000000005,-1.475 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.525,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 2.0,-3.3333333333333335 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.4749999999999999,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.22499999999999998,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.31760923597695473,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5249999999999999,2.2249999999999996 l 1.9047253632038939,-3.17454227200649 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 1.4750000000000005,-1.1083333333333345 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 1.3823907640230457,-0.9539846067050766 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 1.5250000000000001,-1.1083333333333336 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="251.1919698870766" font-size="1" viewBox="0 0 600 251" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.5528821304000942" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.9071518193225,225.97239648682563 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 567.3776662484316,50.31367628607279 l -15.05646173149309,25.094102885821833 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.8870765370139,50.31367628607279 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.3776662484316,50.31367628607279 l 8.065638164754679,-13.442730274591154 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.4341279799247,25.219573400250958 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.5785476260271,36.645540656747066 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 567.3776662484316,50.31367628607279 l -8.06563816475467,13.44273027459115 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 552.3212045169386,75.40777917189463 l 3.7905642133058386,-16.46625198140014 l 3.06501614059181,5.040284724904028 l 5.8896705881349956,0.33252731233204136 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 559.1767848708362,63.98181191539852 l 0.13524321284074337,-0.22540535473457282 l -0.4287464628562724,-0.2572478777137628 l 0.293503250015529,0.4826532324483356 l 0.13524321284074337,-0.22540535473457282 l 0.4287464628562724,0.2572478777137628 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 554.8306148055208,75.40777917189462 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g><g><g><path d="M 226.09786700125468,202.1329987452949 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 276.28607277289836,141.9071518193225 l 54.20326223337516,-90.33877038895861 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 278.7954830614805,141.9071518193225 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 276.28607277289836,141.9071518193225 l 8.065638164754676,-13.442730274591147 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 291.34253450439144,116.81304893350068 l -3.7905642133058457,16.466251981400138 l -3.0650161405918075,-5.04028472490403 l -5.889670588134995,-0.3325273123320436 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 284.4869541504938,128.2390161899968 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 276.28607277289836,141.9071518193225 l 47.21243866663673,-78.68739777772794 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 330.4893350062735,51.568381430363885 l -3.790564213305852,16.466251981400134 l -3.0650161405918057,-5.04028472490403 l -5.889670588134995,-0.3325273123320458 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 323.63375465237584,62.99434868685999 l -0.13524321284074353,0.2254053547345727 l 0.42874646285627216,0.2572478777137631 l -0.2935032500155286,-0.4826532324483358 l -0.13524321284074353,0.2254053547345727 l -0.42874646285627216,-0.2572478777137631 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 332.99874529485567,51.5683814303639 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g><g><path d="M 7.653701380175647,161.98243412797996 h 150.564617314931 v -150.564617314931 h -100.37641154328733 v 50.188205771643666 h 50.188205771643666 v 50.188205771643666 h -100.37641154328733 v 50.188205771643666 " /><g stroke-dasharray="5.018820577164367,5.018820577164367" stroke-dashoffset="0.0"><path d="M 57.84190715181931,237.26474278544546 l 100.37641154328733,-167.29401923881224 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.351317440401495,237.26474278544546 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.84190715181931,237.26474278544546 l 8.065638164754697,-13.442730274591153 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 72.89836888331241,212.17063989962364 l -3.7905642133058626,16.466251981400134 l -3.065016140591802,-5.040284724904033 l -5.889670588134995,-0.3325273123320498 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.04278852941475,223.59660715611975 l -0.13524321284074367,0.22540535473457263 l 0.428746462856272,0.2572478777137634 l -0.29350325001552835,-0.482653232448336 l -0.13524321284074367,0.22540535473457263 l -0.428746462856272,-0.2572478777137634 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 57.84190715181931,237.26474278544546 l 93.38558797654892,-155.64264662758154 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 158.21831869510663,69.97072354663325 l -3.7905642133058564,16.466251981400134 l -3.065016140591804,-5.040284724904032 l -5.889670588134995,-0.3325273123320476 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 151.36273834120897,81.39669080312936 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 160.72772898368885,69.97072354663322 c 0.0,-1.3859090334524304 -1.1235012551297527,-2.5094102885821834 -2.509410288582183 -2.5094102885821834c -1.3859090334524304,-8.486245308634604e-17 -2.5094102885821834,1.1235012551297525 -2.5094102885821834 2.5094102885821825c -1.6972490617269208e-16,1.3859090334524304 1.1235012551297525,2.5094102885821834 2.509410288582182 2.5094102885821834c 1.3859090334524304,2.5458735925903813e-16 2.5094102885821834,-1.1235012551297523 2.509410288582184 -2.5094102885821825Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_rayTracePEx.svg b/diagrams/src_Diagrams_Core_Trace_rayTracePEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_rayTracePEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_rayTracePEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.42016806722689,0.0,0.0,50.42016806722689,83.19327731092437,126.17647058823532)"><g><g><path d="M 7.100000000000001,1.9206044693365778 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.650000000000002,-1.5793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.600000000000001,-1.5793955306634222 l 0.20472536320389398,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.900000000000002,-2.079395530663422 l -6.400648041348231e-2,0.2780448438866492 l -2.8602755563472637e-2,-0.12369611725839137 l -0.12260375314021488,3.2972212036178644e-2 l 0.21521298911716982,-0.18732093866443647 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.807390764023047,-1.9250468040351643 l 1.6220638094109115e-3,7.01481347572395e-3 l -8.574929257125418e-3,-5.144957554275266e-3 l 6.952865447714507e-3,-1.8698559214486844e-3 v 4.336808689942018e-19 Z" /></g></g></g></g></g></g><g><g><path d="M 2.8000000000000007,1.5 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8000000000000007,0.30000000000000004 l 0.48,-0.8 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8500000000000005,0.30000000000000004 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8000000000000007,0.30000000000000004 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1000000000000005,-0.19999999999999987 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.007390764023046,-4.565127337174191e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 4.330000000000001,-0.5 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.5,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5,2.2249999999999996 l 0.8999999999999999,-1.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.45,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.20000000000000007,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.2926092359769548,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 0.4499999999999999,0.7249999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.55646658662951" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.1764705882354,227.0168067226891 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.7478991596639,50.54621848739498 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.2268907563025,50.54621848739498 l 8.119090212668617,-13.53181702111433 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.3529411764706,25.33613445378154 l -3.799486429928585,16.50501018700616 l -3.072230564730154,-5.052148529241624 l -5.90353367390974,-0.33331001394232596 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.4812241818119,36.788996111546076 l -0.13524321284074386,0.22540535473457254 l 0.4287464628562718,0.25724787771376373 l -0.29350325001552796,-0.48265323244833624 l -0.13524321284074386,0.22540535473457254 l -0.4287464628562718,-0.25724787771376373 Z" /></g></g></g></g></g></g></g></g><g><g><path d="M 224.36974789915968,201.80672268907566 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 274.78991596638656,141.3025210084034 l 24.201680672268907,-40.33613445378151 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 277.3109243697479,141.3025210084034 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 274.78991596638656,141.3025210084034 l 8.11909021266858,-13.53181702111432 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 289.9159663865546,116.09243697478996 l -3.799486429928556,16.505010187006164 l -3.072230564730163,-5.0521485292416175 l -5.90353367390974,-0.33331001394231574 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 283.0442493918959,127.5452986325545 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 301.5126050420168,100.96638655462188 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g><g><path d="M 7.563025210084035,162.7310924369748 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 57.983193277310924,238.3613445378151 l 45.3781512605042,-75.63025210084034 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.50420168067227,238.3613445378151 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.983193277310924,238.3613445378151 l 8.119090212668594,-13.531817021114325 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 73.10924369747899,213.15126050420167 l -3.7994864299285664,16.505010187006164 l -3.0722305647301598,-5.052148529241619 l -5.903533673909739,-0.3333100139423193 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.23752670282026,224.60412216196622 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 105.88235294117646,162.7310924369748 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_rayTraceVEx.svg b/diagrams/src_Diagrams_Core_Trace_rayTraceVEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_rayTraceVEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_rayTraceVEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.42016806722689,0.0,0.0,50.42016806722689,83.19327731092437,126.17647058823532)"><g><g><path d="M 7.100000000000001,1.9206044693365778 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.650000000000002,-1.5793955306634222 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.600000000000001,-1.5793955306634222 l 0.20472536320389398,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.900000000000002,-2.079395530663422 l -6.400648041348231e-2,0.2780448438866492 l -2.8602755563472637e-2,-0.12369611725839137 l -0.12260375314021488,3.2972212036178644e-2 l 0.21521298911716982,-0.18732093866443647 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.807390764023047,-1.9250468040351643 l 1.6220638094109115e-3,7.01481347572395e-3 l -8.574929257125418e-3,-5.144957554275266e-3 l 6.952865447714507e-3,-1.8698559214486844e-3 v 4.336808689942018e-19 Z" /></g></g></g></g></g></g><g><g><path d="M 2.8000000000000007,1.5 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8000000000000007,0.30000000000000004 l 0.48,-0.8 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8500000000000005,0.30000000000000004 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8000000000000007,0.30000000000000004 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1000000000000005,-0.19999999999999987 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.007390764023046,-4.565127337174191e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8000000000000007,0.30000000000000004 l 0.38472536320389383,-0.6412089386731558 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 4.280000000000001,-0.5 l -6.40064804134821e-2,0.27804484388664924 l -2.8602755563472734e-2,-0.12369611725839136 l -0.12260375314021485,3.297221203617875e-2 l 0.21521298911716968,-0.18732093866443664 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 4.187390764023046,-0.34565127337174206 l 1.6220638094109176e-3,7.014813475723949e-3 l -8.574929257125424e-3,-5.14495755427526e-3 l 6.952865447714506e-3,-1.8698559214486892e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 4.330000000000001,-0.5 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.5,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5,2.2249999999999996 l 0.8999999999999999,-1.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.45,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.20000000000000007,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.2926092359769548,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5,2.2249999999999996 l 0.8047253632038933,-1.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 0.39999999999999986,0.7249999999999999 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 0.3073907640230451,0.8793487266282578 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 0.4499999999999999,0.7249999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.55646658662951" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.1764705882354,227.0168067226891 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.7478991596639,50.54621848739498 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.2268907563025,50.54621848739498 l 8.119090212668617,-13.53181702111433 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.3529411764706,25.33613445378154 l -3.799486429928585,16.50501018700616 l -3.072230564730154,-5.052148529241624 l -5.90353367390974,-0.33331001394232596 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.4812241818119,36.788996111546076 l -0.13524321284074386,0.22540535473457254 l 0.4287464628562718,0.25724787771376373 l -0.29350325001552796,-0.48265323244833624 l -0.13524321284074386,0.22540535473457254 l -0.4287464628562718,-0.25724787771376373 Z" /></g></g></g></g></g></g></g></g><g><g><path d="M 224.36974789915968,201.80672268907566 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 274.78991596638656,141.3025210084034 l 24.201680672268907,-40.33613445378151 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 277.3109243697479,141.3025210084034 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 274.78991596638656,141.3025210084034 l 8.11909021266858,-13.53181702111432 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 289.9159663865546,116.09243697478996 l -3.799486429928556,16.505010187006164 l -3.072230564730163,-5.0521485292416175 l -5.90353367390974,-0.33331001394231574 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 283.0442493918959,127.5452986325545 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 274.78991596638656,141.3025210084034 l 17.194720464769414,-28.65786744128239 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 298.99159663865544,100.96638655462189 l -3.7994864299285593,16.505010187006164 l -3.0722305647301624,-5.052148529241618 l -5.90353367390974,-0.33331001394231663 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 292.11987964399674,112.41924821238644 l -0.1352432128407435,0.22540535473457274 l 0.4287464628562722,0.25724787771376306 l -0.2935032500155287,-0.4826532324483358 l -0.1352432128407435,0.22540535473457274 l -0.4287464628562722,-0.25724787771376306 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 301.5126050420168,100.96638655462188 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g><g><path d="M 7.563025210084035,162.7310924369748 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 57.983193277310924,238.3613445378151 l 45.3781512605042,-75.63025210084034 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.50420168067227,238.3613445378151 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.983193277310924,238.3613445378151 l 8.119090212668594,-13.531817021114325 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 73.10924369747899,213.15126050420167 l -3.7994864299285664,16.505010187006164 l -3.0722305647301598,-5.052148529241619 l -5.903533673909739,-0.3333100139423193 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.23752670282026,224.60412216196622 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 57.983193277310924,238.3613445378151 l 38.371191053004715,-63.951985088341196 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 103.36134453781511,162.73109243697482 l -3.7994864299285664,16.505010187006164 l -3.0722305647301598,-5.052148529241619 l -5.903533673909739,-0.3333100139423193 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 96.48962754315639,174.18395409473936 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 105.88235294117646,162.7310924369748 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_traceEx.svg b/diagrams/src_Diagrams_Core_Trace_traceEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_traceEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_traceEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="200.0" height="206.66666666666666" font-size="1" viewBox="0 0 200 207"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(60.6060606060606,0.0,0.0,60.6060606060606,100.0,103.33333333333333)"><g><path d="M -1.5,1.4999999999999998 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5,0.2999999999999998 l -0.72,1.2 " /></g><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5,0.2999999999999998 l 1.08,-1.8 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.45,0.2999999999999998 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5,0.2999999999999998 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.20000000000000007,-0.20000000000000015 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.2926092359769548,-4.5651273371742185e-2 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 0.6300000000000001,-1.5000000000000002 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 2.9999999999999985e-2,-0.5000000000000002 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.57,0.4999999999999998 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M -1.17,1.4999999999999998 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="200.0" height="206.66666666666666" font-size="1" viewBox="0 0 200 207" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="0.8132240363721016" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><path d="M 9.090909090909093,194.24242424242422 h 181.8181818181818 v -181.8181818181818 h -121.2121212121212 v 60.6060606060606 h 60.6060606060606 v 60.6060606060606 h -121.2121212121212 v 60.6060606060606 " /><g stroke-dasharray="6.0606060606060606,6.0606060606060606" stroke-dashoffset="0.0"><path d="M 69.69696969696969,121.5151515151515 l -43.63636363636363,72.72727272727272 " /></g><g stroke-dasharray="6.0606060606060606,6.0606060606060606" stroke-dashoffset="0.0"><path d="M 69.69696969696969,121.5151515151515 l 65.45454545454545,-109.09090909090908 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 72.72727272727272,121.5151515151515 c 0.0,-1.6735901510024045 -1.3567128793006256,-3.0303030303030303 -3.0303030303030294 -3.0303030303030303c -1.6735901510024045,-1.024778410754815e-16 -3.0303030303030303,1.3567128793006253 -3.0303030303030303 3.0303030303030294c -2.04955682150963e-16,1.6735901510024045 1.3567128793006251,3.0303030303030303 3.030303030303029 3.0303030303030303c 1.6735901510024045,3.074335232264445e-16 3.0303030303030303,-1.3567128793006251 3.0303030303030307 -3.0303030303030294Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 69.69696969696969,121.5151515151515 l 14.520815426223662,-24.201359043706105 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 87.87878787878786,91.2121212121212 l -1.9494509957695625,8.468436231485862 l -1.5763085469842033,-2.5921703268962526 l -3.029001369371613,-0.17101562291723638 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 84.3530283360341,97.08838711671082 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 138.1818181818182,12.424242424242408 c 0.0,-1.6735901510024045 -1.3567128793006256,-3.0303030303030303 -3.0303030303030294 -3.0303030303030303c -1.6735901510024045,-1.024778410754815e-16 -3.0303030303030303,1.3567128793006253 -3.0303030303030303 3.0303030303030294c -2.04955682150963e-16,1.6735901510024045 1.3567128793006251,3.0303030303030303 3.030303030303029 3.0303030303030303c 1.6735901510024045,3.074335232264445e-16 3.0303030303030303,-1.3567128793006251 3.0303030303030307 -3.0303030303030294Z" /></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 101.81818181818181,73.03030303030302 c 0.0,-1.6735901510024045 -1.3567128793006256,-3.0303030303030303 -3.0303030303030294 -3.0303030303030303c -1.6735901510024045,-1.024778410754815e-16 -3.0303030303030303,1.3567128793006253 -3.0303030303030303 3.0303030303030294c -2.04955682150963e-16,1.6735901510024045 1.3567128793006251,3.0303030303030303 3.030303030303029 3.0303030303030303c 1.6735901510024045,3.074335232264445e-16 3.0303030303030303,-1.3567128793006251 3.0303030303030307 -3.0303030303030294Z" /></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 65.45454545454545,133.63636363636363 c 0.0,-1.6735901510024045 -1.3567128793006256,-3.0303030303030303 -3.0303030303030294 -3.0303030303030303c -1.6735901510024045,-1.024778410754815e-16 -3.0303030303030303,1.3567128793006253 -3.0303030303030303 3.0303030303030294c -2.04955682150963e-16,1.6735901510024045 1.3567128793006251,3.0303030303030303 3.030303030303029 3.0303030303030303c 1.6735901510024045,3.074335232264445e-16 3.0303030303030303,-1.3567128793006251 3.0303030303030307 -3.0303030303030294Z" /></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 29.090909090909093,194.24242424242422 c 0.0,-1.6735901510024045 -1.3567128793006256,-3.0303030303030303 -3.0303030303030294 -3.0303030303030303c -1.6735901510024045,-1.024778410754815e-16 -3.0303030303030303,1.3567128793006253 -3.0303030303030303 3.0303030303030294c -2.04955682150963e-16,1.6735901510024045 1.3567128793006251,3.0303030303030303 3.030303030303029 3.0303030303030303c 1.6735901510024045,3.074335232264445e-16 3.0303030303030303,-1.3567128793006251 3.0303030303030307 -3.0303030303030294Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_tracePEx.svg b/diagrams/src_Diagrams_Core_Trace_tracePEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_tracePEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_tracePEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.42016806722689,0.0,0.0,50.42016806722689,83.19327731092437,126.17647058823532)"><g><g><path d="M 7.100000000000001,1.8956044693365777 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 9.600000000000001,-1.6043955306634223 l -2.1,3.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.650000000000002,-1.6043955306634223 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.600000000000001,-1.6043955306634223 l 0.20472536320389406,-0.3412089386731558 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.900000000000002,-2.1043955306634223 l -6.400648041348227e-2,0.27804484388664924 l -2.8602755563472658e-2,-0.12369611725839136 l -0.12260375314021488,3.297221203617867e-2 l 0.2152129891171698,-0.18732093866443655 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.807390764023047,-1.9500468040351646 l 1.6220638094109128e-3,7.01481347572395e-3 l -8.57492925712542e-3,-5.144957554275265e-3 l 6.952865447714507e-3,-1.8698559214486848e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 7.550000000000002,1.8956044693365777 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><g><path d="M 2.8000000000000007,1.4749999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8000000000000007,0.2749999999999999 l -0.72,1.2 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8500000000000005,0.2749999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8000000000000007,0.2749999999999999 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1000000000000005,-0.225 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.007390764023046,-7.065127337174204e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.130000000000001,1.4749999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.5,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5,2.2249999999999996 l 0.8999999999999999,-1.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.45,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.20000000000000007,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.2926092359769548,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 0.4499999999999999,0.7249999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.55646658662951" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.1764705882354,225.75630252100842 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 567.2268907563026,49.285714285714306 l -105.88235294117648,176.47058823529412 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.7478991596639,49.285714285714306 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.2268907563025,49.285714285714306 l 8.119090212668617,-13.53181702111433 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.3529411764706,24.075630252100865 l -3.799486429928585,16.50501018700616 l -3.072230564730154,-5.052148529241624 l -5.90353367390974,-0.33331001394232596 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.4812241818119,35.5284919098654 l -0.13524321284074386,0.22540535473457254 l 0.4287464628562718,0.25724787771376373 l -0.29350325001552796,-0.48265323244833624 l -0.13524321284074386,0.22540535473457254 l -0.4287464628562718,-0.25724787771376373 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 463.8655462184875,225.75630252100842 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g><g><g><path d="M 224.36974789915968,200.54621848739498 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 274.78991596638656,140.0420168067227 l -36.30252100840336,60.50420168067227 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 277.3109243697479,140.0420168067227 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 274.78991596638656,140.0420168067227 l 8.11909021266858,-13.53181702111432 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 289.9159663865546,114.83193277310926 l -3.799486429928556,16.505010187006164 l -3.072230564730163,-5.0521485292416175 l -5.90353367390974,-0.33331001394231574 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 283.0442493918959,126.2847944308738 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 241.00840336134456,200.54621848739498 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g><g><path d="M 7.563025210084035,162.7310924369748 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 57.983193277310924,238.3613445378151 l 45.3781512605042,-75.63025210084034 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.50420168067227,238.3613445378151 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.983193277310924,238.3613445378151 l 8.119090212668594,-13.531817021114325 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 73.10924369747899,213.15126050420167 l -3.7994864299285664,16.505010187006164 l -3.0722305647301598,-5.052148529241619 l -5.903533673909739,-0.3333100139423193 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.23752670282026,224.60412216196622 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 105.88235294117646,162.7310924369748 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g></g></g></svg>
diff --git a/diagrams/src_Diagrams_Core_Trace_traceVEx.svg b/diagrams/src_Diagrams_Core_Trace_traceVEx.svg
--- a/diagrams/src_Diagrams_Core_Trace_traceVEx.svg
+++ b/diagrams/src_Diagrams_Core_Trace_traceVEx.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252"><g><g stroke="rgb(0,0,0)" stroke-opacity="1.0" fill="rgb(0,0,0)" fill-opacity="0.0" stroke-width="1.0e-2" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g transform="matrix(50.42016806722689,0.0,0.0,50.42016806722689,83.19327731092437,126.17647058823532)"><g><g><path d="M 7.100000000000001,1.8956044693365777 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 9.600000000000001,-1.6043955306634223 l -2.1,3.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 9.650000000000002,-1.6043955306634223 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 9.600000000000001,-1.6043955306634223 l 0.20472536320389406,-0.3412089386731558 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.900000000000002,-2.1043955306634223 l -6.400648041348227e-2,0.27804484388664924 l -2.8602755563472658e-2,-0.12369611725839136 l -0.12260375314021488,3.297221203617867e-2 l 0.2152129891171698,-0.18732093866443655 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 9.807390764023047,-1.9500468040351646 l 1.6220638094109128e-3,7.01481347572395e-3 l -8.57492925712542e-3,-5.144957554275265e-3 l 6.952865447714507e-3,-1.8698559214486848e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M 9.600000000000001,-1.6043955306634223 l -2.0047253632038924,3.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 7.500000000000002,1.8956044693365774 l 6.40064804134819e-2,-0.2780448438866493 l 2.8602755563472818e-2,0.12369611725839133 l 0.12260375314021485,-3.2972212036178825e-2 l -0.21521298911716957,0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 7.592609235976957,1.7412557427083195 l -1.6220638094109224e-3,-7.014813475723948e-3 l 8.574929257125427e-3,5.144957554275254e-3 l -6.952865447714505e-3,1.869855921448694e-3 v 4.336808689942018e-19 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 7.550000000000002,1.8956044693365777 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><g><path d="M 2.8000000000000007,1.4749999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M 3.8000000000000007,0.2749999999999999 l -0.72,1.2 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.8500000000000005,0.2749999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8000000000000007,0.2749999999999999 l 0.20472536320389326,-0.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.1000000000000005,-0.225 l -6.400648041348188e-2,0.2780448438866493 l -2.8602755563472824e-2,-0.12369611725839133 l -0.12260375314021484,3.297221203617883e-2 l 0.21521298911716952,-0.1873209386644368 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 4.007390764023046,-7.065127337174204e-2 l 1.6220638094109228e-3,7.014813475723947e-3 l -8.574929257125427e-3,-5.144957554275253e-3 l 6.952865447714504e-3,-1.8698559214486944e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M 3.8000000000000007,0.2749999999999999 l -0.6247253632038933,1.041208938673156 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 3.080000000000001,1.475 l 6.40064804134819e-2,-0.2780448438866493 l 2.8602755563472818e-2,0.12369611725839133 l 0.12260375314021485,-3.2972212036178825e-2 l -0.21521298911716957,0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 3.1726092359769558,1.3206512733717422 l -1.6220638094109224e-3,-7.014813475723948e-3 l 8.574929257125427e-3,5.144957554275254e-3 l -6.952865447714505e-3,1.869855921448694e-3 v 4.336808689942018e-19 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 3.130000000000001,1.4749999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g><g><path d="M -1.5,0.7249999999999999 h 3.0 v -3.0 h -2.0 v 1.0 h 1.0 v 1.0 h -2.0 v 1.0 " /><g fill-opacity="0.0" stroke-dasharray="0.1,0.1" stroke-dashoffset="0.0"><path d="M -0.5,2.2249999999999996 l 0.8999999999999999,-1.5 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><path d="M -0.45,2.2249999999999996 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0" stroke-width="2.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5,2.2249999999999996 l 0.2047253632038934,-0.34120893867315566 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.20000000000000007,1.7249999999999996 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M -0.2926092359769548,1.8793487266282576 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0" stroke-width="3.0e-2"><g><g fill-opacity="0.0"><path d="M -0.5,2.2249999999999996 l 0.8047253632038933,-1.3412089386731556 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 0.39999999999999986,0.7249999999999999 l -6.400648041348193e-2,0.2780448438866493 l -2.8602755563472804e-2,-0.12369611725839133 l -0.12260375314021485,3.297221203617881e-2 l 0.21521298911716957,-0.18732093866443678 Z" /></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 0.3073907640230451,0.8793487266282578 l 1.6220638094109206e-3,7.014813475723948e-3 l -8.574929257125425e-3,-5.1449575542752545e-3 l 6.952865447714505e-3,-1.8698559214486935e-3 h -0.0 Z" /></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><path d="M 0.4499999999999999,0.7249999999999999 c 0.0,-2.7614237491539673e-2 -2.2385762508460322e-2,-5.0e-2 -4.999999999999999e-2 -5.0e-2c -2.7614237491539673e-2,-1.6908843777454448e-18 -5.0e-2,2.238576250846032e-2 -5.0e-2 4.999999999999999e-2c -3.3817687554908897e-18,2.7614237491539673e-2 2.238576250846032e-2,5.0e-2 4.999999999999998e-2 5.0e-2c 2.7614237491539673e-2,5.072653133236335e-18 5.0e-2,-2.2385762508460316e-2 5.000000000000001e-2 -4.999999999999999e-2Z" /></g></g></g></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600.0" height="252.3529411764706" font-size="1" viewBox="0 0 600 252" stroke="rgb(0,0,0)" stroke-opacity="1"><g><g fill="rgb(0,0,0)" fill-opacity="0.0"><g stroke="rgb(0,0,0)" stroke-opacity="1.0" stroke-width="1.55646658662951" stroke-linecap="butt" stroke-linejoin="miter" font-size="1.0em" stroke-miterlimit="10.0"><g><g><path d="M 441.1764705882354,225.75630252100842 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 567.2268907563026,49.285714285714306 l -105.88235294117648,176.47058823529412 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 569.7478991596639,49.285714285714306 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 567.2268907563025,49.285714285714306 l 8.119090212668617,-13.53181702111433 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 582.3529411764706,24.075630252100865 l -3.799486429928585,16.50501018700616 l -3.072230564730154,-5.052148529241624 l -5.90353367390974,-0.33331001394232596 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 575.4812241818119,35.5284919098654 l -0.13524321284074386,0.22540535473457254 l 0.4287464628562718,0.25724787771376373 l -0.29350325001552796,-0.48265323244833624 l -0.13524321284074386,0.22540535473457254 l -0.4287464628562718,-0.25724787771376373 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 567.2268907563025,49.285714285714306 l -98.87539273367697,164.79232122279504 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 461.3445378151261,225.75630252100845 l 3.799486429928564,-16.505010187006164 l 3.0722305647301607,5.052148529241619 l 5.90353367390974,0.3333100139423184 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 468.2162548097848,214.3034408632439 l 0.13524321284074356,-0.2254053547345727 l -0.42874646285627216,-0.2572478777137632 l 0.29350325001552857,0.4826532324483359 l 0.13524321284074356,-0.2254053547345727 l 0.42874646285627216,0.2572478777137632 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 463.8655462184875,225.75630252100842 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g><g><g><path d="M 224.36974789915968,200.54621848739498 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 274.78991596638656,140.0420168067227 l -36.30252100840336,60.50420168067227 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 277.3109243697479,140.0420168067227 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 274.78991596638656,140.0420168067227 l 8.11909021266858,-13.53181702111432 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 289.9159663865546,114.83193277310926 l -3.799486429928556,16.505010187006164 l -3.072230564730163,-5.0521485292416175 l -5.90353367390974,-0.33331001394231574 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 283.0442493918959,126.2847944308738 l -0.13524321284074345,0.22540535473457277 l 0.42874646285627227,0.25724787771376295 l -0.2935032500155288,-0.4826532324483357 l -0.13524321284074345,0.22540535473457277 l -0.42874646285627227,-0.25724787771376295 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 274.78991596638656,140.0420168067227 l -29.295560800903882,48.82593466817316 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 238.4873949579832,200.54621848739498 l 3.799486429928564,-16.505010187006164 l 3.0722305647301607,5.052148529241619 l 5.90353367390974,0.3333100139423184 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 245.35911195264194,189.09335682963044 l 0.13524321284074356,-0.2254053547345727 l -0.42874646285627216,-0.2572478777137632 l 0.29350325001552857,0.4826532324483359 l 0.13524321284074356,-0.2254053547345727 l 0.42874646285627216,0.2572478777137632 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 241.00840336134456,200.54621848739498 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g><g><path d="M 7.563025210084035,162.7310924369748 h 151.26050420168067 v -151.26050420168067 h -100.84033613445378 v 50.42016806722689 h 50.42016806722689 v 50.42016806722689 h -100.84033613445378 v 50.42016806722689 " /><g stroke-dasharray="5.042016806722689,5.042016806722689" stroke-dashoffset="0.0"><path d="M 57.983193277310924,238.3613445378151 l 45.3781512605042,-75.63025210084034 " /></g><g fill="rgb(0,0,255)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 60.50420168067227,238.3613445378151 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g><g stroke="rgb(0,0,255)" stroke-opacity="1.0"><g><g><path d="M 57.983193277310924,238.3613445378151 l 8.119090212668594,-13.531817021114325 " /></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 73.10924369747899,213.15126050420167 l -3.7994864299285664,16.505010187006164 l -3.0722305647301598,-5.052148529241619 l -5.903533673909739,-0.3333100139423193 Z" /></g></g></g><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><g fill="rgb(0,0,255)" fill-opacity="1.0"><path d="M 66.23752670282026,224.60412216196622 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g stroke="rgb(0,128,0)" stroke-opacity="1.0"><g><g><path d="M 57.983193277310924,238.3613445378151 l 38.371191053004715,-63.951985088341196 " /></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="" /></g></g></g></g><g stroke-width="0.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 103.36134453781511,162.73109243697482 l -3.7994864299285664,16.505010187006164 l -3.0722305647301598,-5.052148529241619 l -5.903533673909739,-0.3333100139423193 Z" /></g></g></g><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><g fill="rgb(0,128,0)" fill-opacity="1.0"><path d="M 96.48962754315639,174.18395409473936 l -0.1352432128407436,0.22540535473457268 l 0.4287464628562721,0.25724787771376323 l -0.2935032500155285,-0.4826532324483359 l -0.1352432128407436,0.22540535473457268 l -0.4287464628562721,-0.25724787771376323 Z" /></g></g></g></g></g></g><g fill="rgb(255,0,0)" fill-opacity="1.0" stroke-width="0.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><g fill="rgb(255,0,0)" fill-opacity="1.0"><path d="M 105.88235294117646,162.7310924369748 c 0.0,-1.3923144953717481 -1.1286939079895961,-2.5210084033613445 -2.521008403361344 -2.5210084033613445c -1.3923144953717481,-8.525467450817369e-17 -2.5210084033613445,1.128693907989596 -2.5210084033613445 2.5210084033613436c -1.7050934901634737e-16,1.3923144953717481 1.1286939079895957,2.5210084033613445 2.521008403361343 2.5210084033613445c 1.3923144953717481,2.5576402352452103e-16 2.5210084033613445,-1.1286939079895957 2.521008403361346 -2.5210084033613436Z" /></g></g></g></g></g></g></g></svg>
diff --git a/src/Diagrams/Core.hs b/src/Diagrams/Core.hs
--- a/src/Diagrams/Core.hs
+++ b/src/Diagrams/Core.hs
@@ -29,11 +29,13 @@
          -- * Points
 
        , Point, origin, (*.)
+       , _relative
 
          -- * Transformations
 
          -- ** Utilities
        , basis
+       , dimension
        , determinant
 
          -- ** Invertible linear transformations
@@ -42,6 +44,7 @@
          -- ** General transformations
        , Transformation
        , inv, transp, transl
+       , dropTransl
        , apply
        , papply
        , fromLinear
@@ -49,6 +52,7 @@
          -- ** Some specific transformations
        , translation, translate, moveTo, place
        , scaling, scale
+       , avgScale
 
          -- ** The Transformable class
 
@@ -75,11 +79,11 @@
          -- * Attributes and styles
 
        , AttributeClass
-       , Attribute, mkAttr, mkTAttr, unwrapAttr
+       , Attribute, mkAttr, mkTAttr, mkGTAttr, unwrapAttr
 
        , Style, HasStyle(..)
        , getAttr, combineAttr
-       , applyAttr, applyTAttr
+       , applyAttr, applyTAttr, applyGTAttr
 
          -- * Envelopes
 
@@ -114,12 +118,11 @@
 
          -- * Primtives
 
-       , Prim(..), IsPrim(..), nullPrim
+       , Prim(..)
 
          -- * Diagrams
 
        , QDiagram, Diagram, mkQD, pointDiagram
-       , prims
        , envelope, trace, subMap, names, query, sample
        , value, resetValue, clearValue
 
@@ -131,7 +134,7 @@
 
        , href
 
-       , freeze, setEnvelope, setTrace
+       , setEnvelope, setTrace
 
        , atop
 
@@ -142,12 +145,21 @@
        , location
        , subPoint
 
+         -- * Measurements
+       , Measure(..)
+       , fromOutput
+       , toOutput
+       , atMost
+       , atLeast
+
          -- * Backends
 
        , Backend(..)
-       , MultiBackend(..)
        , Renderable(..)
 
+       , renderDia
+       , renderDiaT
+
          -- ** The null backend
 
        , NullBackend, D
@@ -160,6 +172,7 @@
 
        ) where
 
+import           Diagrams.Core.Compile
 import           Diagrams.Core.Envelope
 import           Diagrams.Core.HasOrigin
 import           Diagrams.Core.Juxtapose
diff --git a/src/Diagrams/Core/Compile.hs b/src/Diagrams/Core/Compile.hs
--- a/src/Diagrams/Core/Compile.hs
+++ b/src/Diagrams/Core/Compile.hs
@@ -1,3 +1,7 @@
+{-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE ScopedTypeVariables   #-}
+{-# LANGUAGE TypeOperators         #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -17,30 +21,45 @@
   , RTree
   , toRTree
 
-  -- * Internals
+    -- * Backend API
 
+  , renderDia
+  , renderDiaT
+
+    -- * Internals
+
   , toDTree
   , fromDTree
+  , styleToOutput
+  , toOutput
   )
   where
 
-import qualified Data.List.NonEmpty      as NEL
-import           Data.Maybe              (fromMaybe)
+import           Data.Data
+import qualified Data.List.NonEmpty        as NEL
+import           Data.Maybe                (fromMaybe)
 import           Data.Monoid.Coproduct
 import           Data.Monoid.MList
-import           Data.Monoid.Split
+import           Data.Monoid.WithSemigroup (Monoid')
 import           Data.Semigroup
 import           Data.Tree
 import           Data.Tree.DUAL
+import           Data.VectorSpace
+import           Diagrams.Core.Envelope    (OrderedField, diameter)
+import           Diagrams.Core.Style
 import           Diagrams.Core.Transform
 import           Diagrams.Core.Types
 
 emptyDTree :: Tree (DNode b v a)
 emptyDTree = Node DEmpty []
 
+uncurry3 :: (a -> b -> c -> r) -> (a, b, c) -> r
+uncurry3 f (x, y, z) = f x y z
+
 -- | Convert a @QDiagram@ into a raw tree.
-toDTree :: HasLinearMap v => QDiagram b v m -> Maybe (DTree b v Annotation)
-toDTree (QD qd)
+toDTree :: HasLinearMap v => Scalar v -> Scalar v -> QDiagram b v m
+                          -> Maybe (DTree b v Annotation)
+toDTree g n (QD qd)
   = foldDUAL
 
       -- Prims at the leaves.  We ignore the accumulated d-annotations
@@ -56,7 +75,8 @@
                -- the continuation, convert the result to a DTree, and
                -- splice it in, adding a DDelay node to mark the point
                -- of the splice.
-               (Node DDelay . (:[]) . fromMaybe emptyDTree . toDTree . ($d))
+               (Node DDelay . (:[]) . fromMaybe emptyDTree . toDTree g n
+                            . ($ (d, g, n)) . uncurry3)
       )
 
       -- u-only leaves --> empty DTree. We don't care about the
@@ -86,39 +106,32 @@
       qd
 
 -- | Convert a @DTree@ to an @RTree@ which can be used dirctly by backends.
---   A @DTree@ includes nodes of type @DTransform (Split (Transformation v))@;
---   in the @RTree@ the frozen part of the transform is put in a node of type
---   @RFrozenTr (Transformation v)@ and the unfrozen part is pushed down until
---   it is either frozen or reaches a primitive node.
+--   A @DTree@ includes nodes of type @DTransform (Transformation v)@;
+--   in the @RTree@ transform is pushed down until it reaches a primitive node.
 fromDTree :: HasLinearMap v => DTree b v Annotation -> RTree b v Annotation
 fromDTree = fromDTree' mempty
   where
     fromDTree' :: HasLinearMap v => Transformation v -> DTree b v Annotation -> RTree b v Annotation
-    -- We put the accumulated unfrozen transformation (accTr) and the prim
+    -- We put the accumulated transformation (accTr) and the prim
     -- into an RPrim node.
     fromDTree' accTr (Node (DPrim p) _)
-      = Node (RPrim accTr p) []
+      = Node (RPrim (transform accTr p)) []
 
     -- Styles are transformed then stored in their own node
     -- and accTr is push down the tree.
     fromDTree' accTr (Node (DStyle s) ts)
       = Node (RStyle (transform accTr s)) (fmap (fromDTree' accTr) ts)
 
-    -- Unfrozen transformations are accumulated and pushed down as well.
-    fromDTree' accTr (Node (DTransform (M tr)) ts)
+    -- Transformations are accumulated and pushed down as well.
+    fromDTree' accTr (Node (DTransform tr) ts)
       = Node REmpty (fmap (fromDTree' (accTr <> tr)) ts)
 
-    -- Frozen transformations are stored in the RFrozenTr node
-    -- and accTr is reset to the unfrozen part of the transform.
-    fromDTree' accTr (Node (DTransform (tr1 :| tr2)) ts)
-      = Node (RFrozenTr (accTr <> tr1)) (fmap (fromDTree' tr2) ts)
-
     fromDTree' accTr (Node (DAnnot a) ts)
       = Node (RAnnot a) (fmap (fromDTree' accTr) ts)
 
     -- Drop accumulated transformations upon encountering a DDelay
     -- node --- the tree unfolded beneath it already took into account
-    -- any non-frozen transformation at this point.
+    -- any transformation at this point.
     fromDTree' _ (Node DDelay ts)
       = Node REmpty (fmap (fromDTree' mempty) ts)
 
@@ -126,7 +139,94 @@
     fromDTree' accTr (Node _ ts)
       = Node REmpty (fmap (fromDTree' accTr) ts)
 
--- | Compile a @QDiagram@ into an 'RTree'.  Suitable for use by
---   backends when implementing 'renderData'.
-toRTree :: HasLinearMap v => QDiagram b v m -> RTree b v Annotation
-toRTree = fromDTree . fromMaybe (Node DEmpty []) . toDTree
+-- | Compile a @QDiagram@ into an 'RTree', rewriting styles with the
+--   given function along the way.  Suitable for use by backends when
+--   implementing 'renderData'.  The first argument is the
+--   transformation used to convert the diagram from local to output
+--   units.
+toRTree
+  :: (HasLinearMap v, InnerSpace v, Data v, Data (Scalar v), OrderedField (Scalar v), Monoid m, Semigroup m)
+  => Transformation v -> QDiagram b v m -> RTree b v Annotation
+toRTree globalToOutput d
+  = (fmap . onRStyle) (styleToOutput gToO nToO)
+  . fromDTree
+  . fromMaybe (Node DEmpty [])
+  . toDTree gToO nToO
+  $ d
+  where
+    gToO = avgScale globalToOutput
+
+    -- Scaling factor from normalized units to output units: nth root
+    -- of product of diameters along each basis direction.  Note at
+    -- this point the diagram has already had the globalToOutput
+    -- transformation applied, so output = global = local units.
+    nToO = product (map (\v -> diameter v d) basis) ** (1 / fromIntegral (dimension d))
+
+-- | Apply a style transformation on 'RStyle' nodes; the identity for
+--   other 'RNode's.
+onRStyle :: (Style v -> Style v) -> (RNode b v a -> RNode b v a)
+onRStyle f (RStyle s) = RStyle (f s)
+onRStyle _ n          = n
+
+-- | Convert all 'Measure' values to 'Output' units.  The arguments
+--   are, respectively, the scaling factor from global units to output
+--   units, and from normalized units to output units.  It is assumed
+--   that local units are identical to output units (which will be the
+--   case if all transformations have been fully pushed down and
+--   applied). Normalized units are based on a logical diagram size of
+--   1 x 1.
+styleToOutput
+  :: forall v. (Data v, Data (Scalar v), Num (Scalar v), Ord (Scalar v), Fractional (Scalar v))
+  => Scalar v -> Scalar v -> Style v -> Style v
+styleToOutput globalToOutput normToOutput =
+  gmapAttrs (toOutput globalToOutput normToOutput :: Measure v -> Measure v)
+
+-- | Convert an aribrary 'Measure' to 'Output' units.
+toOutput :: forall v. (Data v, Data (Scalar v), Num (Scalar v), Ord (Scalar v), Fractional (Scalar v))
+  => Scalar v -> Scalar v -> Measure v -> Measure v
+toOutput g n m =
+  case m of
+     m'@(Output _) -> m'
+     Local s       -> Output s
+     Global s      -> Output (g * s)
+     Normalized s  -> Output (n * s)
+
+     MinM m1 m2    -> outBin min (toOutput g n m1) (toOutput g n m2)
+     MaxM m1 m2    -> outBin max (toOutput g n m1) (toOutput g n m2)
+     ZeroM         -> Output 0
+     NegateM m'    -> outUn negate (toOutput g n m')
+     PlusM m1 m2   -> outBin (+) (toOutput g n m1) (toOutput g n m2)
+     ScaleM s m'   -> outUn (s*) (toOutput g n m')
+  where
+    outUn  op (Output o1)             = Output (op o1)
+    outUn  _  _ = error "outUn: The sky is falling!"
+    outBin op (Output o1) (Output o2) = Output (o1 `op` o2)
+    outBin _ _ _ = error "outBin: Both skies are falling!"
+
+
+--------------------------------------------------
+
+-- | Render a diagram, returning also the transformation which was
+--   used to convert the diagram from its (\"global\") coordinate
+--   system into the output coordinate system.  The inverse of this
+--   transformation can be used, for example, to convert output/screen
+--   coordinates back into diagram coordinates.  See also 'adjustDia'.
+renderDiaT
+  :: ( Backend b v
+     , HasLinearMap v, InnerSpace v, Data v
+     , OrderedField (Scalar v), Data (Scalar v)
+     , Monoid' m
+     )
+  => b -> Options b v -> QDiagram b v m -> (Transformation v, Result b v)
+renderDiaT b opts d = (g2o, renderRTree b opts' . toRTree g2o $ d')
+  where (opts', g2o, d') = adjustDia b opts d
+
+-- | Render a diagram.
+renderDia
+  :: ( Backend b v
+     , InnerSpace v, Data v
+     , OrderedField (Scalar v), Data (Scalar v)
+     , Monoid' m
+     )
+          => b -> Options b v -> QDiagram b v m -> Result b v
+renderDia b opts d = snd (renderDiaT b opts d)
diff --git a/src/Diagrams/Core/Envelope.hs b/src/Diagrams/Core/Envelope.hs
--- a/src/Diagrams/Core/Envelope.hs
+++ b/src/Diagrams/Core/Envelope.hs
@@ -3,9 +3,9 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses      #-}
 {-# LANGUAGE StandaloneDeriving         #-}
+{-# LANGUAGE TemplateHaskell            #-}
 {-# LANGUAGE TypeFamilies               #-}
 {-# LANGUAGE UndecidableInstances       #-}
-{-# LANGUAGE TemplateHaskell            #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Graphics.Rendering.Diagrams.Envelope
@@ -36,6 +36,7 @@
          -- * Utility functions
        , diameter
        , radius
+       , extent
        , envelopeVMay, envelopeV, envelopePMay, envelopeP, envelopeSMay, envelopeS
 
          -- * Miscellaneous
@@ -43,8 +44,8 @@
        ) where
 
 import           Control.Applicative     ((<$>))
-import           Control.Lens (Wrapped(..), Rewrapped, iso, over, mapped
-                              , _Wrapping', op)
+import           Control.Lens            (Rewrapped, Wrapped (..), iso, mapped,
+                                          op, over, _Wrapping')
 import qualified Data.Map                as M
 import           Data.Maybe              (fromMaybe)
 import           Data.Semigroup
@@ -255,11 +256,16 @@
 -- | Compute the diameter of a enveloped object along a particular
 --   vector.  Returns zero for the empty envelope.
 diameter :: Enveloped a => V a -> a -> Scalar (V a)
-diameter v a = case appEnvelope $ getEnvelope a of
-  (Just env) -> (env v + env (negateV v)) * magnitude v
-  Nothing -> 0
+diameter v a = maybe 0 (\(lo,hi) -> (hi - lo) * magnitude v) (extent v a)
 
 -- | Compute the \"radius\" (1\/2 the diameter) of an enveloped object
 --   along a particular vector.
 radius :: Enveloped a => V a -> a -> Scalar (V a)
 radius v = (0.5*) . diameter v
+
+-- | Compute the range of an enveloped object along a certain
+--   direction.  Returns a pair of scalars @(lo,hi)@ such that the
+--   object extends from @(lo *^ v)@ to @(hi *^ v)@. Returns @Nothing@
+--   for objects with an empty envelope.
+extent :: Enveloped a => V a -> a -> Maybe (Scalar (V a), Scalar (V a))
+extent v a = (\f -> (-f (negateV v), f v)) <$> (appEnvelope . getEnvelope $ a)
diff --git a/src/Diagrams/Core/Points.hs b/src/Diagrams/Core/Points.hs
--- a/src/Diagrams/Core/Points.hs
+++ b/src/Diagrams/Core/Points.hs
@@ -1,5 +1,7 @@
-{-# LANGUAGE TypeFamilies
-  #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE TypeFamilies #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Diagrams.Core.Points
@@ -15,14 +17,24 @@
        ( -- * Points
 
          Point(..), origin, (*.)
+       , _relative
 
        ) where
 
--- We just import from Data.AffineSpace.Point (defined in the
+-- We import from Data.AffineSpace.Point (defined in the
 -- vector-space-points package) and re-export.  We also define an
 -- instance of V for Point here.
+
+import Control.Lens (Iso', iso)
+
 import Data.AffineSpace.Point
+import Data.AffineSpace
 
 import Diagrams.Core.V
 
 type instance V (Point v) = v
+
+-- | An isomorphism between points and vectors, given a reference
+-- point.  This is provided for defining new lenses on points.
+_relative :: AffineSpace (Point v) => Point v -> Iso' (Point v) v
+_relative p0 = iso (.-. p0) (p0 .+^)
diff --git a/src/Diagrams/Core/Style.hs b/src/Diagrams/Core/Style.hs
--- a/src/Diagrams/Core/Style.hs
+++ b/src/Diagrams/Core/Style.hs
@@ -1,12 +1,13 @@
-{-# LANGUAGE ScopedTypeVariables
-           , GADTs
-           , KindSignatures
-           , FlexibleInstances
-           , MultiParamTypeClasses
-           , TemplateHaskell
-           , TypeFamilies
-           , UndecidableInstances
-  #-}
+{-# LANGUAGE DeriveDataTypeable    #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE GADTs                 #-}
+{-# LANGUAGE KindSignatures        #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Rank2Types            #-}
+{-# LANGUAGE ScopedTypeVariables   #-}
+{-# LANGUAGE TemplateHaskell       #-}
+{-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE UndecidableInstances  #-}
 
 -- The UndecidableInstances flag is needed under 6.12.3 for the
 -- HasStyle (a,b) instance.
@@ -29,28 +30,31 @@
 
          AttributeClass
        , Attribute(..)
-       , mkAttr, mkTAttr, unwrapAttr
-       , applyAttr, applyTAttr
+       , mkAttr, mkTAttr, mkGTAttr, unwrapAttr
+       , applyAttr, applyTAttr, applyGTAttr
 
          -- * Styles
          -- $style
 
        , Style(..)
-       , attrToStyle, tAttrToStyle
+       , attrToStyle, tAttrToStyle, gtAttrToStyle
        , getAttr, setAttr, addAttr, combineAttr
+       , gmapAttrs
 
        , HasStyle(..)
 
        ) where
 
-import           Control.Arrow ((***))
-import           Control.Lens (Wrapped(..), Rewrapped, iso)
-import qualified Data.Map as M
+import           Control.Arrow           ((***))
+import           Control.Lens            (Rewrapped, Wrapped (..), iso, (%~),
+                                          (&))
+import           Data.Data
+import           Data.Data.Lens          (template)
+import qualified Data.Map                as M
 import           Data.Semigroup
-import qualified Data.Set as S
-import           Data.Typeable
+import qualified Data.Set                as S
 
-import Data.Monoid.Action
+import           Data.Monoid.Action
 
 import           Diagrams.Core.Transform
 import           Diagrams.Core.V
@@ -82,11 +86,21 @@
 class (Typeable a, Semigroup a) => AttributeClass a where
 
 -- | An existential wrapper type to hold attributes.  Some attributes
---   are affected by transformations and some are not.
+--   are simply inert/static; some are affected by transformations;
+--   and some are affected by transformations and can be modified
+--   generically.
 data Attribute v :: * where
-  Attribute  :: AttributeClass a => a -> Attribute v
-  TAttribute :: (AttributeClass a, Transformable a, V a ~ v) => a -> Attribute v
+  Attribute   :: AttributeClass a => a -> Attribute v
+  TAttribute  :: (AttributeClass a, Transformable a, V a ~ v) => a -> Attribute v
+  GTAttribute :: (AttributeClass a, Data a, Transformable a, V a ~ v) => a -> Attribute v
 
+  -- Note: one could imagine requiring all attributes to be generic,
+  -- but adding Data instances for everything would be a big pain in
+  -- the butt, especially for things in other packages which don't
+  -- export their constructors (e.g. FingerTree).  Having three
+  -- different attribute wrappers is not ideal but it's far less work
+  -- than the alternative.
+
 type instance V (Attribute v) = v
 
 -- | Wrap up an attribute.
@@ -97,14 +111,19 @@
 mkTAttr :: (AttributeClass a, Transformable a, V a ~ v) => a -> Attribute v
 mkTAttr = TAttribute
 
+-- | Wrap up a transformable and generic attribute.
+mkGTAttr :: (AttributeClass a, Data a, Transformable a, V a ~ v) => a -> Attribute v
+mkGTAttr = GTAttribute
+
 -- | Unwrap an unknown 'Attribute' type, performing a dynamic (but
 --   safe) check on the type of the result.  If the required type
 --   matches the type of the attribute, the attribute value is
 --   returned wrapped in @Just@; if the types do not match, @Nothing@
 --   is returned.
 unwrapAttr :: AttributeClass a => Attribute v -> Maybe a
-unwrapAttr (Attribute a)  = cast a
-unwrapAttr (TAttribute a) = cast a
+unwrapAttr (Attribute a)   = cast a
+unwrapAttr (TAttribute a)  = cast a
+unwrapAttr (GTAttribute a) = cast a
 
 -- | Attributes form a semigroup, where the semigroup operation simply
 --   returns the right-hand attribute when the types do not match, and
@@ -119,10 +138,15 @@
     case unwrapAttr a2 of
       Nothing  -> a2
       Just a2' -> TAttribute (a1 <> a2')
+  (GTAttribute a1) <> a2 =
+    case unwrapAttr a2 of
+      Nothing -> a2
+      Just a2' -> GTAttribute (a1 <> a2')
 
 instance HasLinearMap v => Transformable (Attribute v) where
-  transform _ (Attribute  a) = Attribute a
-  transform t (TAttribute a) = TAttribute (transform t a)
+  transform _ (Attribute  a)  = Attribute a
+  transform t (TAttribute a)  = TAttribute (transform t a)
+  transform t (GTAttribute a) = GTAttribute (transform t a)
 
 ------------------------------------------------------------
 --  Styles  ------------------------------------------------
@@ -170,6 +194,10 @@
 tAttrToStyle :: forall a v. (AttributeClass a, Transformable a, V a ~ v) => a -> Style v
 tAttrToStyle a = Style (M.singleton (show . typeOf $ (undefined :: a)) (mkTAttr a))
 
+-- | Create a style from a single transformable, generic attribute.
+gtAttrToStyle :: forall a v. (AttributeClass a, Data a, Transformable a, V a ~ v) => a -> Style v
+gtAttrToStyle a = Style (M.singleton (show . typeOf $ (undefined :: a)) (mkGTAttr a))
+
 -- | Add a new attribute to a style, or replace the old attribute of
 --   the same type if one exists.
 setAttr :: forall a v. AttributeClass a => a -> Style v -> Style v
@@ -189,6 +217,17 @@
     Nothing -> setAttr a s
     Just a' -> setAttr (a <> a') s
 
+-- | Map generically over all generic attributes in a style, applying
+--   the given function to any values with the given type, even deeply
+--   nested ones.  Note that only attributes wrapped in 'GTAttribute'
+--   are affected.
+gmapAttrs :: forall v a. Typeable a => (a -> a) -> Style v -> Style v
+gmapAttrs f = (inStyle . M.map) gmapAttr
+  where
+    gmapAttr :: Attribute v -> Attribute v
+    gmapAttr (GTAttribute a) = GTAttribute (a & template %~ f)
+    gmapAttr a = a
+
 instance Semigroup (Style v) where
   Style s1 <> Style s2 = Style $ M.unionWith (<>) s1 s2
 
@@ -245,3 +284,6 @@
 --   structure.
 applyTAttr :: (AttributeClass a, Transformable a, V a ~ V d, HasStyle d) => a -> d -> d
 applyTAttr = applyStyle . tAttrToStyle
+
+applyGTAttr :: (AttributeClass a, Data a, Transformable a, V a ~ V d, HasStyle d) => a -> d -> d
+applyGTAttr = applyStyle . gtAttrToStyle
diff --git a/src/Diagrams/Core/Trace.hs b/src/Diagrams/Core/Trace.hs
--- a/src/Diagrams/Core/Trace.hs
+++ b/src/Diagrams/Core/Trace.hs
@@ -383,13 +383,13 @@
 -- > pointB = 1 ^& 1.2
 -- > pointC = 2.5 ^& 3.5
 -- >
--- > dot = circle 0.05 # lw 0
+-- > dot = circle 0.05 # lw none
 -- >
 -- > mkTraceDia :: TraceDiaOpts -> Diagram B R2
 -- > mkTraceDia tdo = mconcat
 -- >   [ mconcat $ map (place (dot # fc red)) pts
 -- >   , if drawV tdo then resultArrow else mempty
--- >   , arrowAt (basePt tdo) (dirV tdo) # lw 0.02 # lc blue
+-- >   , arrowAt (basePt tdo) (dirV tdo) # lc blue
 -- >   , dot # fc blue # moveTo (basePt tdo)
 -- >   , traceLine (basePt tdo) maxPosPt
 -- >   , traceLine (basePt tdo) minNegPt
@@ -405,7 +405,7 @@
 -- >     minNegPt = (mkPt <$>) . safeHead $ filter (<0) ss
 -- >     minPt = (mkPt <$>) . safeHead $ ss
 -- >     resultArrow = fromMaybe mempty (arrowBetween (basePt tdo) <$> minPt)
--- >       # lw 0.03 # lc green
+-- >       # lc green
 -- >
 -- > safeLast [] = Nothing
 -- > safeLast xs = Just $ last xs
@@ -415,7 +415,7 @@
 -- > dropAllBut1 xs = [last xs]
 -- >
 -- > traceLine _ Nothing = mempty
--- > traceLine p (Just q) = (p ~~ q) # dashing [0.1,0.1] 0
+-- > traceLine p (Just q) = (p ~~ q) # dashingG [0.1,0.1] 0
 -- >
 -- > mkTraceDias :: [TraceDiaOpts] -> Diagram B R2
 -- > mkTraceDias = hcat' (with & sep .~ 1) . map mkTraceDia
diff --git a/src/Diagrams/Core/Transform.hs b/src/Diagrams/Core/Transform.hs
--- a/src/Diagrams/Core/Transform.hs
+++ b/src/Diagrams/Core/Transform.hs
@@ -37,13 +37,18 @@
          -- ** General transformations
        , Transformation(..)
        , inv, transp, transl
+       , dropTransl
        , apply
        , papply
        , fromLinear
        , basis
+       , dimension
        , onBasis
+       , listRep
        , matrixRep
+       , matrixHomRep
        , determinant
+       , avgScale
 
          -- * The Transformable class
 
@@ -159,6 +164,11 @@
 transl :: Transformation v -> v
 transl (Transformation _ _ v) = v
 
+-- | Drop the translational component of a transformation, leaving only
+--   the linear part.
+dropTransl :: AdditiveGroup v => Transformation v -> Transformation v
+dropTransl (Transformation a a' _) = Transformation a a' zeroV
+
 -- | Transformations are closed under composition; @t1 <> t2@ is the
 --   transformation which performs first @t2@, then @t1@.
 instance HasLinearMap v => Semigroup (Transformation v) where
@@ -195,6 +205,12 @@
 basis :: forall v. HasLinearMap v => [v]
 basis = map basisValue b
   where b = map fst (decompose (zeroV :: v))
+
+-- | Get the dimension of an object whose vector space is an instance of
+--   @HasLinearMap@, e.g. transformations, paths, diagrams, etc.
+dimension :: forall a. HasLinearMap (V a) => a -> Int
+dimension _ = length (decompose (zeroV :: V a))
+
 -- | Get the matrix equivalent of the linear transform,
 --   (as a list of columns) and the translation vector.  This
 --   is mostly useful for implementing backends.
@@ -223,15 +239,56 @@
     c1 = head m
     n = length m
 
+-- | Convert a vector v to a list of scalars.
+listRep :: HasLinearMap v => v -> [Scalar v]
+listRep v = map snd (decompose v)
+
 -- | Convert a `Transformation v` to a matrix representation as a list of
 --   column vectors which are also lists.
 matrixRep :: HasLinearMap v => Transformation v -> [[Scalar v]]
 matrixRep t = map listRep (fst . onBasis $ t)
-  where listRep v = map snd (decompose v)
 
+-- | Convert a `Transformation v` to a homogeneous matrix representation.
+--   The final list is the translation.
+--   The representation leaves off the last row of the matrix as it is
+--   always [0,0, ... 1] and this representation is the defacto standard
+--   for backends.
+matrixHomRep :: HasLinearMap v => Transformation v -> [[Scalar v]]
+matrixHomRep t = mr ++ [listRep tl]
+  where
+    mr = matrixRep t
+    tl = transl t
+
 -- | The determinant of a `Transformation`.
 determinant :: (HasLinearMap v, Num (Scalar v)) => Transformation v -> Scalar v
 determinant t = det . matrixRep $ t
+
+-- | Compute the \"average\" amount of scaling performed by a
+--   transformation.  Satisfies the properties
+--
+--   @
+--   avgScale (scaling k) == k
+--   avgScale (t1 <> t2)  == avgScale t1 * avgScale t2
+--   @
+--
+avgScale :: (HasLinearMap v, Floating (Scalar v)) => Transformation v -> Scalar v
+avgScale t = (abs . determinant $ t) ** (1 / fromIntegral (dimension t))
+
+{-
+
+avgScale is computed as the nth root of the positive determinant.
+This works because the determinant is the factor by which a transformation
+scales area/volume. See http://en.wikipedia.org/wiki/Determinant.
+
+Proofs for the specified properties:
+
+1. |det (scaling k)|^(1/n) = (k^n)^(1/n) = k
+2. |det t1|^(1/n) * |det t2|^(1/n)
+   = (|det t1| * |det t2|)^(1/n)
+   = |det t1 * det t2|^(1/n)
+   = |det (t1 <> t2)|^(1/n)
+
+-}
 
 ------------------------------------------------------------
 --  The Transformable class  -------------------------------
diff --git a/src/Diagrams/Core/Types.hs b/src/Diagrams/Core/Types.hs
--- a/src/Diagrams/Core/Types.hs
+++ b/src/Diagrams/Core/Types.hs
@@ -8,6 +8,7 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses      #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
+{-# LANGUAGE StandaloneDeriving         #-}
 {-# LANGUAGE TupleSections              #-}
 {-# LANGUAGE TypeFamilies               #-}
 {-# LANGUAGE TypeOperators              #-}
@@ -62,7 +63,6 @@
        , mkQD, mkQD', pointDiagram
 
          -- ** Extracting information
-       , prims
        , envelope, trace, subMap, names, query, sample
        , value, resetValue, clearValue
 
@@ -83,10 +83,14 @@
        , localize
 
          -- *** Other
-       , freeze
        , setEnvelope
        , setTrace
 
+         -- * Measurements
+       , Measure(..)
+       , fromOutput
+       , atMost, atLeast
+
          -- * Subdiagrams
 
        , Subdiagram(..), mkSubdiagram
@@ -103,12 +107,11 @@
          -- * Primtives
          -- $prim
 
-       , Prim(..), IsPrim(..), nullPrim
+       , Prim(..)
 
          -- * Backends
 
        , Backend(..)
-       , MultiBackend(..)
        , DNode(..)
        , DTree
        , RNode(..)
@@ -130,20 +133,19 @@
                                             _Wrapping)
 import           Control.Monad             (mplus)
 import           Data.AffineSpace          ((.-.))
+import           Data.Data
 import           Data.List                 (isSuffixOf)
 import qualified Data.Map                  as M
 import           Data.Maybe                (fromMaybe, listToMaybe)
 import           Data.Semigroup
 import qualified Data.Traversable          as T
 import           Data.Tree
-import           Data.Typeable
 import           Data.VectorSpace
 
 import           Data.Monoid.Action
 import           Data.Monoid.Coproduct
 import           Data.Monoid.Deletable
 import           Data.Monoid.MList
-import           Data.Monoid.Split
 import           Data.Monoid.WithSemigroup
 import qualified Data.Tree.DUAL            as D
 
@@ -162,6 +164,93 @@
 -- documentation!  Haddock supports \<\<inline image urls\>\>.
 
 ------------------------------------------------------------
+--  Measurement Units  -------------------------------------
+------------------------------------------------------------
+-- | Type of measurement units for attributes.
+data Measure v = Output (Scalar v)
+               | Normalized (Scalar v)
+               | Local (Scalar v)
+               | Global (Scalar v)
+
+               | MinM (Measure v) (Measure v)
+               | MaxM (Measure v) (Measure v)
+               | ZeroM
+               | NegateM (Measure v)
+               | PlusM (Measure v) (Measure v)
+               | ScaleM (Scalar v) (Measure v)
+  deriving (Typeable)
+
+deriving instance (Eq (Scalar v)) => Eq (Measure v)
+deriving instance (Ord (Scalar v)) => Ord (Measure v)
+deriving instance (Show (Scalar v)) => Show (Measure v)
+deriving instance (Typeable v, Data v, Data (Scalar v)) => Data (Measure v)
+
+-- | Compute the larger of two 'Measure's.  Useful for setting lower
+--   bounds.
+atLeast :: Measure v -> Measure v -> Measure v
+atLeast = MaxM
+
+-- | Compute the smaller of two 'Measure's.  Useful for setting upper
+--   bounds.
+atMost :: Measure v -> Measure v -> Measure v
+atMost = MinM
+
+instance AdditiveGroup (Measure v) where
+  zeroV = ZeroM
+  negateV (NegateM m) = m
+  negateV m = NegateM m
+  ZeroM ^+^ m = m
+  m ^+^ ZeroM = m
+  m1 ^+^ m2 = PlusM m1 m2
+
+instance VectorSpace (Measure v) where
+  type Scalar (Measure v) = Scalar v
+  s *^ m = ScaleM s m
+
+type instance V (Measure v) = v
+
+instance (HasLinearMap v, Floating (Scalar v)) => Transformable (Measure v) where
+  transform tr (Local x) = Local (avgScale tr * x)
+  transform _ y = y
+
+-- | Retrieve the 'Output' value of a 'Measure v' or throw an exception.
+--   Only 'Ouput' measures should be left in the 'RTree' passed to the backend.
+fromOutput :: Measure v -> Scalar v
+fromOutput (Output w)     = w
+fromOutput (Normalized _) = fromOutputErr "Normalized"
+fromOutput (Local _)      = fromOutputErr "Local"
+fromOutput (Global _)     = fromOutputErr "Global"
+fromOutput (MinM _ _)     = fromOutputErr "MinM"
+fromOutput (MaxM _ _)     = fromOutputErr "MaxM"
+fromOutput (ZeroM)        = fromOutputErr "ZeroM"
+fromOutput (NegateM _)    = fromOutputErr "NegateM"
+fromOutput (PlusM _ _)    = fromOutputErr "PlusM"
+fromOutput (ScaleM _ _)   = fromOutputErr "ScaleM"
+
+fromOutputErr :: String -> a
+fromOutputErr s = error $ "fromOutput: Cannot pass " ++ s ++ " to backends, must be Output."
+
+--   Eventually we may use a GADT like:
+--
+--     data Measure o v where
+--       Output     :: Scalar v -> Measure O v
+--       Normalized :: Scalar v -> Measure A v
+--       Global     :: Scalar v -> Measure A v
+--       Local      :: Scale v  -> Measure A v
+--
+--   to check this at compile time. But for now we throw a runtime error.
+--
+--   [BAY 4 April 2014] I tried switching to such a GADT.  One tricky
+--   bit is that you have to use Output :: Scalar v -> Measure o v,
+--   not Measure O v: the reason is that operations like addition have
+--   to take two values of the same type, so in order to be able to
+--   add Output to something else, Output must be able to have an A
+--   annotation.  That all works fine.  The problem is with gmapAttrs,
+--   which has to preserve type: so we can't generically convert from
+--   Measure A to Measure O.
+
+
+------------------------------------------------------------
 --  Diagrams  ----------------------------------------------
 ------------------------------------------------------------
 
@@ -190,13 +279,10 @@
 --   /i.e./ which accumulate along each path to a leaf (and which can
 --   act on the upwards-travelling annotations):
 --
---   * transformations (split at the innermost freeze): see
---     "Diagrams.Core.Transform"
---
 --   * styles (see "Diagrams.Core.Style")
 --
 --   * names (see "Diagrams.Core.Names")
-type DownAnnots v = (Split (Transformation v) :+: Style v)
+type DownAnnots v = (Transformation v :+: Style v)
                 ::: Name
                 ::: ()
 
@@ -209,13 +295,12 @@
 transfToAnnot :: Transformation v -> DownAnnots v
 transfToAnnot
   = inj
-  . (inL :: Split (Transformation v) -> Split (Transformation v) :+: Style v)
-  . M
+  . (inL :: Transformation v -> Transformation v :+: Style v)
 
 -- | Extract the (total) transformation from a downwards annotation
 --   value.
 transfFromAnnot :: HasLinearMap v => DownAnnots v -> Transformation v
-transfFromAnnot = option mempty (unsplit . killR) . fst
+transfFromAnnot = option mempty killR . fst
 
 -- | A leaf in a 'QDiagram' tree is either a 'Prim', or a \"delayed\"
 --   @QDiagram@ which expands to a real @QDiagram@ once it learns the
@@ -225,18 +310,18 @@
 --   scale-invariant).
 data QDiaLeaf b v m
   = PrimLeaf (Prim b v)
-  | DelayedLeaf (DownAnnots v -> QDiagram b v m)
+  | DelayedLeaf (DownAnnots v -> Scalar v -> Scalar v -> QDiagram b v m)
     -- ^ The @QDiagram@ produced by a @DelayedLeaf@ function /must/
-    --   already apply any non-frozen transformation in the given
-    --   @DownAnnots@ (that is, the non-frozen transformation will not
-    --   be applied by the context). On the other hand, it must assume
-    --   that any frozen transformation or attributes will be applied
-    --   by the context.
+    --   already apply any transformation in the given
+    --   @DownAnnots@ (that is, the transformation will not
+    --   be applied by the context).
   deriving (Functor)
 
-withQDiaLeaf :: (Prim b v -> r) -> ((DownAnnots v -> QDiagram b v m) -> r) -> (QDiaLeaf b v m -> r)
+withQDiaLeaf :: (Prim b v -> r)
+            -> ((DownAnnots v -> Scalar v -> Scalar v -> QDiagram b v m) -> r)
+            -> (QDiaLeaf b v m -> r)
 withQDiaLeaf f _ (PrimLeaf p)    = f p
-withQDiaLeaf _ g (DelayedLeaf d) = g d
+withQDiaLeaf _ g (DelayedLeaf dgn) = g dgn
 
 -- | Static annotations which can be placed at a particular node of a
 --   diagram tree.
@@ -286,17 +371,6 @@
              => Point v -> QDiagram b v m
 pointDiagram p = QD $ D.leafU (inj . toDeletable $ pointEnvelope p)
 
--- | Extract a list of primitives from a diagram, together with their
---   associated transformations and styles.
-prims :: HasLinearMap v
-      => QDiagram b v m -> [(Prim b v, (Split (Transformation v), Style v))]
-prims = concatMap processLeaf
-      . D.flatten
-      . view _Wrapped'
-  where
-    processLeaf (PrimLeaf p, (trSty,_)) = [(p, untangle . option mempty id $ trSty)]
-    processLeaf (DelayedLeaf k, d)      = prims (k d)
-
 -- | A useful variant of 'getU' which projects out a certain
 --   component.
 getU' :: (Monoid u', u :>: u') => D.DUALTree d u a l -> u'
@@ -520,30 +594,7 @@
 instance (HasLinearMap v, InnerSpace v, OrderedField (Scalar v), Semigroup m)
       => HasStyle (QDiagram b v m) where
   applyStyle = over _Wrapped' . D.applyD . inj
-             . (inR :: Style v -> Split (Transformation v) :+: Style v)
-
--- | By default, diagram attributes are not affected by
---   transformations.  This means, for example, that @lw 0.01 circle@
---   and @scale 2 (lw 0.01 circle)@ will be drawn with lines of the
---   /same/ width, and @scaleY 3 circle@ will be an ellipse drawn with
---   a uniform line.  Once a diagram is frozen, however,
---   transformations do affect attributes, so, for example, @scale 2
---   (freeze (lw 0.01 circle))@ will be drawn with a line twice as
---   thick as @lw 0.01 circle@, and @scaleY 3 (freeze circle)@ will be
---   drawn with a \"stretched\", variable-width line.
---
---   Another way of thinking about it is that pre-@freeze@, we are
---   transforming the \"abstract idea\" of a diagram, and the
---   transformed version is then drawn; when doing a @freeze@, we
---   produce a concrete drawing of the diagram, and it is this visual
---   representation itself which is acted upon by subsequent
---   transformations.
-freeze :: forall v b m. (HasLinearMap v, InnerSpace v
-                        , OrderedField (Scalar v), Semigroup m)
-       => QDiagram b v m -> QDiagram b v m
-freeze = over _Wrapped' . D.applyD . inj
-       . (inL :: Split (Transformation v) -> Split (Transformation v) :+: Style v)
-       $ split
+             . (inR :: Style v -> Transformation v :+: Style v)
 
 ---- Juxtaposable
 
@@ -754,31 +805,19 @@
 ------------------------------------------------------------
 
 -- $prim
--- Ultimately, every diagram is essentially a list of /primitives/,
+-- Ultimately, every diagram is essentially a tree whose leaves are /primitives/,
 -- basic building blocks which can be rendered by backends.  However,
 -- not every backend must be able to render every type of primitive;
 -- the collection of primitives a given backend knows how to render is
 -- determined by instances of 'Renderable'.
 
--- | A type class for primitive things which know how to handle being
---   transformed by both a normal transformation and a \"frozen\"
---   transformation.  The default implementation simply applies both.
---   At the moment, 'ScaleInv' is the only type with a non-default
---   instance of 'IsPrim'.
-class Transformable p => IsPrim p where
-  transformWithFreeze :: Transformation (V p) -> Transformation (V p) -> p -> p
-  transformWithFreeze t1 t2 = transform (t1 <> t2)
-
 -- | A value of type @Prim b v@ is an opaque (existentially quantified)
 --   primitive which backend @b@ knows how to render in vector space @v@.
 data Prim b v where
-  Prim :: (IsPrim p, Typeable p, Renderable p b) => p -> Prim b (V p)
+  Prim :: (Transformable p, Typeable p, Renderable p b) => p -> Prim b (V p)
 
 type instance V (Prim b v) = v
 
-instance HasLinearMap v => IsPrim (Prim b v) where
-  transformWithFreeze t1 t2 (Prim p) = Prim $ transformWithFreeze t1 t2 p
-
 -- | The 'Transformable' instance for 'Prim' just pushes calls to
 --   'transform' down through the 'Prim' constructor.
 instance HasLinearMap v => Transformable (Prim b v) where
@@ -789,31 +828,12 @@
 instance HasLinearMap v => Renderable (Prim b v) b where
   render b (Prim p) = render b p
 
--- | The null primitive.
-data NullPrim v = NullPrim
-  deriving Typeable
-
-type instance (V (NullPrim v)) = v
-
-instance HasLinearMap v => IsPrim (NullPrim v)
-
-instance HasLinearMap v => Transformable (NullPrim v) where
-  transform _ _ = NullPrim
-
-instance (HasLinearMap v, Monoid (Render b v)) => Renderable (NullPrim v) b where
-  render _ _ = mempty
-
--- | The null primitive, which every backend can render by doing
---   nothing.
-nullPrim :: (HasLinearMap v, Typeable v, Monoid (Render b v)) => Prim b v
-nullPrim = Prim NullPrim
-
 ------------------------------------------------------------
 -- Backends  -----------------------------------------------
 ------------------------------------------------------------
 
 data DNode b v a = DStyle (Style v)
-                 | DTransform (Split (Transformation v))
+                 | DTransform (Transformation v)
                  | DAnnot a
                  | DDelay
                    -- ^ @DDelay@ marks a point where a delayed subtree
@@ -834,47 +854,36 @@
 
 data RNode b v a =  RStyle (Style v)
                     -- ^ A style node.
-                  | RFrozenTr (Transformation v)
-                    -- ^ A \"frozen\" transformation, /i.e./ one which
-                    --   was applied after a call to 'freeze'.  It
-                    --   applies to everything below it in the tree.
-                    --   Note that line width and other similar
-                    --   \"scale invariant\" attributes should be
-                    --   affected by this transformation.  In the case
-                    --   of 2D, some backends may not support stroking
-                    --   in the context of an arbitrary
-                    --   transformation; such backends can instead use
-                    --   the 'avgScale' function from
-                    --   @Diagrams.TwoD.Transform@ (from the
-                    --   @diagrams-lib@ package).
                   | RAnnot a
-                  | RPrim (Transformation v) (Prim b v)
-                    -- ^ A primitive, along with the (non-frozen)
-                    --   transformation which applies to it.
+                  | RPrim (Prim b v)
+                    -- ^ A primitive.
                   | REmpty
 
 -- | An 'RTree' is a compiled and optimized representation of a
---   'QDiagram', which can be used by backends.  They have several
---   invariants which backends may rely upon:
---
---   * All non-frozen transformations have been pushed all the way to
---     the leaves.
+--   'QDiagram', which can be used by backends.  They have the
+--   following invariant which backends may rely upon:
 --
 --   * @RPrim@ nodes never have any children.
 type RTree b v a = Tree (RNode b v a )
 
 -- | Abstract diagrams are rendered to particular formats by
 --   /backends/.  Each backend/vector space combination must be an
---   instance of the 'Backend' class. A minimal complete definition
---   consists of the three associated types, an implementation for
---   'doRender', and /one of/ either 'withStyle' or 'renderData'.
-class (HasLinearMap v, Monoid (Render b v)) => Backend b v where
+--   instance of the 'Backend' class.
+--
+--   A minimal complete definition consists of 'Render', 'Result',
+--   'Options', and 'renderRTree'. However, most backends will want to
+--   implement 'adjustDia' as well; the default definition does
+--   nothing.  Some useful standard definitions are provided in the
+--   @Diagrams.TwoD.Adjust@ module from the @diagrams-lib@ package.
+class HasLinearMap v => Backend b v where
 
-  -- | The type of rendering operations used by this backend, which
-  --   must be a monoid. For example, if @Render b v = M ()@ for some
-  --   monad @M@, a monoid instance can be made with @mempty = return
-  --   ()@ and @mappend = (>>)@.
-  data Render  b v :: *
+  -- | An intermediate representation used for rendering primitives.
+  --   (Typically, this will be some sort of monad, but it need not
+  --   be.)  The 'Renderable' class guarantees that a backend will be
+  --   able to convert primitives into this type; how these rendered
+  --   primitives are combined into an ultimate 'Result' is completely
+  --   up to the backend.
+  data Render b v :: *
 
   -- | The result of running/interpreting a rendering operation.
   type Result  b v :: *
@@ -882,62 +891,25 @@
   -- | Backend-specific rendering options.
   data Options b v :: *
 
-  -- | Perform a rendering operation with a local style. The default
-  --   implementation does nothing, and must be overridden by backends
-  --   that do not override 'renderData'.
-  withStyle      :: b          -- ^ Backend token (needed only for type inference)
-                 -> Style v    -- ^ Style to use
-                 -> Transformation v
-                    -- ^ \"Frozen\" transformation; line width and
-                    --   other similar \"scale invariant\" attributes
-                    --   should be affected by this transformation.
-                    --   In the case of 2D, some backends may not
-                    --   support stroking in the context of an
-                    --   arbitrary transformation; such backends can
-                    --   instead use the 'avgScale' function from
-                    --   @Diagrams.TwoD.Transform@ (from the
-                    --   @diagrams-lib@ package).
-                 -> Render b v -- ^ Rendering operation to run
-                 -> Render b v -- ^ Rendering operation using the style locally
-  withStyle _ _ _ r = r
-
-  -- | 'doRender' is used to interpret rendering operations.
-  doRender       :: b           -- ^ Backend token (needed only for type inference)
-                 -> Options b v -- ^ Backend-specific collection of rendering options
-                 -> Render b v  -- ^ Rendering operation to perform
-                 -> Result b v  -- ^ Output of the rendering operation
-
   -- | 'adjustDia' allows the backend to make adjustments to the final
   --   diagram (e.g. to adjust the size based on the options) before
-  --   rendering it.  It can also make adjustments to the options
-  --   record, usually to fill in incompletely specified size
-  --   information.  A default implementation is provided which makes
-  --   no adjustments.  See the diagrams-lib package for other useful
-  --   implementations.
-  adjustDia :: Monoid' m => b -> Options b v
-            -> QDiagram b v m -> (Options b v, QDiagram b v m)
-  adjustDia _ o d = (o,d)
-
-  renderDia :: (InnerSpace v, OrderedField (Scalar v), Monoid' m)
-            => b -> Options b v -> QDiagram b v m -> Result b v
-  renderDia b opts d = doRender b opts' . renderData b $ d'
-    where (opts', d') = adjustDia b opts d
-
-  -- | Backends may override 'renderData' to gain more control over
-  --   the way that rendering happens.  A typical implementation might be something like
-  --
-  --   > renderData = renderRTree . toRTree
+  --   rendering it. It returns a modified options record, the
+  --   transformation applied to the diagram (which can be used to
+  --   convert attributes whose value is @Measure@, or transform
+  --   /e.g./ screen coordinates back into local diagram coordinates),
+  --   and the adjusted diagram itself.
   --
-  --   where @renderRTree :: RTree b v () -> Render b v@ is
-  --   implemented by the backend (with appropriate types filled in
-  --   for @b@ and @v@), and 'toRTree' is from "Diagrams.Core.Compile".
-  renderData :: Monoid' m => b -> QDiagram b v m -> Render b v
-  renderData b = mconcat . map renderOne . prims
-    where
-      renderOne :: (Prim b v, (Split (Transformation v), Style v)) -> Render b v
-      renderOne (p, (M t,      s)) = withStyle b s mempty (render b (transform t p))
-      renderOne (p, (t1 :| t2, s)) = withStyle b s t1 (render b (transformWithFreeze t1 t2 p))
+  --   See the diagrams-lib package (particularly the
+  --   @Diagrams.TwoD.Adjust@ module) for some useful implementations.
+  adjustDia :: (Monoid' m, Num (Scalar v)) => b -> Options b v
+            -> QDiagram b v m -> (Options b v, Transformation v, QDiagram b v m)
+  adjustDia _ o d = (o,mempty,d)
 
+  -- | Given some options, take a representation of a diagram as a
+  --   tree and render it.  The 'RTree' has already been simplified
+  --   and has all measurements converted to @Output@ units.
+  renderRTree :: b -> Options b v -> RTree b v Annotation -> Result b v
+
   -- See Note [backend token]
 
 -- | The @D@ type is provided for convenience in situations where you
@@ -1040,19 +1012,7 @@
   type Result NullBackend v = ()
   data Options NullBackend v
 
-  withStyle _ _ _ _ = NullBackendRender
-  doRender _ _ _    = ()
-
--- | A class for backends which support rendering multiple diagrams,
---   e.g. to a multi-page pdf or something similar.
-class Backend b v => MultiBackend b v where
-
-  -- | Render multiple diagrams at once.
-  renderDias :: (InnerSpace v, OrderedField (Scalar v), Monoid' m)
-             => b -> Options b v -> [QDiagram b v m] -> Result b v
-
-  -- See Note [backend token]
-
+  renderRTree _ _ _ = ()
 
 -- | The Renderable type class connects backends to primitives which
 --   they know how to render.
