diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -3,11 +3,14 @@
 import Distribution.Simple
 import Distribution.Simple.Setup
 import Distribution.Simple.LocalBuildInfo
+import Distribution.PackageDescription (PackageDescription)
 
 import System.FilePath
 
-main = defaultMainWithHooks $
-       simpleUserHooks { postInst = postInstHook (postInst simpleUserHooks) }
+main = defaultMainWithHooks $ simpleUserHooks
+  { postInst = postInstHook (postInst simpleUserHooks)
+  , postConf = postConfHook (postConf simpleUserHooks)
+  }
 
 postInstHook oldHook args iflags pDesc lbi = do
   let instDataDir = datadir $ absoluteInstallDirs pDesc lbi (fromFlag $ copyDest defaultCopyFlags)
@@ -15,3 +18,8 @@
   putStrLn $ "echo \":script " ++ (instDataDir </> "ghci") ++ "\" >> ~/.ghci"
 
   oldHook args iflags pDesc lbi
+
+postConfHook oldHook args flags descr buildInfo = case profFlag of
+  Flag True -> error "This library cannot be built using profiling. Try invoking cabal with the --disable-library-profiling flag."
+  _ -> oldHook args flags descr buildInfo
+  where profFlag = configProfLib $ configFlags buildInfo
diff --git a/data/legend_graph.svg b/data/legend_graph.svg
new file mode 100644
--- /dev/null
+++ b/data/legend_graph.svg
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="683.32867"
+   height="198.40143"
+   id="svg3254"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="legend_graph.svg">
+  <defs
+     id="defs3256" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="271.34121"
+     inkscape:cy="-73.141686"
+     inkscape:document-units="px"
+     inkscape:current-layer="g3407"
+     showgrid="false"
+     inkscape:window-width="638"
+     inkscape:window-height="503"
+     inkscape:window-x="640"
+     inkscape:window-y="519"
+     inkscape:window-maximized="0"
+     fit-margin-top="30"
+     fit-margin-left="30"
+     fit-margin-right="30"
+     fit-margin-bottom="30" />
+  <metadata
+     id="metadata3259">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-106.4685,-260.81906)">
+    <g
+       id="g3419">
+      <text
+         sodipodi:linespacing="125%"
+         id="text3379"
+         y="308.88992"
+         x="143.44167"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         xml:space="preserve"><tspan
+           y="308.88992"
+           x="143.44167"
+           id="tspan3381"
+           sodipodi:role="line">S# 1</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text3383"
+         y="338.35858"
+         x="136.52739"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         xml:space="preserve"><tspan
+           y="338.35858"
+           x="136.52739"
+           id="tspan3385"
+           sodipodi:role="line">Thunk</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text3387"
+         y="396.6333"
+         x="149.4481"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         xml:space="preserve"><tspan
+           y="396.6333"
+           x="149.4481"
+           id="tspan3389"
+           sodipodi:role="line">Fun</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text3391"
+         y="367.48367"
+         x="154.90495"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         xml:space="preserve"><tspan
+           y="367.48367"
+           x="154.90495"
+           id="tspan3393"
+           sodipodi:role="line">AP</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text3399"
+         y="426.0676"
+         x="148.57463"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         xml:space="preserve"><tspan
+           y="426.0676"
+           x="148.57463"
+           id="tspan3401"
+           sodipodi:role="line">PAP</tspan></text>
+    </g>
+    <g
+       id="g3407"
+       transform="translate(0,-3.0483551)">
+      <text
+         xml:space="preserve"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         x="229.28676"
+         y="309.1387"
+         id="text3198"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan3200"
+           x="229.28676"
+           y="309.1387">Data Constructor S# with argument 1</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         x="229.5125"
+         y="338.87601"
+         id="text3202"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan3204"
+           x="229.5125"
+           y="338.87601">Unevaluated Expression</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         x="229.28676"
+         y="400.29871"
+         id="text3206"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan3208"
+           x="229.28676"
+           y="400.29871">Function</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text3395"
+         y="368.61334"
+         x="229.5125"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         xml:space="preserve"><tspan
+           y="368.61334"
+           x="229.5125"
+           id="tspan3397"
+           sodipodi:role="line">Unevaluated Expression (mostly in interpreted code)</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text3403"
+         y="428.08789"
+         x="229.28676"
+         style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+         xml:space="preserve"><tspan
+           y="428.08789"
+           x="229.28676"
+           id="tspan3405"
+           sodipodi:role="line">Function (mostly in interpreted code)</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/data/legend_list.svg b/data/legend_list.svg
new file mode 100644
--- /dev/null
+++ b/data/legend_list.svg
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="528.88135"
+   height="294.60281"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="legend_list.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="111.81327"
+     inkscape:cy="95.144158"
+     inkscape:document-units="px"
+     inkscape:current-layer="g3014"
+     showgrid="false"
+     fit-margin-top="30"
+     fit-margin-left="30"
+     fit-margin-right="30"
+     fit-margin-bottom="30"
+     inkscape:window-width="638"
+     inkscape:window-height="503"
+     inkscape:window-x="640"
+     inkscape:window-y="14"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-226.47563,-43.350422)">
+    <g
+       transform="matrix(1.25,0,0,-1.25,256.47572,261.42618)"
+       inkscape:label="block"
+       id="g3012">
+      <g
+         id="g3014">
+        <path
+           id="path3016"
+           style="fill:#80ff80;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.60214996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           d="m 0.801,43.704 0,-37.301 c 0,-2.211 1.793,-4.004 4.004,-4.004 l 42.886,0 c 2.211,0 4.004,1.793 4.004,4.004 l 0,37.301 c 0,2.215 -1.793,4.008 -4.004,4.008 l -42.886,0 c -2.211,0 -4.004,-1.793 -4.004,-4.008 z"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path3018"
+           style="fill:none;stroke:#000000;stroke-width:1.60214996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           d="m 0.801,25.056 50.894,0"
+           inkscape:connector-curvature="0" />
+        <text
+           xml:space="preserve"
+           style="font-size:16.01600075px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+           x="16.071358"
+           y="-8.1712036"
+           id="text5596"
+           sodipodi:linespacing="125%"
+           transform="scale(1,-1)"><tspan
+             sodipodi:role="line"
+             id="tspan5598"
+             x="16.071358"
+             y="-8.1712036">b0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:16.01600075px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+           x="6.785646"
+           y="-28.83638"
+           id="text5592"
+           sodipodi:linespacing="125%"
+           transform="scale(1,-1)"><tspan
+             sodipodi:role="line"
+             id="tspan5594"
+             x="6.785646"
+             y="-28.83638">S# 1</tspan></text>
+      </g>
+    </g>
+    <g
+       transform="matrix(1.25,0,0,-1.25,273.37009,189.72929)"
+       inkscape:label="function"
+       id="g3060">
+      <g
+         id="g3062">
+        <path
+           id="path3064"
+           style="fill:#ffff80;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.60826504;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           d="m 0.805,25.147 0,-18.722 c 0,-2.219 1.8,-4.02 4.019,-4.02 l 15.813,0 c 2.222,0 4.023,1.801 4.023,4.02 l 0,18.722 c 0,2.223 -1.801,4.024 -4.023,4.024 l -15.813,0 c -2.219,0 -4.019,-1.801 -4.019,-4.024 z"
+           inkscape:connector-curvature="0" />
+        <text
+           id="text3066"
+           transform="matrix(1,0,0,-1,4.823543,10.21773)">
+          <tspan
+             id="tspan3068"
+             sodipodi:role="line"
+             y="0"
+             x="0 5.6290526"
+             style="font-size:16.08300781px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">f0</tspan>
+        </text>
+      </g>
+    </g>
+    <g
+       transform="matrix(1.25,0,0,-1.25,270.54259,309.95433)"
+       inkscape:label="link"
+       id="g3102">
+      <g
+         id="g3104">
+        <path
+           id="path3106"
+           style="fill:#8080ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.60826504;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           d="m 0.805,25.147 0,-18.722 c 0,-2.219 1.8,-4.02 4.019,-4.02 l 20.336,0 c 2.223,0 4.024,1.801 4.024,4.02 l 0,18.722 c 0,2.223 -1.801,4.024 -4.024,4.024 l -20.336,0 c -2.219,0 -4.019,-1.801 -4.019,-4.024 z"
+           inkscape:connector-curvature="0" />
+        <text
+           id="text3108"
+           transform="matrix(1,0,0,-1,4.824073,10.21773)">
+          <tspan
+             id="tspan3110"
+             sodipodi:role="line"
+             y="0"
+             x="0 10.116212"
+             style="font-size:16.08300781px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">b0</tspan>
+        </text>
+      </g>
+    </g>
+    <g
+       id="g3146"
+       transform="matrix(1.25,0,0,-1.25,272.96947,141.20482)">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 0.805,25.147 0,-18.722 c 0,-2.219 1.8,-4.02 4.019,-4.02 l 16.453,0 c 2.223,0 4.024,1.801 4.024,4.02 l 0,18.722 c 0,2.223 -1.801,4.024 -4.024,4.024 l -16.453,0 c -2.219,0 -4.019,-1.801 -4.019,-4.024 z"
+         style="fill:#ff8080;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.60826504;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path3148" />
+      <text
+         transform="matrix(1,0,0,-1,4.823723,10.217731)"
+         id="text3150">
+        <tspan
+           style="font-size:16.08300781px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0 6.2723732"
+           y="0"
+           sodipodi:role="line"
+           id="tspan3152">t0</tspan>
+      </text>
+    </g>
+    <g
+       id="g3188"
+       transform="matrix(1.25,0,0,-1.25,266.63856,92.67926)">
+      <text
+         transform="matrix(1,0,0,-1,-1.060159,1.827738)"
+         id="text3190">
+        <tspan
+           style="font-size:16.08300781px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0 10.116212 28.547338"
+           y="0"
+           sodipodi:role="line"
+           id="tspan3192">S#1</tspan>
+      </text>
+    </g>
+    <text
+       sodipodi:linespacing="125%"
+       id="text3198"
+       y="88.621712"
+       x="345.71429"
+       style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+       xml:space="preserve"><tspan
+         y="88.621712"
+         x="345.71429"
+         id="tspan3200"
+         sodipodi:role="line">Data Constructor S# with argument 1</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text3202"
+       y="127.01498"
+       x="347.74588"
+       style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+       xml:space="preserve"><tspan
+         y="127.01498"
+         x="347.74588"
+         id="tspan3204"
+         sodipodi:role="line">Thunk (unevaluated expression)</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text3206"
+       y="177.48763"
+       x="345.71429"
+       style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+       xml:space="preserve"><tspan
+         y="177.48763"
+         x="345.71429"
+         id="tspan3208"
+         sodipodi:role="line">Function</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text3210"
+       y="236.57452"
+       x="346.36203"
+       style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+       xml:space="preserve"><tspan
+         y="236.57452"
+         x="346.36203"
+         id="tspan3212"
+         sodipodi:role="line">Same as S# 1, but with the name b0</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text3214"
+       y="295.7645"
+       x="347.52994"
+       style="font-size:20.10000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+       xml:space="preserve"><tspan
+         y="295.7645"
+         x="347.52994"
+         id="tspan3216"
+         sodipodi:role="line">A link to the memory location of b0</tspan></text>
+  </g>
+</svg>
diff --git a/data/main.ui b/data/main.ui
new file mode 100644
--- /dev/null
+++ b/data/main.ui
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAboutDialog" id="aboutdialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="type_hint">dialog</property>
+    <property name="program_name">ghc-vis</property>
+    <property name="version">0.6</property>
+    <property name="website">http://felsin9.de/nnis/ghc-vis</property>
+    <property name="authors">Dennis Felsing</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox3">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-save</property>
+  </object>
+  <object class="GtkImage" id="image2">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-save</property>
+  </object>
+  <object class="GtkImage" id="image3">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-new</property>
+  </object>
+  <object class="GtkImage" id="image4">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-jump-to</property>
+  </object>
+  <object class="GtkImage" id="image5">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-refresh</property>
+  </object>
+  <object class="GtkImage" id="image6">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-missing-image</property>
+  </object>
+  <object class="GtkImage" id="image7">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-justify-left</property>
+  </object>
+  <object class="GtkWindow" id="legenddialog">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">ghc-vis Legend</property>
+    <property name="default_width">440</property>
+    <property name="default_height">250</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <child>
+      <object class="GtkDrawingArea" id="legenddrawingarea">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkFileChooserDialog" id="savedialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">ghc-vis Save</property>
+    <property name="role">GtkFileChooserDialog</property>
+    <property name="type_hint">dialog</property>
+    <property name="action">save</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="savebutton">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="is_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancelbutton</action-widget>
+      <action-widget response="-5">savebutton</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkWindow" id="window">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">ghc-vis</property>
+    <property name="default_width">640</property>
+    <property name="default_height">480</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkMenuBar" id="menubar1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkMenuItem" id="menuitem1">
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_File</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="clear">
+                        <property name="label" translatable="yes">Clear (:clear, c)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="image">image3</property>
+                        <property name="use_stock">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="export">
+                        <property name="label" translatable="yes">Export (:export)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="image">image2</property>
+                        <property name="use_stock">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="quit">
+                        <property name="label">gtk-quit</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="menuitem3">
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_View</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="switch">
+                        <property name="label" translatable="yes">Switch (:switch, v)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="image">image4</property>
+                        <property name="use_stock">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="update">
+                        <property name="label" translatable="yes">Update (:update, u)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="image">image5</property>
+                        <property name="use_stock">False</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="menuitem4">
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="legend">
+                        <property name="label" translatable="yes">Legend</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="image">image7</property>
+                        <property name="use_stock">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="about">
+                        <property name="label">gtk-about</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkDrawingArea" id="drawingarea">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/data/welcome.svg b/data/welcome.svg
new file mode 100644
--- /dev/null
+++ b/data/welcome.svg
@@ -0,0 +1,1487 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="919.96094"
+   height="889.92102"
+   id="svg3450"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="welcome.svg">
+  <defs
+     id="defs3452">
+    <g
+       id="g3824">
+      <symbol
+         id="glyph0-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3827"
+           d="m 1.4375,5.125 0,-25.578125 14.5,0 0,25.578125 z m 1.640625,-1.609375 11.25,0 0,-22.328125 -11.25,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3830"
+           d="m 2.734375,-22.03125 2.609375,0 0,22.03125 -2.609375,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-2"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3833"
+           d="m 3.40625,-3.59375 2.984375,0 0,3.59375 -2.984375,0 z m 0,-11.40625 2.984375,0 0,3.59375 -2.984375,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-3"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3836"
+           d=""
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-4"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3839"
+           d="m 8.984375,-22 c -1.261719,2.167969 -2.199219,4.3125 -2.8125,6.4375 C 5.554688,-13.4375 5.25,-11.285156 5.25,-9.109375 c 0,2.1875 0.304688,4.351563 0.921875,6.484375 0.625,2.136719 1.5625,4.285156 2.8125,6.453125 l -2.265625,0 C 5.3125,1.609375 4.253906,-0.570312 3.546875,-2.71875 2.847656,-4.863281 2.5,-6.992188 2.5,-9.109375 c 0,-2.101563 0.347656,-4.21875 1.046875,-6.34375 C 4.242188,-17.585938 5.300781,-19.769531 6.71875,-22 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-5"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3842"
+           d="m 15.515625,-20.453125 0,2.796875 c -1.085937,-0.519531 -2.109375,-0.90625 -3.078125,-1.15625 -0.960938,-0.257812 -1.886719,-0.390625 -2.78125,-0.390625 -1.554688,0 -2.757812,0.304687 -3.609375,0.90625 -0.84375,0.605469 -1.265625,1.464844 -1.265625,2.578125 0,0.9375 0.28125,1.648438 0.84375,2.125 0.5625,0.46875 1.628906,0.851562 3.203125,1.140625 l 1.71875,0.359375 c 2.132813,0.40625 3.707031,1.125 4.71875,2.15625 1.019531,1.023438 1.53125,2.390625 1.53125,4.109375 0,2.042969 -0.6875,3.59375 -2.0625,4.65625 -1.375,1.054687 -3.390625,1.578125 -6.046875,1.578125 -1,0 -2.0625,-0.117188 -3.1875,-0.34375 -1.125,-0.21875 -2.292969,-0.550781 -3.5,-1 L 2,-3.875 c 1.15625,0.648438 2.289062,1.136719 3.40625,1.46875 1.113281,0.335938 2.207031,0.5 3.28125,0.5 1.632812,0 2.894531,-0.320312 3.78125,-0.96875 0.894531,-0.644531 1.34375,-1.5625 1.34375,-2.75 0,-1.03125 -0.324219,-1.835938 -0.96875,-2.421875 -0.636719,-0.59375 -1.679688,-1.035156 -3.125,-1.328125 l -1.75,-0.34375 c -2.136719,-0.414062 -3.683594,-1.078125 -4.640625,-1.984375 -0.949219,-0.90625 -1.421875,-2.164063 -1.421875,-3.78125 0,-1.875 0.65625,-3.347656 1.96875,-4.421875 1.320312,-1.082031 3.140625,-1.625 5.453125,-1.625 0.988281,0 2,0.09375 3.03125,0.28125 1.03125,0.179688 2.082031,0.445312 3.15625,0.796875 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-6"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3845"
+           d="m 14.828125,-12.765625 -4.125,0 -1.1875,4.734375 4.15625,0 z m -2.125,-8.046875 -1.46875,5.875 4.125,0 1.484375,-5.875 2.265625,0 -1.453125,5.875 4.421875,0 0,2.171875 -4.96875,0 -1.171875,4.734375 4.515625,0 0,2.171875 -5.0625,0 L 13.921875,0 11.65625,0 l 1.453125,-5.859375 -4.140625,0 L 7.5,0 5.21875,0 l 1.484375,-5.859375 -4.46875,0 0,-2.171875 4.984375,0 1.1875,-4.734375 -4.546875,0 0,-2.171875 5.109375,0 1.4375,-5.875 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-7"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3848"
+           d="m 3.59375,-2.40625 4.671875,0 0,-16.125 -5.078125,1.015625 0,-2.609375 5.046875,-1.015625 2.875,0 0,18.734375 4.671875,0 0,2.40625 -12.1875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-8"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3851"
+           d="m 2.328125,-22 2.265625,0 c 1.414062,2.230469 2.472656,4.414062 3.171875,6.546875 0.707031,2.125 1.0625,4.242187 1.0625,6.34375 0,2.117187 -0.355469,4.246094 -1.0625,6.390625 C 7.066406,-0.570312 6.007812,1.609375 4.59375,3.828125 l -2.265625,0 C 3.578125,1.660156 4.507812,-0.488281 5.125,-2.625 5.75,-4.757812 6.0625,-6.921875 6.0625,-9.109375 6.0625,-11.285156 5.75,-13.4375 5.125,-15.5625 4.507812,-17.6875 3.578125,-19.832031 2.328125,-22 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-9"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3854"
+           d="m 5.5625,-2.40625 9.984375,0 0,2.40625 L 2.125,0 l 0,-2.40625 c 1.082031,-1.125 2.5625,-2.628906 4.4375,-4.515625 1.875,-1.894531 3.050781,-3.117187 3.53125,-3.671875 0.914062,-1.03125 1.554688,-1.898438 1.921875,-2.609375 0.363281,-0.71875 0.546875,-1.421875 0.546875,-2.109375 0,-1.125 -0.398438,-2.035156 -1.1875,-2.734375 -0.78125,-0.707031 -1.808594,-1.0625 -3.078125,-1.0625 -0.898437,0 -1.84375,0.15625 -2.84375,0.46875 -0.992187,0.304687 -2.054687,0.773437 -3.1875,1.40625 l 0,-2.890625 C 3.421875,-20.582031 4.5,-20.929688 5.5,-21.171875 c 1,-0.238281 1.910156,-0.359375 2.734375,-0.359375 2.195313,0 3.945313,0.554688 5.25,1.65625 1.300781,1.09375 1.953125,2.558594 1.953125,4.390625 0,0.867187 -0.167969,1.6875 -0.5,2.46875 -0.324219,0.773437 -0.914062,1.6875 -1.765625,2.75 -0.242187,0.273437 -0.996094,1.0625 -2.265625,2.375 -1.261719,1.304687 -3.042969,3.132813 -5.34375,5.484375 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-10"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3857"
+           d="m 11.765625,-11.40625 c 1.375,0.304688 2.441406,0.917969 3.203125,1.84375 0.769531,0.917969 1.15625,2.058594 1.15625,3.421875 0,2.085937 -0.71875,3.699219 -2.15625,4.84375 -1.429688,1.136719 -3.464844,1.703125 -6.109375,1.703125 -0.886719,0 -1.804687,-0.089844 -2.75,-0.265625 -0.9375,-0.1640625 -1.90625,-0.425781 -2.90625,-0.78125 l 0,-2.765625 C 3.003906,-2.9375 3.875,-2.582031 4.8125,-2.34375 5.757812,-2.113281 6.75,-2 7.78125,-2 c 1.789062,0 3.15625,-0.351562 4.09375,-1.0625 0.9375,-0.707031 1.40625,-1.734375 1.40625,-3.078125 0,-1.25 -0.4375,-2.222656 -1.3125,-2.921875 -0.875,-0.707031 -2.089844,-1.0625 -3.640625,-1.0625 l -2.46875,0 0,-2.34375 2.578125,0 c 1.40625,0 2.476562,-0.28125 3.21875,-0.84375 0.75,-0.5625 1.125,-1.375 1.125,-2.4375 0,-1.082031 -0.386719,-1.910156 -1.15625,-2.484375 -0.761719,-0.582031 -1.859375,-0.875 -3.296875,-0.875 -0.78125,0 -1.625,0.08594 -2.53125,0.25 -0.898437,0.167969 -1.882813,0.433594 -2.953125,0.796875 l 0,-2.5625 c 1.082031,-0.300781 2.097656,-0.523438 3.046875,-0.671875 0.957031,-0.15625 1.851563,-0.234375 2.6875,-0.234375 2.175781,0 3.894531,0.496094 5.15625,1.484375 1.269531,0.992187 1.90625,2.324219 1.90625,4 0,1.179687 -0.339844,2.171875 -1.015625,2.984375 -0.667969,0.804688 -1.621094,1.355469 -2.859375,1.65625 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-11"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3860"
+           d="m 2.5,-22.03125 6,0 0,2.015625 -3.40625,0 0,21.8125 3.40625,0 0,2.03125 -6,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-12"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3863"
+           d="m 8.828125,-22.03125 0,25.859375 -6.015625,0 0,-2.03125 3.390625,0 0,-21.8125 -3.390625,0 0,-2.015625 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-13"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3866"
+           d="m 14.125,-7.921875 c 0,-1.914063 -0.398438,-3.414063 -1.1875,-4.5 -0.792969,-1.09375 -1.875,-1.640625 -3.25,-1.640625 -1.375,0 -2.460938,0.546875 -3.25,1.640625 -0.792969,1.085937 -1.1875,2.585937 -1.1875,4.5 0,1.917969 0.394531,3.421875 1.1875,4.515625 0.789062,1.09375 1.875,1.640625 3.25,1.640625 1.375,0 2.457031,-0.546875 3.25,-1.640625 C 13.726562,-4.5 14.125,-6.003906 14.125,-7.921875 z m -8.875,-5.53125 c 0.550781,-0.945313 1.242188,-1.644531 2.078125,-2.09375 0.832031,-0.457031 1.832031,-0.6875 3,-0.6875 1.925781,0 3.488281,0.765625 4.6875,2.296875 1.207031,1.523438 1.8125,3.527344 1.8125,6.015625 0,2.5 -0.605469,4.515625 -1.8125,6.046875 -1.199219,1.523438 -2.761719,2.28125 -4.6875,2.28125 -1.167969,0 -2.167969,-0.230469 -3,-0.6875 C 6.492188,-0.738281 5.800781,-1.4375 5.25,-2.375 l 0,2.375 -2.609375,0 0,-22.03125 2.609375,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-14"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3869"
+           d="m 9.21875,-19.265625 c -1.46875,0 -2.578125,0.730469 -3.328125,2.1875 -0.742187,1.449219 -1.109375,3.625 -1.109375,6.53125 0,2.898437 0.367188,5.070313 1.109375,6.515625 0.75,1.449219 1.859375,2.171875 3.328125,2.171875 1.476562,0 2.585938,-0.722656 3.328125,-2.171875 0.75,-1.445312 1.125,-3.617188 1.125,-6.515625 0,-2.90625 -0.375,-5.082031 -1.125,-6.53125 -0.742187,-1.457031 -1.851563,-2.1875 -3.328125,-2.1875 z m 0,-2.265625 c 2.363281,0 4.171875,0.9375 5.421875,2.8125 1.257813,1.875 1.890625,4.601562 1.890625,8.171875 0,3.554687 -0.632812,6.265625 -1.890625,8.140625 -1.25,1.875 -3.058594,2.8125 -5.421875,2.8125 -2.367188,0 -4.179688,-0.9375 -5.4375,-2.8125 -1.25,-1.875 -1.875,-4.585938 -1.875,-8.140625 0,-3.570313 0.625,-6.296875 1.875,-8.171875 1.257812,-1.875 3.070312,-2.8125 5.4375,-2.8125 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-15"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3872"
+           d="m 10.953125,-18.65625 -7.21875,11.296875 7.21875,0 z m -0.75,-2.484375 3.609375,0 0,13.78125 3.015625,0 0,2.375 -3.015625,0 0,4.984375 -2.859375,0 0,-4.984375 -9.53125,0 0,-2.765625 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-16"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3875"
+           d="M 15.921875,-15.859375 10.1875,-8.140625 16.21875,0 13.140625,0 8.53125,-6.234375 3.90625,0 0.828125,0 7,-8.296875 l -5.640625,-7.5625 3.078125,0 4.203125,5.65625 4.203125,-5.65625 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-17"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3878"
+           d="m 5.3125,-20.359375 0,4.5 5.359375,0 0,2.03125 -5.359375,0 0,8.609375 c 0,1.292969 0.175781,2.121094 0.53125,2.484375 C 6.195312,-2.367188 6.914062,-2.1875 8,-2.1875 l 2.671875,0 0,2.1875 L 8,0 C 5.988281,0 4.597656,-0.375 3.828125,-1.125 3.066406,-1.875 2.6875,-3.238281 2.6875,-5.21875 l 0,-8.609375 -1.90625,0 0,-2.03125 1.90625,0 0,-4.5 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-18"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3881"
+           d="m 3.40625,-3.59375 2.984375,0 0,2.4375 L 4.0625,3.375 l -1.828125,0 1.171875,-4.53125 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-19"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path3884"
+           d="M 9.328125,1.46875 C 8.597656,3.363281 7.878906,4.597656 7.171875,5.171875 6.472656,5.742188 5.539062,6.03125 4.375,6.03125 l -2.078125,0 0,-2.171875 1.53125,0 C 4.546875,3.859375 5.101562,3.6875 5.5,3.34375 5.894531,3 6.332031,2.195312 6.8125,0.9375 L 7.28125,-0.25 0.859375,-15.859375 l 2.765625,0 4.953125,12.40625 4.953125,-12.40625 2.765625,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+    </g>
+    <g
+       id="g4592">
+      <symbol
+         id="glyph0-0-3"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4595"
+           d="m 1.296875,4.59375 0,-22.921875 13,0 0,22.921875 z M 2.75,3.15625 l 10.09375,0 0,-20.03125 -10.09375,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph0-1-8"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4598"
+           d="m 3.046875,-3.21875 2.671875,0 0,3.21875 -2.671875,0 z m 0,-10.21875 2.671875,0 0,3.21875 -2.671875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph1-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4601"
+           d="m 1.140625,4.0625 0,-20.28125 11.5,0 0,20.28125 z M 2.4375,2.78125 l 8.921875,0 0,-17.703125 -8.921875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph1-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4604"
+           d="m 7.859375,-14.53125 -3.078125,8.34375 6.171875,0 z m -1.28125,-2.234375 2.578125,0 L 15.546875,0 13.1875,0 l -1.53125,-4.296875 -7.5625,0 L 2.578125,0 0.1875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph1-2"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4607"
+           d="m 4.53125,-14.90625 0,6.296875 2.84375,0 c 1.0625,0 1.878906,-0.269531 2.453125,-0.8125 0.570313,-0.550781 0.859375,-1.332031 0.859375,-2.34375 0,-1 -0.289062,-1.769531 -0.859375,-2.3125 C 9.253906,-14.628906 8.4375,-14.90625 7.375,-14.90625 z M 2.25,-16.765625 l 5.125,0 c 1.882812,0 3.304688,0.429687 4.265625,1.28125 0.957031,0.84375 1.4375,2.085937 1.4375,3.71875 0,1.65625 -0.480469,2.914063 -1.4375,3.765625 -0.960937,0.84375 -2.382813,1.265625 -4.265625,1.265625 l -2.84375,0 L 4.53125,0 2.25,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4610"
+           d="m 1.140625,4.0625 0,-20.28125 11.5,0 0,20.28125 z M 2.4375,2.78125 l 8.921875,0 0,-17.703125 -8.921875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4613"
+           d="m 12.3125,-16.21875 0,2.21875 c -0.867188,-0.414062 -1.683594,-0.722656 -2.453125,-0.921875 -0.761719,-0.207031 -1.496094,-0.3125 -2.203125,-0.3125 -1.230469,0 -2.183594,0.242187 -2.859375,0.71875 -0.667969,0.480469 -1,1.164063 -1,2.046875 0,0.742188 0.21875,1.304688 0.65625,1.6875 C 4.898438,-10.40625 5.75,-10.101562 7,-9.875 l 1.359375,0.28125 c 1.695313,0.324219 2.945313,0.890625 3.75,1.703125 0.800781,0.8125 1.203125,1.902344 1.203125,3.265625 0,1.625 -0.546875,2.859375 -1.640625,3.703125 -1.085937,0.8359375 -2.679687,1.25 -4.78125,1.25 -0.792969,0 -1.636719,-0.09375 -2.53125,-0.28125 -0.898437,-0.175781 -1.824219,-0.4375 -2.78125,-0.78125 l 0,-2.34375 c 0.925781,0.523437 1.828125,0.914063 2.703125,1.171875 0.882812,0.261719 1.753906,0.390625 2.609375,0.390625 1.300781,0 2.300781,-0.253906 3,-0.765625 0.707031,-0.507812 1.0625,-1.234375 1.0625,-2.171875 0,-0.820313 -0.257813,-1.46875 -0.765625,-1.9375 -0.5,-0.46875 -1.328125,-0.816406 -2.484375,-1.046875 l -1.375,-0.265625 C 4.628906,-8.035156 3.398438,-8.5625 2.640625,-9.28125 c -0.75,-0.71875 -1.125,-1.71875 -1.125,-3 0,-1.488281 0.519531,-2.660156 1.5625,-3.515625 1.050781,-0.851563 2.492187,-1.28125 4.328125,-1.28125 0.78125,0 1.578125,0.07422 2.390625,0.21875 0.820313,0.148437 1.660156,0.359375 2.515625,0.640625 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-2"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4616"
+           d="m 11.765625,-10.125 -3.28125,0 -0.9375,3.75 3.296875,0 z m -1.6875,-6.390625 -1.171875,4.671875 3.28125,0 1.171875,-4.671875 1.796875,0 L 14,-11.84375 l 3.515625,0 0,1.71875 -3.953125,0 -0.921875,3.75 3.578125,0 0,1.71875 -4.015625,0 L 11.046875,0 9.25,0 l 1.15625,-4.65625 -3.296875,0 L 5.953125,0 4.140625,0 5.3125,-4.65625 l -3.53125,0 0,-1.71875 3.953125,0 0.9375,-3.75 -3.609375,0 0,-1.71875 4.046875,0 L 8.25,-16.515625 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-3"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4619"
+           d=""
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-4"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4622"
+           d="m 2.859375,-1.90625 3.703125,0 0,-12.796875 -4.03125,0.8125 0,-2.0625 4,-0.8125 2.28125,0 0,14.859375 3.703125,0 0,1.90625 -9.65625,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-5"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4625"
+           d="m 4.40625,-1.90625 7.921875,0 0,1.90625 -10.640625,0 0,-1.90625 C 2.539062,-2.800781 3.710938,-4 5.203125,-5.5 6.691406,-7 7.625,-7.96875 8,-8.40625 c 0.726562,-0.8125 1.238281,-1.5 1.53125,-2.0625 0.289062,-0.570312 0.4375,-1.128906 0.4375,-1.671875 0,-0.894531 -0.3125,-1.617187 -0.9375,-2.171875 -0.625,-0.5625 -1.445312,-0.84375 -2.453125,-0.84375 -0.710937,0 -1.460937,0.125 -2.25,0.375 -0.792969,0.242188 -1.636719,0.609375 -2.53125,1.109375 l 0,-2.28125 c 0.914063,-0.375 1.769531,-0.65625 2.5625,-0.84375 0.789063,-0.1875 1.515625,-0.28125 2.171875,-0.28125 1.738281,0 3.125,0.4375 4.15625,1.3125 1.03125,0.867187 1.546875,2.027344 1.546875,3.484375 0,0.6875 -0.132813,1.339844 -0.390625,1.953125 -0.25,0.617187 -0.71875,1.34375 -1.40625,2.1875 -0.1875,0.21875 -0.78125,0.851563 -1.78125,1.890625 -1,1.03125 -2.417969,2.480469 -4.25,4.34375 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-6"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4628"
+           d="m 9.328125,-9.046875 c 1.09375,0.242187 1.941406,0.730469 2.546875,1.46875 0.613281,0.730469 0.921875,1.632813 0.921875,2.703125 0,1.65625 -0.574219,2.9375 -1.71875,3.84375 -1.136719,0.90625 -2.75,1.359375 -4.84375,1.359375 -0.710937,0 -1.4375,-0.074219 -2.1875,-0.21875 C 3.304688,-0.0234375 2.539062,-0.226562 1.75,-0.5 l 0,-2.203125 c 0.632812,0.375 1.320312,0.65625 2.0625,0.84375 0.75,0.1875 1.535156,0.28125 2.359375,0.28125 1.414063,0 2.492187,-0.28125 3.234375,-0.84375 0.75,-0.5625 1.125,-1.378906 1.125,-2.453125 0,-0.988281 -0.351562,-1.757812 -1.046875,-2.3125 -0.6875,-0.5625 -1.648437,-0.84375 -2.875,-0.84375 l -1.953125,0 0,-1.859375 2.03125,0 c 1.113281,0 1.96875,-0.222656 2.5625,-0.671875 0.59375,-0.445312 0.890625,-1.085938 0.890625,-1.921875 0,-0.863281 -0.308594,-1.523437 -0.921875,-1.984375 -0.605469,-0.457031 -1.476562,-0.6875 -2.609375,-0.6875 -0.625,0 -1.296875,0.07031 -2.015625,0.203125 -0.710938,0.136719 -1.492188,0.34375 -2.34375,0.625 l 0,-2.03125 c 0.863281,-0.238281 1.671875,-0.414063 2.421875,-0.53125 0.757813,-0.125 1.472656,-0.1875 2.140625,-0.1875 1.71875,0 3.078125,0.398437 4.078125,1.1875 1.007813,0.78125 1.515625,1.839844 1.515625,3.171875 0,0.929688 -0.273438,1.714844 -0.8125,2.359375 -0.53125,0.636719 -1.289062,1.074219 -2.265625,1.3125 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph2-7"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4631"
+           d="m 8.6875,-14.796875 -5.71875,8.953125 5.71875,0 z m -0.59375,-1.96875 2.859375,0 0,10.921875 2.390625,0 0,1.890625 -2.390625,0 0,3.953125 -2.265625,0 0,-3.953125 -7.5625,0 0,-2.1875 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph3-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4634"
+           d="m 1.203125,4.25 0,-21.171875 12,0 0,21.171875 z m 1.34375,-1.34375 9.3125,0 0,-18.484375 -9.3125,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph3-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4637"
+           d="m 2.0625,-18.234375 4.96875,0 0,1.671875 -2.8125,0 0,18.046875 2.8125,0 0,1.6875 -4.96875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph3-2"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4640"
+           d="m 7.296875,-18.234375 0,21.40625 -4.96875,0 0,-1.6875 2.8125,0 0,-18.046875 -2.8125,0 0,-1.671875 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph3-3"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4643"
+           d="m 7.4375,-18.21875 c -1.042969,1.804688 -1.820312,3.585938 -2.328125,5.34375 -0.511719,1.75 -0.765625,3.53125 -0.765625,5.34375 0,1.804688 0.253906,3.589844 0.765625,5.359375 0.519531,1.773437 1.296875,3.550781 2.328125,5.34375 l -1.875,0 C 4.394531,1.328125 3.519531,-0.476562 2.9375,-2.25 2.351562,-4.019531 2.0625,-5.78125 2.0625,-7.53125 c 0,-1.75 0.285156,-3.503906 0.859375,-5.265625 C 3.503906,-14.566406 4.382812,-16.375 5.5625,-18.21875 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph3-4"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4646"
+           d="m 1.921875,-18.21875 1.875,0 c 1.175781,1.84375 2.050781,3.652344 2.625,5.421875 0.582031,1.761719 0.875,3.515625 0.875,5.265625 0,1.75 -0.292969,3.511719 -0.875,5.28125 -0.574219,1.773438 -1.449219,3.578125 -2.625,5.421875 l -1.875,0 C 2.960938,1.378906 3.738281,-0.398438 4.25,-2.171875 4.757812,-3.941406 5.015625,-5.726562 5.015625,-7.53125 5.015625,-9.34375 4.757812,-11.125 4.25,-12.875 3.738281,-14.632812 2.960938,-16.414062 1.921875,-18.21875 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph4-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4649"
+           d="m 1.140625,4.0625 0,-20.28125 11.5,0 0,20.28125 z M 2.4375,2.78125 l 8.921875,0 0,-17.703125 -8.921875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph4-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4652"
+           d="m 4.53125,-8 0,6.140625 3.640625,0 c 1.21875,0 2.117187,-0.25 2.703125,-0.75 0.59375,-0.507813 0.890625,-1.285156 0.890625,-2.328125 0,-1.050781 -0.296875,-1.820312 -0.890625,-2.3125 C 10.289062,-7.75 9.390625,-8 8.171875,-8 z m 0,-6.90625 0,5.0625 3.359375,0 c 1.101563,0 1.925781,-0.207031 2.46875,-0.625 0.539063,-0.414062 0.8125,-1.050781 0.8125,-1.90625 0,-0.84375 -0.273437,-1.472656 -0.8125,-1.890625 -0.542969,-0.425781 -1.367187,-0.640625 -2.46875,-0.640625 z M 2.25,-16.765625 l 5.796875,0 c 1.726563,0 3.0625,0.359375 4,1.078125 0.9375,0.71875 1.40625,1.742188 1.40625,3.0625 0,1.03125 -0.242187,1.851562 -0.71875,2.453125 -0.480469,0.605469 -1.183594,0.980469 -2.109375,1.125 1.113281,0.242187 1.976562,0.742187 2.59375,1.5 0.625,0.761719 0.9375,1.714844 0.9375,2.859375 0,1.492188 -0.511719,2.648438 -1.53125,3.46875 C 11.601562,-0.40625 10.15625,0 8.28125,0 L 2.25,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph4-2"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4655"
+           d="m 14.8125,-15.46875 0,2.390625 c -0.761719,-0.71875 -1.574219,-1.25 -2.4375,-1.59375 -0.867188,-0.351563 -1.789062,-0.53125 -2.765625,-0.53125 -1.917969,0 -3.386719,0.589844 -4.40625,1.765625 -1.011719,1.167969 -1.515625,2.859375 -1.515625,5.078125 0,2.210937 0.503906,3.902344 1.515625,5.078125 1.019531,1.167969 2.488281,1.75 4.40625,1.75 0.976563,0 1.898437,-0.175781 2.765625,-0.53125 0.863281,-0.351562 1.675781,-0.882812 2.4375,-1.59375 l 0,2.359375 c -0.792969,0.542969 -1.632812,0.949219 -2.515625,1.21875 -0.886719,0.269531 -1.824219,0.40625 -2.8125,0.40625 -2.542969,0 -4.542969,-0.773437 -6,-2.328125 -1.460937,-1.550781 -2.1875,-3.671875 -2.1875,-6.359375 0,-2.695313 0.726563,-4.820313 2.1875,-6.375 1.457031,-1.5625 3.457031,-2.34375 6,-2.34375 1,0 1.941406,0.136719 2.828125,0.40625 0.882812,0.273437 1.71875,0.671875 2.5,1.203125 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph4-3"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4658"
+           d="m 9.0625,-15.234375 c -1.648438,0 -2.953125,0.617187 -3.921875,1.84375 -0.96875,1.230469 -1.453125,2.90625 -1.453125,5.03125 0,2.105469 0.484375,3.773437 1.453125,5 0.96875,1.230469 2.273437,1.84375 3.921875,1.84375 1.644531,0 2.945312,-0.613281 3.90625,-1.84375 0.96875,-1.226563 1.453125,-2.894531 1.453125,-5 0,-2.125 -0.484375,-3.800781 -1.453125,-5.03125 -0.960938,-1.226563 -2.261719,-1.84375 -3.90625,-1.84375 z m 0,-1.84375 c 2.351562,0 4.234375,0.792969 5.640625,2.375 1.40625,1.574219 2.109375,3.6875 2.109375,6.34375 0,2.636719 -0.703125,4.746094 -2.109375,6.328125 -1.40625,1.574219 -3.289063,2.359375 -5.640625,2.359375 -2.355469,0 -4.242188,-0.785156 -5.65625,-2.359375 C 2,-3.601562 1.296875,-5.710938 1.296875,-8.359375 c 0,-2.65625 0.703125,-4.769531 2.109375,-6.34375 1.414062,-1.582031 3.300781,-2.375 5.65625,-2.375 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph5-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4661"
+           d="m 1.25,4.421875 0,-22.046875 12.5,0 0,22.046875 z m 1.40625,-1.390625 9.703125,0 0,-19.25 -9.703125,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph5-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4664"
+           d="M 8.046875,1.265625 C 7.410156,2.898438 6.789062,3.960938 6.1875,4.453125 c -0.605469,0.5 -1.414062,0.75 -2.421875,0.75 l -1.78125,0 0,-1.875 1.3125,0 c 0.613281,0 1.09375,-0.152344 1.4375,-0.453125 C 5.078125,2.582031 5.457031,1.894531 5.875,0.8125 L 6.28125,-0.21875 0.75,-13.671875 l 2.375,0 4.265625,10.6875 4.28125,-10.6875 2.375,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph5-2"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4667"
+           d="M 13.71875,-13.671875 8.78125,-7.015625 13.984375,0 11.328125,0 7.34375,-5.375 3.375,0 0.71875,0 l 5.3125,-7.15625 -4.859375,-6.515625 2.65625,0 3.625,4.875 3.625,-4.875 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph6-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4670"
+           d="m 1.140625,4.0625 0,-20.28125 11.5,0 0,20.28125 z M 2.4375,2.78125 l 8.921875,0 0,-17.703125 -8.921875,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph6-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4673"
+           d="m 2.171875,-17.46875 2.0625,0 0,17.46875 -2.0625,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph6-2"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4676"
+           d="m 4.40625,-1.90625 7.921875,0 0,1.90625 -10.640625,0 0,-1.90625 C 2.539062,-2.800781 3.710938,-4 5.203125,-5.5 6.691406,-7 7.625,-7.96875 8,-8.40625 c 0.726562,-0.8125 1.238281,-1.5 1.53125,-2.0625 0.289062,-0.570312 0.4375,-1.128906 0.4375,-1.671875 0,-0.894531 -0.3125,-1.617187 -0.9375,-2.171875 -0.625,-0.5625 -1.445312,-0.84375 -2.453125,-0.84375 -0.710937,0 -1.460937,0.125 -2.25,0.375 -0.792969,0.242188 -1.636719,0.609375 -2.53125,1.109375 l 0,-2.28125 c 0.914063,-0.375 1.769531,-0.65625 2.5625,-0.84375 0.789063,-0.1875 1.515625,-0.28125 2.171875,-0.28125 1.738281,0 3.125,0.4375 4.15625,1.3125 1.03125,0.867187 1.546875,2.027344 1.546875,3.484375 0,0.6875 -0.132813,1.339844 -0.390625,1.953125 -0.25,0.617187 -0.71875,1.34375 -1.40625,2.1875 -0.1875,0.21875 -0.78125,0.851563 -1.78125,1.890625 -1,1.03125 -2.417969,2.480469 -4.25,4.34375 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph7-0"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4679"
+           d="m 1.203125,4.25 0,-21.171875 12,0 0,21.171875 z m 1.34375,-1.34375 9.3125,0 0,-18.484375 -9.3125,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+      <symbol
+         id="glyph7-1"
+         overflow="visible"
+         style="overflow:visible">
+        <path
+           id="path4682"
+           d="m 2.265625,-18.234375 2.15625,0 0,18.234375 -2.15625,0 z"
+           style="stroke:none"
+           inkscape:connector-curvature="0" />
+      </symbol>
+    </g>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="435.83443"
+     inkscape:cy="33.42821"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1278"
+     inkscape:window-height="1008"
+     inkscape:window-x="0"
+     inkscape:window-y="14"
+     inkscape:window-maximized="0"
+     fit-margin-top="20"
+     fit-margin-left="20"
+     fit-margin-right="20"
+     fit-margin-bottom="20" />
+  <metadata
+     id="metadata3455">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(53.377808,-160.09879)">
+    <text
+       xml:space="preserve"
+       style="font-size:144px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+       x="127.14285"
+       y="289.50504"
+       id="text3464"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3466"
+         x="127.14285"
+         y="289.50504">ghc-vis</tspan></text>
+    <g
+       id="surface287"
+       transform="matrix(0.95750438,0,0,0.95750438,7.1095031,538.67303)">
+      <g
+         id="g3887"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3889"
+           y="43.740131"
+           x="3.644531"
+           xlink:href="#glyph0-1"
+           width="1"
+           height="1" />
+        <use
+           id="use3891"
+           y="43.740131"
+           x="11.745329"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+        <use
+           id="use3893"
+           y="43.740131"
+           x="21.56879"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path3895"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,43.735763)"
+         d="m -8.30078e-4,-18.561456 0,46.560687 c 0,2.762506 2.237335078,4.999841 4.999841078,4.999841 l 233.242869,0 c 2.75982,0 4.99984,-2.237335 4.99984,-4.999841 l 0,-46.560687 c 0,-2.762506 -2.24002,-4.999842 -4.99984,-4.999842 l -233.242869,0 c -2.762506,0 -4.999841078,2.237336 -4.999841078,4.999842 z"
+         style="fill:#7fff7f;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3897"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,43.735763)"
+         d="m -8.30078e-4,4.717548 243.242550078,0"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g3899"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3901"
+           y="43.740131"
+           x="63.964844"
+           xlink:href="#glyph0-4"
+           width="1"
+           height="1" />
+        <use
+           id="use3903"
+           y="43.740131"
+           x="75.340126"
+           xlink:href="#glyph0-5"
+           width="1"
+           height="1" />
+        <use
+           id="use3905"
+           y="43.740131"
+           x="93.848099"
+           xlink:href="#glyph0-6"
+           width="1"
+           height="1" />
+        <use
+           id="use3907"
+           y="43.740131"
+           x="118.27863"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+        <use
+           id="use3909"
+           y="43.740131"
+           x="127.54684"
+           xlink:href="#glyph0-7"
+           width="1"
+           height="1" />
+        <use
+           id="use3911"
+           y="43.740131"
+           x="146.09753"
+           xlink:href="#glyph0-8"
+           width="1"
+           height="1" />
+        <use
+           id="use3913"
+           y="43.740131"
+           x="157.47281"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+        <use
+           id="use3915"
+           y="43.740131"
+           x="167.29628"
+           xlink:href="#glyph0-4"
+           width="1"
+           height="1" />
+        <use
+           id="use3917"
+           y="43.740131"
+           x="178.67157"
+           xlink:href="#glyph0-5"
+           width="1"
+           height="1" />
+        <use
+           id="use3919"
+           y="43.740131"
+           x="197.17953"
+           xlink:href="#glyph0-6"
+           width="1"
+           height="1" />
+        <use
+           id="use3921"
+           y="43.740131"
+           x="221.61006"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+        <use
+           id="use3923"
+           y="43.740131"
+           x="230.87828"
+           xlink:href="#glyph0-9"
+           width="1"
+           height="1" />
+        <use
+           id="use3925"
+           y="43.740131"
+           x="249.42897"
+           xlink:href="#glyph0-8"
+           width="1"
+           height="1" />
+        <use
+           id="use3927"
+           y="43.740131"
+           x="260.80426"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+        <use
+           id="use3929"
+           y="43.740131"
+           x="270.62772"
+           xlink:href="#glyph0-4"
+           width="1"
+           height="1" />
+        <use
+           id="use3931"
+           y="43.740131"
+           x="282.00299"
+           xlink:href="#glyph0-5"
+           width="1"
+           height="1" />
+        <use
+           id="use3933"
+           y="43.740131"
+           x="300.51096"
+           xlink:href="#glyph0-6"
+           width="1"
+           height="1" />
+        <use
+           id="use3935"
+           y="43.740131"
+           x="324.9415"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+        <use
+           id="use3937"
+           y="43.740131"
+           x="334.20972"
+           xlink:href="#glyph0-10"
+           width="1"
+           height="1" />
+        <use
+           id="use3939"
+           y="43.740131"
+           x="352.76041"
+           xlink:href="#glyph0-8"
+           width="1"
+           height="1" />
+        <use
+           id="use3941"
+           y="43.740131"
+           x="364.13568"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+        <use
+           id="use3943"
+           y="43.740131"
+           x="373.95914"
+           xlink:href="#glyph0-11"
+           width="1"
+           height="1" />
+        <use
+           id="use3945"
+           y="43.740131"
+           x="385.33444"
+           xlink:href="#glyph0-12"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g3947"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3949"
+           y="81.322166"
+           x="211.80859"
+           xlink:href="#glyph0-13"
+           width="1"
+           height="1" />
+        <use
+           id="use3951"
+           y="81.322166"
+           x="230.31656"
+           xlink:href="#glyph0-14"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g3953"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3955"
+           y="177.2245"
+           x="3.644531"
+           xlink:href="#glyph0-1"
+           width="1"
+           height="1" />
+        <use
+           id="use3957"
+           y="177.2245"
+           x="11.745329"
+           xlink:href="#glyph0-9"
+           width="1"
+           height="1" />
+        <use
+           id="use3959"
+           y="177.2245"
+           x="30.296013"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+        <use
+           id="use3961"
+           y="177.2245"
+           x="40.119473"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path3963"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,177.22096)"
+         d="m -8.30078e-4,-18.562018 0,56.563049 c 0,2.759827 2.237335078,4.999842 4.999841078,4.999842 l 111.298719,0 c 2.76251,0 4.99984,-2.240015 4.99984,-4.999842 l 0,-56.563049 c 0,-2.762506 -2.23733,-4.999841 -4.99984,-4.999841 l -111.298719,0 c -2.762506,0 -4.999841078,2.237335 -4.999841078,4.999841 z"
+         style="fill:#7fff7f;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3965"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,177.22096)"
+         d="m -8.30078e-4,14.719348 121.298400078,0"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g3967"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3969"
+           y="177.2245"
+           x="63.964844"
+           xlink:href="#glyph0-4"
+           width="1"
+           height="1" />
+        <use
+           id="use3971"
+           y="177.2245"
+           x="75.340126"
+           xlink:href="#glyph0-5"
+           width="1"
+           height="1" />
+        <use
+           id="use3973"
+           y="177.2245"
+           x="93.848099"
+           xlink:href="#glyph0-6"
+           width="1"
+           height="1" />
+        <use
+           id="use3975"
+           y="177.2245"
+           x="118.27863"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+        <use
+           id="use3977"
+           y="177.2245"
+           x="127.54684"
+           xlink:href="#glyph0-15"
+           width="1"
+           height="1" />
+        <use
+           id="use3979"
+           y="177.2245"
+           x="146.09753"
+           xlink:href="#glyph0-8"
+           width="1"
+           height="1" />
+        <use
+           id="use3981"
+           y="177.2245"
+           x="157.47281"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path3983"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,177.22096)"
+         d="m 80.878168,-18.562018 0,23.281684 c 0,2.759826 2.237335,4.999841 4.999841,4.999841 l 25.419881,0 c 2.7625,0 4.99984,-2.240015 4.99984,-4.999841 l 0,-23.281684 c 0,-2.762506 -2.23734,-4.999841 -4.99984,-4.999841 l -25.419881,0 c -2.762506,0 -4.999841,2.237335 -4.999841,4.999841 z"
+         style="fill:#7f7fff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g3985"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3987"
+           y="177.2245"
+           x="178.23047"
+           xlink:href="#glyph0-13"
+           width="1"
+           height="1" />
+        <use
+           id="use3989"
+           y="177.2245"
+           x="196.73843"
+           xlink:href="#glyph0-14"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g3991"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3993"
+           y="229.38857"
+           x="122.92188"
+           xlink:href="#glyph0-13"
+           width="1"
+           height="1" />
+        <use
+           id="use3995"
+           y="229.38857"
+           x="141.42986"
+           xlink:href="#glyph0-7"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g3997"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use3999"
+           y="325.28702"
+           x="3.644531"
+           xlink:href="#glyph0-16"
+           width="1"
+           height="1" />
+        <use
+           id="use4001"
+           y="325.28702"
+           x="20.899656"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+        <use
+           id="use4003"
+           y="325.28702"
+           x="30.72312"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path4005"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,325.28474)"
+         d="m -8.30078e-4,-18.562897 0,23.281684 c 0,2.762506 2.237335078,4.999841 4.999841078,4.999841 l 20.567407,0 c 2.759827,0 4.999842,-2.237335 4.999842,-4.999841 l 0,-23.281684 c 0,-2.759826 -2.240015,-4.999841 -4.999842,-4.999841 l -20.567407,0 c -2.762506,0 -4.999841078,2.240015 -4.999841078,4.999841 z"
+         style="fill:#ff7f7f;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4007"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4009"
+           y="325.28702"
+           x="60.320312"
+           xlink:href="#glyph0-17"
+           width="1"
+           height="1" />
+        <use
+           id="use4011"
+           y="325.28702"
+           x="71.752548"
+           xlink:href="#glyph0-14"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g4013"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4015"
+           y="325.28702"
+           x="101.23828"
+           xlink:href="#glyph0-4"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path4017"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,325.28474)"
+         d="m 43.36864,-18.562897 0,23.281684 c 0,2.762506 2.237335,4.999841 4.999841,4.999841 l 25.41988,0 c 2.762506,0 4.999841,-2.237335 4.999841,-4.999841 l 0,-23.281684 c 0,-2.759826 -2.237335,-4.999841 -4.999841,-4.999841 l -25.41988,0 c -2.762506,0 -4.999841,2.240015 -4.999841,4.999841 z"
+         style="fill:#7f7fff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4019"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4021"
+           y="325.28702"
+           x="123.54688"
+           xlink:href="#glyph0-13"
+           width="1"
+           height="1" />
+        <use
+           id="use4023"
+           y="325.28702"
+           x="142.05486"
+           xlink:href="#glyph0-7"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g4025"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4027"
+           y="325.28702"
+           x="171.53906"
+           xlink:href="#glyph0-18"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path4029"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,325.28474)"
+         d="m 90.146362,-18.562897 0,23.281684 c 0,2.762506 2.237336,4.999841 4.999842,4.999841 l 25.419876,0 c 2.76251,0 4.99984,-2.237335 4.99984,-4.999841 l 0,-23.281684 c 0,-2.759826 -2.23733,-4.999841 -4.99984,-4.999841 l -25.419876,0 c -2.762506,0 -4.999842,2.240015 -4.999842,4.999841 z"
+         style="fill:#7f7fff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4031"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4033"
+           y="325.28702"
+           x="191.74219"
+           xlink:href="#glyph0-13"
+           width="1"
+           height="1" />
+        <use
+           id="use4035"
+           y="325.28702"
+           x="210.25015"
+           xlink:href="#glyph0-14"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g4037"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4039"
+           y="325.28702"
+           x="239.73438"
+           xlink:href="#glyph0-8"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g4041"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4043"
+           y="417.54092"
+           x="3.644531"
+           xlink:href="#glyph0-19"
+           width="1"
+           height="1" />
+        <use
+           id="use4045"
+           y="417.54092"
+           x="18.778358"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+        <use
+           id="use4047"
+           y="417.54092"
+           x="28.601822"
+           xlink:href="#glyph0-3"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path4049"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,417.53986)"
+         d="m -8.30078e-4,-18.563733 0,56.563049 c 0,2.762507 2.237335078,4.999842 4.999841078,4.999842 l 62.763281,0 c 2.762507,0 4.999842,-2.237335 4.999842,-4.999842 l 0,-56.563049 c 0,-2.759827 -2.237335,-4.999841 -4.999842,-4.999841 l -62.763281,0 c -2.762506,0 -4.999841078,2.240014 -4.999841078,4.999841 z"
+         style="fill:#7fff7f;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path4051"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,417.53986)"
+         d="m -8.30078e-4,14.717633 72.762964078,0"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4053"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4055"
+           y="417.54092"
+           x="63.964844"
+           xlink:href="#glyph0-4"
+           width="1"
+           height="1" />
+        <use
+           id="use4057"
+           y="417.54092"
+           x="75.340126"
+           xlink:href="#glyph0-8"
+           width="1"
+           height="1" />
+        <use
+           id="use4059"
+           y="417.54092"
+           x="86.715416"
+           xlink:href="#glyph0-2"
+           width="1"
+           height="1" />
+      </g>
+      <path
+         id="path4061"
+         transform="matrix(1.457859,0,0,1.457859,53.03246,417.53986)"
+         d="m 32.342731,-18.563733 0,23.281683 c 0,2.762507 2.237335,4.999842 4.999841,4.999842 l 25.419879,0 c 2.762506,0 4.999841,-2.237335 4.999841,-4.999842 l 0,-23.281683 c 0,-2.759827 -2.237335,-4.999841 -4.999841,-4.999841 l -25.419879,0 c -2.762506,0 -4.999841,2.240014 -4.999841,4.999841 z"
+         style="fill:#7f7fff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4063"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4065"
+           y="417.54092"
+           x="107.47266"
+           xlink:href="#glyph0-13"
+           width="1"
+           height="1" />
+        <use
+           id="use4067"
+           y="417.54092"
+           x="125.98063"
+           xlink:href="#glyph0-9"
+           width="1"
+           height="1" />
+      </g>
+      <g
+         id="g4069"
+         style="fill:#000000;fill-opacity:1">
+        <use
+           id="use4071"
+           y="469.70499"
+           x="87.542969"
+           xlink:href="#glyph0-13"
+           width="1"
+           height="1" />
+        <use
+           id="use4073"
+           y="469.70499"
+           x="106.05094"
+           xlink:href="#glyph0-9"
+           width="1"
+           height="1" />
+      </g>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:72px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+       x="406.8136"
+       y="408.48969"
+       id="text3468-5"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="406.8136"
+         y="408.48969"
+         id="tspan3472-8">Type :view x in GHCi</tspan><tspan
+         sodipodi:role="line"
+         x="406.8136"
+         y="498.48969"
+         id="tspan5130">to visualize expression x</tspan></text>
+    <g
+       transform="matrix(1.25,0,0,-1.25,439.73215,1037.3623)"
+       id="g4843">
+      <g
+         id="g4845"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 110.125,-23.82 c 0,9.644 -11.727,17.461 -26.191,17.461 -14.465,0 -26.188,-7.817 -26.188,-17.461 0,-9.645 11.723,-17.461 26.188,-17.461 14.464,0 26.191,7.816 26.191,17.461"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4847" />
+      </g>
+      <g
+         id="g4849"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 110.125,-130.52 c 0,13.93 -11.727,25.219 -26.191,25.219 -14.465,0 -26.188,-11.289 -26.188,-25.219 0,-13.929 11.723,-25.218 26.188,-25.218 14.464,0 26.191,11.289 26.191,25.218"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4851" />
+      </g>
+      <text
+         transform="matrix(1,0,0,-1,79.570312,287.62471)"
+         id="text4853">
+        <tspan
+           style="font-size:25.9445858px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0"
+           y="0"
+           id="tspan4855">:</tspan>
+      </text>
+      <g
+         id="g4857"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 105.273,-217.82 c 0,13.929 -22.582,25.218 -50.437,25.218 -27.859,0 -50.441,-11.289 -50.441,-25.218 0,-13.93 22.582,-25.219 50.441,-25.219 27.855,0 50.437,11.289 50.437,25.219"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4859" />
+      </g>
+      <text
+         transform="matrix(1,0,0,-1,26.703125,200.02351)"
+         id="text4861">
+        <tspan
+           style="font-size:23.21299934px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0 14.693829 34.099895 41.45842"
+           y="0"
+           sodipodi:role="line"
+           id="tspan4863">S# 1</tspan>
+      </text>
+      <g
+         id="g4865"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 175.113,-217.82 c 0,13.929 -11.722,25.218 -26.187,25.218 -14.465,0 -26.192,-11.289 -26.192,-25.218 0,-13.93 11.727,-25.219 26.192,-25.219 14.465,0 26.187,11.289 26.187,25.219"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4867" />
+      </g>
+      <text
+         transform="matrix(1,0,0,-1,144.55859,200.32393)"
+         id="text4869">
+        <tspan
+           style="font-size:25.9445858px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0"
+           y="0"
+           id="tspan4871">:</tspan>
+      </text>
+      <g
+         id="g4873"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 170.266,-392.422 c 0,13.93 -22.582,25.223 -50.442,25.223 -27.855,0 -50.437,-11.293 -50.437,-25.223 0,-13.926 22.582,-25.219 50.437,-25.219 27.86,0 50.442,11.293 50.442,25.219"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4875" />
+      </g>
+      <text
+         transform="matrix(1,0,0,-1,91.695313,25.421945)"
+         id="text4877">
+        <tspan
+           style="font-size:23.21299934px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0 14.693829 34.099895 41.45842"
+           y="0"
+           sodipodi:role="line"
+           id="tspan4879">S# 1</tspan>
+      </text>
+      <g
+         id="g4881"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 275.023,-305.121 c 0,13.93 -28.66,25.223 -64.019,25.223 -35.356,0 -64.02,-11.293 -64.02,-25.223 0,-13.926 28.664,-25.219 64.02,-25.219 35.359,0 64.019,11.293 64.019,25.219"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4883" />
+      </g>
+      <text
+         transform="matrix(1,0,0,-1,173.66016,112.83297)"
+         id="text4885">
+        <tspan
+           style="font-size:24.19260597px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0 14.733297 30.023024 45.336945 60.626671"
+           y="0"
+           sodipodi:role="line"
+           id="tspan4887">Thunk</tspan>
+      </text>
+      <g
+         id="g4889"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 288.605,-392.422 c 0,13.93 -22.582,25.223 -50.441,25.223 -27.855,0 -50.437,-11.293 -50.437,-25.223 0,-13.926 22.582,-25.219 50.437,-25.219 27.859,0 50.441,11.293 50.441,25.219"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4891" />
+      </g>
+      <text
+         transform="matrix(1,0,0,-1,210.03516,25.421945)"
+         id="text4893">
+        <tspan
+           style="font-size:23.21299934px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0 14.693829 34.099895 41.45842"
+           y="0"
+           sodipodi:role="line"
+           id="tspan4895">S# 0</tspan>
+      </text>
+      <g
+         id="g4897"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 83.934,-41.281 c 0,-14.547 0,-35.891 0,-54.321"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4899" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         d="m 87.816,328.398 -3.882,-9.699 -2.911,9.699 6.793,0 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path4901" />
+      <g
+         id="g4903"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 87.816,-95.602 -3.882,-9.699 -2.911,9.699 6.793,0 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4905" />
+      </g>
+      <text
+         transform="matrix(1,0,0,-1,84.421875,344.52158)"
+         id="text4907">
+        <tspan
+           style="font-size:22.93732834px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
+           x="0 8.9455585 23.510763 30.758959 45.324162 52.595295 59.866428"
+           y="0"
+           sodipodi:role="line"
+           id="tspan4909">[1,1..]</tspan>
+      </text>
+      <g
+         id="g4911"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 76.176,-154.77 c -2.91,-8.73 -6.789,-19.402 -9.699,-29.101"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4913" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         d="m 69.387,239.16 -5.821,-7.762 -0.972,9.704 6.793,-1.942 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path4915" />
+      <g
+         id="g4917"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 69.387,-184.84 -5.821,-7.762 -0.972,9.704 6.793,-1.942 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4919" />
+      </g>
+      <g
+         id="g4921"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 99.453,-150.891 c 8.731,-11.64 19.402,-26.187 28.133,-38.8"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4923" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         d="m 130.496,236.25 2.91,-9.699 -8.73,5.82 5.82,3.879 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path4925" />
+      <g
+         id="g4927"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 130.496,-187.75 2.91,-9.699 -8.73,5.82 5.82,3.879 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4929" />
+      </g>
+      <g
+         id="g4931"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 145.047,-243.039 c -2.91,-10.672 -4.852,-24.25 -6.793,-36.859 -3.879,-26.192 -8.731,-55.293 -12.609,-77.602"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4933" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         d="m 128.555,66.5 -4.852,-9.699 -1.937,10.668 6.789,-0.969 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path4935" />
+      <g
+         id="g4937"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 128.555,-357.5 -4.852,-9.699 -1.937,10.668 6.789,-0.969 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4939" />
+      </g>
+      <g
+         id="g4941"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 163.477,-239.16 c 7.757,-9.699 16.488,-22.309 24.25,-33.949"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4943" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         d="m 190.637,152.828 2.91,-9.699 -7.762,5.82 4.852,3.879 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path4945" />
+      <g
+         id="g4947"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 190.637,-271.172 2.91,-9.699 -7.762,5.82 4.852,3.879 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4949" />
+      </g>
+      <g
+         id="g4951"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 186.754,-328.398 c -11.641,-10.672 -24.25,-23.282 -35.891,-34.922"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4953" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         d="m 152.805,58.738 -9.7,-4.847 4.848,9.699 4.852,-4.852 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path4955" />
+      <g
+         id="g4957"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 152.805,-365.262 -9.7,-4.847 4.848,9.699 4.852,-4.852 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4959" />
+      </g>
+      <g
+         id="g4961"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 218.766,-330.34 c 2.91,-8.73 5.82,-18.43 8.73,-27.16"
+           style="fill:none;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4963" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         d="m 230.406,67.469 0,-10.668 -5.82,7.758 5.82,2.91 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path4965" />
+      <g
+         id="g4967"
+         transform="translate(0,424)">
+        <path
+           inkscape:connector-curvature="0"
+           d="m 230.406,-356.531 0,-10.668 -5.82,7.758 5.82,2.91 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.97000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+           id="path4969" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/ghc-vis.cabal b/ghc-vis.cabal
--- a/ghc-vis.cabal
+++ b/ghc-vis.cabal
@@ -1,5 +1,5 @@
 name:               ghc-vis
-version:            0.5
+version:            0.6
 license:            BSD3
 license-file:       LICENSE
 category:           GHC, Debug, Development
@@ -21,16 +21,24 @@
                     <http://felsin9.de/nnis/ghc-vis/#combined-debugger>
 
 tested-with: GHC == 7.4.1, GHC == 7.4.2, GHC == 7.6.1
-data-files: ghci
+data-files: ghci data/main.ui data/welcome.svg data/legend_graph.svg data/legend_list.svg
 Extra-source-files: nonghci-test.hs
 
 flag graph
   Default: True
   Description: "Enable graph view using Graphviz"
 
+flag full
+  Default: True
+  Description: "Full ghc-vis window: decorations, buttons, legend"
+
+flag sdl
+  Default: False
+  Description: "SDL window"
+
 Library
   Exposed-modules: GHC.Vis
-  Other-modules: GHC.Vis.Internal GHC.Vis.Types GHC.Vis.View.List GHC.Vis.View.Common
+  Other-modules: GHC.Vis.Internal GHC.Vis.Types GHC.Vis.View.List GHC.Vis.View.Common Paths_ghc_vis
   Default-Language: Haskell2010
   Build-depends: base == 4.*,
                  mtl >= 2.0,
@@ -50,6 +58,15 @@
                      xdot >= 0.2
       Cpp-options: -DGRAPH_VIEW
 
---source-repository head
---    type:     darcs
---    location: http://
+  if flag(full)
+      Build-depends: svgcairo >= 0.12
+      Cpp-options: -DFULL_WINDOW
+
+  if flag(sdl)
+      Build-depends: SDL >= 0.6,
+                     cairo >= 0.12.4
+      Cpp-options: -DSDL_WINDOW
+
+source-repository head
+    type:     git
+    location: git://r0q.ath.cx/vis
diff --git a/ghci b/ghci
--- a/ghci
+++ b/ghci
@@ -1,4 +1,6 @@
-:def vis    \_ -> return $ "GHC.Vis.visualization"
+:def vis    \_ -> return $ "GHC.Vis.vis"
+:def mvis   \_ -> return $ "GHC.Vis.mvis"
+:def svis   \_ -> return $ "GHC.Vis.svis"
 :def view   \x -> return $ "GHC.Vis.view (" ++ x ++ ") " ++ show x
 :def eval   \x -> return $ "GHC.Vis.eval \"" ++ x ++ "\""
 :def switch \_ -> return $ "GHC.Vis.switch"
diff --git a/src/GHC/Vis.hs b/src/GHC/Vis.hs
--- a/src/GHC/Vis.hs
+++ b/src/GHC/Vis.hs
@@ -34,7 +34,11 @@
 >   putStrLn "End"
  -}
 module GHC.Vis (
-  visualization, -- TODO: Maybe rename to vis
+  vis,
+  mvis,
+#ifdef SDL_WINDOW
+  svis,
+#endif
   view,
   eval,
   switch,
@@ -50,7 +54,7 @@
 import Prelude hiding (error)
 #endif
 
-import Graphics.UI.Gtk hiding (Box, Signal)
+import Graphics.UI.Gtk hiding (Box, Signal, get, response)
 import qualified Graphics.UI.Gtk.Gdk.Events as E
 
 import System.IO
@@ -79,6 +83,16 @@
 
 import Graphics.Rendering.Cairo
 
+#ifdef FULL_WINDOW
+import Graphics.Rendering.Cairo.SVG
+import Paths_ghc_vis as My
+#endif
+
+#ifdef SDL_WINDOW
+import qualified Graphics.UI.SDL as SDL
+import Foreign.Ptr ( castPtr )
+#endif
+
 views :: [View]
 views =
   View List.redraw List.click List.move List.updateObjects List.export :
@@ -108,13 +122,38 @@
 signalTimeout :: Int
 signalTimeout = 1000000
 
+#ifdef SDL_WINDOW
+black = SDL.Pixel maxBound
+white = SDL.Pixel 0xFFFFFF
+#endif
+
 -- | This is the main function. It's to be called from GHCi and launches a
 --   graphical window in a new thread.
-visualization :: IO ()
-visualization = do
+vis :: IO ()
+#ifdef FULL_WINDOW
+vis = do
   vr <- swapMVar visRunning True
   unless vr $ void $ forkIO visMainThread
+#else
+vis = mvis
+#endif
 
+-- | A minimalistic version of ghc-vis, without window decorations, help and
+--   all that other stuff.
+mvis :: IO ()
+mvis = do
+  vr <- swapMVar visRunning True
+  unless vr $ void $ forkIO mVisMainThread
+
+#ifdef SDL_WINDOW
+-- | SDL version. Not properly working yet. Mainly for testing whether SDL
+--   works better than GTK on some platforms.
+svis :: IO ()
+svis = do
+  vr <- swapMVar visRunning True
+  unless vr $ void $ forkIO sdlVisMainThread
+#endif
+
 -- | Add expressions with a name to the visualization window.
 view :: a -> String -> IO ()
 view a name = put $ NewSignal (asBox a) name
@@ -140,10 +179,15 @@
 -- | Export the current visualization view to a file, format depends on the
 --   file ending. Currently supported: svg, png, pdf, ps
 export :: String -> IO ()
-export filename = case mbDrawFn of
-  Right error -> putStrLn error
-  Left _ -> put $ ExportSignal ((\(Left x) -> x) mbDrawFn) filename
+export filename = void $ export' filename
 
+export' :: String -> IO (Maybe String)
+export' filename = case mbDrawFn of
+  Right error -> do putStrLn error
+                    return $ Just error
+  Left _ -> do put $ ExportSignal ((\(Left x) -> x) mbDrawFn) filename
+               return Nothing
+
   where mbDrawFn = case map toLower (reverse . take 4 . reverse $ filename) of
           ".svg"  -> Left withSVGSurface
           ".pdf"  -> Left withPDFSurface
@@ -161,8 +205,8 @@
 put :: Signal -> IO ()
 put s = void $ timeout signalTimeout $ putMVar visSignal s
 
-visMainThread :: IO ()
-visMainThread = do
+mVisMainThread :: IO ()
+mVisMainThread = do
   initGUI
   window <- windowNew
 
@@ -180,6 +224,50 @@
     runCorrect move >>= \f -> f canvas
     return True
 
+  dummy <- windowNew
+
+  setupGUI window canvas dummy
+
+#ifdef SDL_WINDOW
+sdlVisMainThread :: IO ()
+sdlVisMainThread = SDL.withInit [ SDL.InitVideo ] $ do
+  screen <- SDL.setVideoMode 600 600 32 [ SDL.Resizable ]
+
+  SDL.fillRect screen Nothing black
+
+  pixels <- fmap castPtr $ SDL.surfaceGetPixels screen
+
+  -- Here we test the first of the user facing functions added by the patch.
+  -- Be sure to use FORMATRGB24 so Cairo and SDL don't conflict about alpha
+  -- values. If you need to use alpha channel in your Cairo routines, consider
+  -- using an independent Cairo surface to buffer your alpha drawing to.
+  --renderWith canvas demo1
+
+  -- And here is the other new function for when you want to hide the
+  -- Cairo.Surface from the caller.
+
+  canvas <- createImageSurfaceForData pixels FormatRGB24 600 600 (600 * 4)
+
+  reactThread <- forkIO $ react2
+
+  let idle = do
+        e <- SDL.waitEvent
+        case e of
+          SDL.Quit -> quit reactThread
+          otherwise -> do
+            putStrLn "Updating"
+            s <- List.getState
+            SDL.fillRect screen Nothing white
+            boundingBoxes <- renderWith canvas $ List.draw s 600 600
+            List.updateBoundingBoxes boundingBoxes
+            SDL.flip screen
+            idle
+
+  idle
+#endif
+
+setupGUI :: (WidgetClass w1, WidgetClass w2, WidgetClass w3) => w1 -> w2 -> w3 -> IO ()
+setupGUI window canvas legendCanvas = do
   onMotionNotify canvas False $ \e -> do
     state <- readIORef visState
     modifyIORef visState (\s -> s {mousePos = (E.eventX e, E.eventY e)})
@@ -316,7 +404,7 @@
 
   widgetShowAll window
 
-  reactThread <- forkIO $ react canvas window
+  reactThread <- forkIO $ react canvas legendCanvas
   --onDestroy window mainQuit -- Causes :r problems with multiple windows
   onDestroy window (quit reactThread)
 
@@ -328,8 +416,64 @@
   swapMVar visRunning False
   killThread reactThread
 
+#ifdef SDL_WINDOW
+react2 :: IO b
+react2 = do
+  -- Timeout used to handle ghci reloads (:r)
+  -- Reloads cause the visSignal to be reinitialized, but takeMVar is still
+  -- waiting for the old one.  This solution is not perfect, but it works for
+  -- now.
+  mbSignal <- timeout signalTimeout (takeMVar visSignal)
+  case mbSignal of
+    Nothing -> do
+      running <- readMVar visRunning
+      if running then react2 else
+        -- :r caused visRunning to be reset
+        (do swapMVar visRunning True
+            timeout signalTimeout (putMVar visSignal UpdateSignal)
+            react2)
+    Just signal -> do
+      case signal of
+        NewSignal x n  -> modifyMVar_ visBoxes (
+          \y -> return $ if (x,n) `elem` y then y else y ++ [(x,n)])
+        ClearSignal    -> modifyMVar_ visBoxes (\_ -> return [])
+        UpdateSignal   -> return ()
+        SwitchSignal   -> doSwitch
+        ExportSignal d f -> catch (runCorrect exportView >>= \e -> e d f)
+          (\e -> do let err = show (e :: IOException)
+                    hPutStrLn stderr $ "Couldn't export to file \"" ++ f ++ "\": " ++ err
+                    return ())
+
+      boxes <- readMVar visBoxes
+      performGC -- TODO: Else Blackholes appear. Do we want this?
+                -- Blackholes stop our current thread and only resume after
+                -- they have been replaced with their result, thereby leading
+                -- to an additional element in the HeapMap we don't want.
+                -- Example for bad behaviour that would happen then:
+                -- λ> let xs = [1..42] :: [Int]
+                -- λ> let x = 17 :: Int
+                -- λ> let ys = [ y | y <- xs, y >= x ]
+
+      runCorrect updateObjects >>= \f -> f boxes
+
+      --postGUISync $ widgetQueueDraw canvas
+      --postGUISync $ widgetQueueDraw legendCanvas
+      react2
+
+#ifdef GRAPH_VIEW
+  where doSwitch = isGraphvizInstalled >>= \gvi -> if gvi
+          then modifyIORef visState (\s -> s {T.view = succN (T.view s), zoomRatio = 1, position = (0, 0)})
+          else putStrLn "Cannot switch view: Graphviz not installed"
+
+        succN GraphView = ListView
+        succN ListView = GraphView
+#else
+  where doSwitch = putStrLn "Cannot switch view: Graph view disabled at build"
+#endif
+#endif
+
 react :: (WidgetClass w1, WidgetClass w2) => w1 -> w2 -> IO b
-react canvas window = do
+react canvas legendCanvas = do
   -- Timeout used to handle ghci reloads (:r)
   -- Reloads cause the visSignal to be reinitialized, but takeMVar is still
   -- waiting for the old one.  This solution is not perfect, but it works for
@@ -338,15 +482,15 @@
   case mbSignal of
     Nothing -> do
       running <- readMVar visRunning
-      if running then react canvas window else
+      if running then react canvas legendCanvas else
         -- :r caused visRunning to be reset
         (do swapMVar visRunning True
             timeout signalTimeout (putMVar visSignal UpdateSignal)
-            react canvas window)
+            react canvas legendCanvas)
     Just signal -> do
       case signal of
         NewSignal x n  -> modifyMVar_ visBoxes (
-          \y -> if (x,n) `elem` y then return y else return $ y ++ [(x,n)])
+          \y -> return $ if (x,n) `elem` y then y else y ++ [(x,n)])
         ClearSignal    -> modifyMVar_ visBoxes (\_ -> return [])
         UpdateSignal   -> return ()
         SwitchSignal   -> doSwitch
@@ -368,7 +512,8 @@
       runCorrect updateObjects >>= \f -> f boxes
 
       postGUISync $ widgetQueueDraw canvas
-      react canvas window
+      postGUISync $ widgetQueueDraw legendCanvas
+      react canvas legendCanvas
 
 #ifdef GRAPH_VIEW
   where doSwitch = isGraphvizInstalled >>= \gvi -> if gvi
@@ -399,6 +544,117 @@
       newPos = (oldPosX * zoom, oldPosY * zoom)
 
   return newPos
+
+#ifdef FULL_WINDOW
+visMainThread :: IO ()
+visMainThread = do
+  initGUI
+
+  mainUIFile <- My.getDataFileName "data/main.ui"
+  builder <- builderNew
+  builderAddFromFile builder mainUIFile
+
+  let get :: forall cls . GObjectClass cls
+          => (GObject -> cls)
+          -> String
+          -> IO cls
+      get = builderGetObject builder
+
+  window       <- get castToWindow "window"
+  canvas       <- get castToDrawingArea "drawingarea"
+
+  saveDialog   <- get castToFileChooserDialog "savedialog"
+  aboutDialog  <- get castToAboutDialog "aboutdialog"
+
+  legendDialog <- get castToWindow "legenddialog"
+  legendCanvas <- get castToDrawingArea "legenddrawingarea"
+
+  newFilter "*.pdf" "PDF" saveDialog
+  newFilter "*.svg" "SVG" saveDialog
+  newFilter "*.ps" "PostScript" saveDialog
+  newFilter "*.png" "PNG" saveDialog
+
+  onResponse saveDialog $ fileSave saveDialog
+  onResponse aboutDialog $ const $ widgetHide aboutDialog
+
+  onDelete saveDialog   $ const $ widgetHide saveDialog   >> return True
+  onDelete aboutDialog  $ const $ widgetHide aboutDialog  >> return True
+  onDelete legendDialog $ const $ widgetHide legendDialog >> return True
+
+  get castToMenuItem "clear"  >>= \item -> onActivateLeaf item clear
+  get castToMenuItem "switch" >>= \item -> onActivateLeaf item switch
+  get castToMenuItem "update" >>= \item -> onActivateLeaf item update
+  get castToMenuItem "export" >>= \item -> onActivateLeaf item $ widgetShow saveDialog
+  get castToMenuItem "quit"   >>= \item -> onActivateLeaf item $ widgetDestroy window
+  get castToMenuItem "about"  >>= \item -> onActivateLeaf item $ widgetShow aboutDialog
+  get castToMenuItem "legend" >>= \item -> onActivateLeaf item $ widgetShow legendDialog
+
+  widgetModifyBg canvas StateNormal backgroundColor
+  widgetModifyBg legendCanvas StateNormal backgroundColor
+
+  welcomeSVG <- My.getDataFileName "data/welcome.svg" >>= svgNewFromFile
+
+  legendListSVG  <- My.getDataFileName "data/legend_list.svg" >>= svgNewFromFile
+  legendGraphSVG <- My.getDataFileName "data/legend_graph.svg" >>= svgNewFromFile
+
+  onExpose canvas $ const $ do
+    boxes <- readMVar visBoxes
+
+    if null boxes
+    then renderSVGScaled canvas welcomeSVG
+    else do
+      runCorrect redraw >>= \f -> f canvas
+      runCorrect move >>= \f -> f canvas
+      return True
+
+  onExpose legendCanvas $ const $ do
+    state <- readIORef visState
+    renderSVGScaled legendCanvas $ case T.view state of
+      ListView  -> legendListSVG
+      GraphView -> legendGraphSVG
+
+  setupGUI window canvas legendCanvas
+
+fileSave :: FileChooserDialog -> ResponseId -> IO ()
+fileSave fcdialog response = do
+  case response of
+    ResponseOk -> do Just filename <- fileChooserGetFilename fcdialog
+                     mbError <- export' filename
+                     case mbError of
+                       Nothing -> return ()
+                       Just error -> do
+                         errorDialog <- messageDialogNew Nothing [] MessageError ButtonsOk error
+                         widgetShow errorDialog
+                         onResponse errorDialog $ const $ widgetHide errorDialog
+                         return ()
+    _ -> return ()
+  widgetHide fcdialog
+
+newFilter :: FileChooserClass fc => String -> String -> fc -> IO ()
+newFilter filterString name dialog = do
+  filt <- fileFilterNew
+  fileFilterAddPattern filt filterString
+  fileFilterSetName filt $ name ++ " (" ++ filterString ++ ")"
+  fileChooserAddFilter dialog filt
+
+renderSVGScaled :: (WidgetClass w) => w -> SVG -> IO Bool
+renderSVGScaled canvas svg = do
+  E.Rectangle _ _ rw2 rh2 <- widgetGetAllocation canvas
+  win <- widgetGetDrawWindow canvas
+  renderWithDrawable win $ do
+    let (cx2, cy2) = svgGetSize svg
+
+        (rw,rh) = (fromIntegral rw2, fromIntegral rh2)
+        (cx,cy) = (fromIntegral cx2, fromIntegral cy2)
+
+        -- Proportional scaling
+        (sx,sy) = (min (rw/cx) (rh/cy), sx)
+        (ox,oy) = (rw/2 - sx*cx/2, rh/2 - sy*cy/2)
+
+    translate ox oy
+    scale sx sy
+    svgRender svg
+#endif
 
 -- Zoom into mouse, but only working from (0,0)
 -- newPos = ( oldPosX + x * zoomRatio s - x * newZoomRatio
diff --git a/src/GHC/Vis/Types.hs b/src/GHC/Vis/Types.hs
--- a/src/GHC/Vis/Types.hs
+++ b/src/GHC/Vis/Types.hs
@@ -28,6 +28,7 @@
 import Graphics.UI.Gtk hiding (Box, Signal, Point)
 import Graphics.Rendering.Cairo
 
+-- | A simple Point
 type Point = (Double, Double)
 
 -- | A function to draw a cairo drawing to a file.
@@ -83,6 +84,7 @@
   , heapMap' :: HeapMap
   }
 
+-- | The state of a printing operation
 type PrintState = MS.State PState
 
 -- | Simple representation of objects on the heap, so they can be arranged linearly
diff --git a/src/GHC/Vis/View/Graph/Parser.hs b/src/GHC/Vis/View/Graph/Parser.hs
--- a/src/GHC/Vis/View/Graph/Parser.hs
+++ b/src/GHC/Vis/View/Graph/Parser.hs
@@ -12,6 +12,8 @@
 )
 where
 
+import Data.List
+
 import Control.Monad
 
 import qualified Data.Text.Lazy as B
@@ -85,7 +87,7 @@
       mbEdges xs (p,c) = return $ map (\b -> (p, boxPos b)) (allPtrs c) ++ xs
 
       boxPos :: Box -> Maybe Int
-      boxPos b = lookup b $ zip (map fst rhm) [0..]
+      boxPos b = elemIndex b $ map fst rhm
 
       bcoChildren :: [Box] -> IO [Int]
       bcoChildren [] = return []
@@ -120,6 +122,7 @@
 defaultVis :: (Graph gr) => gr String String -> DotGraph Node
 defaultVis = graphToDot nonClusteredParams
   -- Somehow (X11Color Transparency) is white, use (RGBA 0 0 0 0) instead
+  -- Ordering OutEdges is not strong enough to force edge ordering, might not look good anyway
   { globalAttributes = [GraphAttrs [BgColor [RGBA 0 0 0 0], FontName fontName, FontSize graphFontSize]]
   , fmtNode = \ (_,l) -> [toLabel l, FontName fontName, FontSize nodeFontSize]
   --, fmtNode = \ (_,l) -> [toLabel l, FontName fontName, FontSize nodeFontSize, Style [SItem Filled []], FillColor [RGBA 255 255 255 255], Color [RGBA 0 0 0 255]]
diff --git a/src/GHC/Vis/View/List.hs b/src/GHC/Vis/View/List.hs
--- a/src/GHC/Vis/View/List.hs
+++ b/src/GHC/Vis/View/List.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE CPP, RankNTypes #-}
 {- |
    Module      : GHC.Vis.View.List
    Copyright   : (c) Dennis Felsing
@@ -8,6 +8,13 @@
  -}
 module GHC.Vis.View.List (
   export,
+
+#ifdef SDL_WINDOW
+  getState,
+  draw,
+  updateBoundingBoxes,
+#endif
+
   redraw,
   click,
   move,
@@ -91,6 +98,15 @@
 
   boundingBoxes <- render canvas (draw s rw2 rh2)
   modifyIORef state (\s' -> s' {bounds = boundingBoxes})
+
+#ifdef SDL_WINDOW
+getState :: IO State
+getState = readIORef state
+
+updateBoundingBoxes :: [(String, Rectangle)] -> IO ()
+updateBoundingBoxes boundingBoxes = do
+  modifyIORef state (\s' -> s' {bounds = boundingBoxes})
+#endif
 
 -- | Export the visualization to an SVG file
 export :: DrawFunction -> String -> IO ()
