diff --git a/README b/README
--- a/README
+++ b/README
@@ -9,10 +9,13 @@
 be installed.
 
 There is an
-[entry](?t=hsc3-texts&l=lhs/hsc3-tutorial.lhs#ugen-graph-drawings)
+[entry](?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs#ugen-graph-drawings)
 at the [hsc3-texts](?t=hsc3-texts)
-[tutorial](?t=hsc3-texts&l=lhs/hsc3-tutorial.lhs).
+[tutorial](?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs).
 
+The default [SVG][svg] viewer is [rsvg-view-3][rsvg], which is in the
+debian package `librsvg2-bin`.
+
 [hs]: http://haskell.org/
 [sc3]: http://audiosynth.com/
 [graphviz]: http://graphviz.org/
@@ -20,8 +23,10 @@
 [hsc3-dot]: http://rd.slavepianos.org/?t=hsc3-dot
 [hsc3-texts]: http://rd.slavepianos.org/?t=hsc3-texts
 [hsc3]: http://rd.slavepianos.org/?t=hsc3
+[svg]: http://www.w3.org/Graphics/SVG/
+[rsvg]: http://wiki.gnome.org/LibRsvg
 
-© [rohan drape][rd], 2006-2013, [gpl]
+© [rohan drape][rd], 2006-2014, [gpl]
 
 [rd]: http://rd.slavepianos.org/
 [gpl]: http://gnu.org/copyleft/
diff --git a/Sound/SC3/UGen/Dot.hs b/Sound/SC3/UGen/Dot.hs
--- a/Sound/SC3/UGen/Dot.hs
+++ b/Sound/SC3/UGen/Dot.hs
@@ -1,94 +1,125 @@
--- | Module to provide graph drawing of unit generator graphs.  The
---   output is in the form of a dot graph, which can be layed out
---   using the @graphviz@ tools, see <http://graphviz.org>.
---
--- > import Sound.SC3.ID
--- > import Sound.SC3.UGen.Dot
---
--- Simple a-rate only graph.
---
--- > draw (out 0 (sinOsc AR 440 0 * 0.1))
---
--- As above, but using the /record/ interface.
---
--- > import Sound.SC3.UGen.Dot.Type
---
--- > let o = dot_options {use_tables = False}
--- > in draw_with_opt o (out 0 (sinOsc AR 440 0 * 0.1))
---
--- With k-rate subgraph.
---
--- > let f = lfSaw KR 1 0 * 220 + 440
--- > in draw (out 0 (sinOsc AR f 0 * 0.1))
---
--- With k-rate & i-rate subgraphs
---
--- > let {l = rand 'a' 200 400
--- >     ;m = rand 'b' l 600
--- >     ;a = rand 'c' 500 900
--- >     ;f = lfSaw KR 1 0 * m + a}
--- > in draw (out 0 (sinOsc AR f 0 * 0.1))
---
--- With control input
---
--- > let f = control KR "freq" 440
--- > in draw (out 0 (sinOsc AR f 0 * 0.1))
---
--- As above but with inlined controls.
---
--- > let {f = control KR "freq" 440
--- >     ;o = dot_options {inline_controls = True}}
--- > in draw_with_opt o (out 0 (sinOsc AR f 0 * 0.1))
---
--- As above but without control name label.
---
--- > let {o = dot_options {inline_controls = True
--- >                      ,display_control_names = False}
--- >     ;f = control KR "freq" 440}
--- > in draw_with_opt o (out 0 (sinOsc AR f 0 * 0.1))
---
--- With multiple channel expansion.
---
--- > let f = mce2 440 220
--- > in draw (out 0 (sinOsc AR f 0 * 0.1))
---
--- With multiple root graph.
---
--- > let {f = mce2 440 220 + in' 2 KR 0
--- >     ;o1 = sinOsc AR f 0 * 0.1
--- >     ;o2 = sinOsc KR (mce2 0.25 0.35) 0 * mce2 10 15 }
--- > in draw (mrg [out 0 o1,out 0 o2])
---
--- With multiple channel UGen.
---
--- > draw (out 0 (pan2 (sinOsc AR 440 0 * 0.1) 0 1))
---
--- With reserved labels (ie. <,>,&), and fixed size graph (size in inches).
---
--- > let o = svg_options {graph_size = Just (1,4)}
--- > in draw_with_opt o (out 0 (sinOsc AR 440 0 >* 0))
+{- | Module to provide graph drawing of unit generator graphs.  The
+output is in the form of a dot graph, which can be layed out using the
+@graphviz@ tools, see <http://graphviz.org>.
+
+> import Sound.SC3.ID
+> import Sound.SC3.UGen.Dot
+
+Simple a-rate only graph.
+
+> draw (out 0 (sinOsc AR 440 0 * 0.1))
+
+<<dot/01.svg>>
+
+As above, but using the /record/ interface.
+
+> import Sound.SC3.UGen.Dot.Type
+
+> let o = dot_options {use_tables = False}
+> in draw_with_opt o (out 0 (sinOsc AR 440 0 * 0.1))
+
+<<dot/02.svg>>
+
+With k-rate subgraph.
+
+> let f = lfSaw KR 1 0 * 220 + 440
+> in draw (out 0 (sinOsc AR f 0 * 0.1))
+
+<<dot/03.svg>>
+
+With k-rate & i-rate subgraphs
+
+> let {l = rand 'a' 200 400
+>     ;m = rand 'b' l 600
+>     ;a = rand 'c' 500 900
+>     ;f = lfSaw KR 1 0 * m + a}
+> in draw (out 0 (sinOsc AR f 0 * 0.1))
+
+<<dot/04.svg>>
+
+With control input
+
+> let f = control KR "freq" 440
+> in draw (out 0 (sinOsc AR f 0 * 0.1))
+
+<<dot/05.svg>>
+
+As above but with inlined controls.
+
+> let {f = control KR "freq" 440
+>     ;o = dot_options {inline_controls = True}}
+> in draw_with_opt o (out 0 (sinOsc AR f 0 * 0.1))
+
+<<dot/06.svg>>
+
+As above but without control name label.
+
+> let {o = dot_options {inline_controls = True
+>                      ,display_control_names = False}
+>     ;f = control KR "freq" 440}
+> in draw_with_opt o (out 0 (sinOsc AR f 0 * 0.1))
+
+<<dot/07.svg>>
+
+With multiple channel expansion.
+
+> let f = mce2 440 220
+> in draw (out 0 (sinOsc AR f 0 * 0.1))
+
+<<dot/08.svg>>
+
+With multiple root graph.
+
+> let {f = mce2 440 220 + in' 2 KR 0
+>     ;o1 = sinOsc AR f 0 * 0.1
+>     ;o2 = sinOsc KR (mce2 0.25 0.35) 0 * mce2 10 15 }
+> in draw (mrg [out 0 o1,out 0 o2])
+
+<<dot/09.svg>>
+
+With multiple channel UGen.
+
+> draw (out 0 (pan2 (sinOsc AR 440 0 * 0.1) 0 1))
+
+<<dot/10.svg>>
+
+With reserved labels (ie. <,>,&), and fixed size graph (size in inches).
+
+> let o = svg_options {graph_size = Just (1,4)}
+> in draw_with_opt o (out 0 (sinOsc AR 440 0 >* 0))
+
+<<dot/11.svg>>
+
+-}
 module Sound.SC3.UGen.Dot where
 
 import Sound.SC3.UGen.Dot.Class
 import Sound.SC3.UGen.Dot.Internal
 import Sound.SC3.UGen.Dot.Type
 
+-- | 'dot_with_opt' of 'dot_options'.
 dot :: Drawable a => a -> String
 dot = dot_with_opt dot_options
 
+-- | 'dot_with_opt' of 'svg_options'.
 dot_svg :: Drawable a => a -> String
 dot_svg = dot_with_opt svg_options
 
+-- | 'view_with' of 'dot_with_opt'.
 draw_with_opt :: Drawable a => Dot_Options -> a -> IO ()
 draw_with_opt o x = view_with o (dot_with_opt o x)
 
+-- | 'draw_with_opt' of 'dot_options'.
 draw :: Drawable a => a -> IO ()
 draw = draw_with_opt dot_options
 
+-- | 'draw_with_opt' of 'svg_options'.
 draw_svg :: Drawable a => a -> IO ()
 draw_svg = draw_with_opt svg_options
 
 -- | Default @dot@ format 'Dot_Options'.
+--
+-- > std_style dot_options
 dot_options :: Dot_Options
 dot_options = Dot_Options
     {use_tables = True
@@ -98,10 +129,11 @@
     ,output_file_name = "hsc3"
     ,fix_edge_location = False
     ,numeric_precision = 3
+    ,indicate_precision = False
     ,inline_controls = False
     ,display_control_names = True
     ,dot_viewer = "dotty"
-    ,svg_viewer = "rsvg-view"
+    ,svg_viewer = "rsvg-view-3"
     ,font_name = "Courier"
     ,font_size = 12
     ,graph_size = Nothing
diff --git a/Sound/SC3/UGen/Dot/Class.hs b/Sound/SC3/UGen/Dot/Class.hs
--- a/Sound/SC3/UGen/Dot/Class.hs
+++ b/Sound/SC3/UGen/Dot/Class.hs
@@ -1,6 +1,8 @@
+-- | Typeclass for 'Drawable' values.
 module Sound.SC3.UGen.Dot.Class where
 
 import Sound.SC3 as S
+import Sound.SC3.UGen.Graph as S
 import Sound.SC3.UGen.Dot.Internal
 import Sound.SC3.UGen.Dot.Type
 
@@ -10,11 +12,14 @@
 class Drawable a where
     dot_with_opt :: Dot_Options -> a -> String
 
+-- | 'S.Graph's are 'Drawable', by 'dotGraph'.
 instance Drawable S.Graph where
     dot_with_opt = dotGraph
 
+-- | 'S.UGens's are 'Drawable', by 'S.ugen_to_graph'.
 instance Drawable S.UGen where
-    dot_with_opt o = dotGraph o . S.synth
+    dot_with_opt o = dotGraph o . S.ugen_to_graph
 
+-- | 'S.Synthdef's are 'Drawable', by 'S.synthdefGraph'.
 instance Drawable S.Synthdef where
     dot_with_opt o = dotGraph o . S.synthdefGraph
diff --git a/Sound/SC3/UGen/Dot/Internal.hs b/Sound/SC3/UGen/Dot/Internal.hs
--- a/Sound/SC3/UGen/Dot/Internal.hs
+++ b/Sound/SC3/UGen/Dot/Internal.hs
@@ -1,27 +1,77 @@
+-- | Implementation of @Dot@ language writer.
 module Sound.SC3.UGen.Dot.Internal where
 
-import Control.Monad
-import Data.List
-import Data.Maybe
-import qualified Sound.SC3 as S {- hsc3 -}
-import qualified Sound.SC3.Server.Synthdef.Internal as S
-import Sound.SC3.UGen.Dot.Type {- hsc3-dot -}
-import System.IO
-import System.Cmd {- process -}
+import Control.Monad {- base -}
+import Data.Char {- base -}
+import Data.List {- base -}
+import Data.Maybe {- base -}
 import System.Directory {- directory -}
 import System.FilePath {- filepath -}
-import Text.Printf
+import System.Process {- process -}
+import Text.Printf {- base -}
 
+import qualified Sound.SC3 as S {- hsc3 -}
+import qualified Sound.SC3.UGen.Graph as S {- hsc3 -}
+import Sound.SC3.UGen.Dot.Type {- hsc3-dot -}
+
+-- | Bracket with elements.
+bracket1 :: (a,a) -> [a] -> [a]
+bracket1 (l,r) x = [l] ++ x ++ [r]
+
+-- | Bracket with lists.
+bracket :: ([a],[a]) -> [a] -> [a]
+bracket (l,r) x = l ++ x ++ r
+
+-- | 'bracket' with double quotes.
+string_pp :: String -> String
+string_pp = bracket1 ('"','"')
+
+-- | 'bracket' with double quotes and braces.
+label_pp :: String -> String
+label_pp = bracket ("\"{","}\"")
+
+-- | Key value pair.
+type Attr = (String,String)
+
+-- | Dot attributes are written @key=value@.
+attr_pp :: Attr -> String
+attr_pp (k,v) = k ++ "=" ++ v
+
+-- | If @value@ is 'null' then 'Nothing'.
+attr_pp_maybe :: Attr -> Maybe String
+attr_pp_maybe (k,v) = if null v then Nothing else Just (attr_pp (k,v))
+
+-- | Attribute lists are in square brackets and comma seperated.
+attr_list_pp :: [Attr] -> String
+attr_list_pp = bracket1 ('[',']') . intercalate "," . mapMaybe attr_pp_maybe
+
+-- | Attribute sets are named and semi-colon terminated.
+attr_set_pp :: String -> [Attr] -> String
+attr_set_pp nm attr = concat [nm," ",attr_list_pp attr,";"]
+
+-- | Type specialised 'show'.
+int_pp :: Int -> String
+int_pp = show
+
+-- | Size is given as @(width,height)@.
+size_pp :: (Double,Double) -> String
+size_pp (x,y) = printf "\"%f,%f\"" x y
+
+-- | 'toLower' of 'show'.
+bool_pp :: Bool -> String
+bool_pp = map toLower . show
+
+-- | Basic attribute sets given 'Dot_Options'.
 std_style :: Dot_Options -> [String]
 std_style o =
-    let s = if use_splines o then "true" else "false"
-        sz_f (x,y) = printf ",size=\"%f,%f\"" x y
-    in [printf "graph [splines=%s%s];" s (maybe "" sz_f (graph_size o))
-       ,printf "node [fontsize=%d" (font_size o)
-       ,printf "     ,fontname=\"%s\"];" (font_name o)
-       ,"edge [arrowhead=box,arrowsize=0.25];"]
+    [attr_set_pp "graph" [("splines",bool_pp (use_splines o))
+                         ,("size",maybe "" size_pp (graph_size o))]
+    ,attr_set_pp "node" [("fontsize",int_pp (font_size o))
+                        ,("fontname",string_pp (font_name o))]
+    ,attr_set_pp "edge" [("arrowhead","box")
+                        ,("arrowsize","0.25")]]
 
--- Generate dot representation of the provided unit generator graph.
+-- | Generate dot representation of the provided unit generator graph.
 dotGraph :: Dot_Options -> S.Graph -> String
 dotGraph o g =
     let (S.Graph _ _ ks us) = g
@@ -35,6 +85,7 @@
                     ,["}"]]
     in unlines (filter (not.null) ls)
 
+-- | View @dot@ graph according to 'Dot_Options'.
 view_with :: Dot_Options -> String -> IO ()
 view_with o x = do
   v <- get_viewer o
@@ -48,34 +99,44 @@
                  SVG -> f_svg
                  SVG_GZ -> f_svg_gz
       gen_svg = rawSystem "dot" ["-T","svg",f_dot,"-o",f_svg]
-  withFile f_dot WriteMode (`hPutStr` x)
+  writeFile f_dot x
   when (output_format o `elem` [SVG,SVG_GZ]) (void gen_svg)
   when (output_format o == SVG_GZ) (void (rawSystem "gzip" ["-f",f_svg]))
   when (False && output_format o /= DOT) (removeFile f_dot)
   _ <- rawSystem v [f_view]
   return ()
 
+-- | Input port.
 data IP = IP_Label String
         | IP_Port String Char Int
-        | IP_Const (Maybe String,String,Int) Float
+        | IP_Const (Maybe String,String,Int) S.Sample
 
--- > drop_while_right f = right_variant (dropWhile f)
+-- | 'reverse' of /f/ of 'reverse'.
+--
+-- > let drop_while_right f = right_variant (dropWhile f)
+-- > in drop_while_right isUpper "abcDEF" == "abc"
 right_variant :: ([a] -> [b]) -> [a] -> [b]
 right_variant f = reverse . f . reverse
 
--- > map (limit_precision_p 3) [1,1.25,0.05,pi*1e8,1e9]
-limit_precision_p :: Int -> Float -> String
-limit_precision_p n c =
+-- | Limited precision PP for 'S.Sample', no scientific notation.
+--
+-- > map (limit_precision_p True 2) [1,1.25,1.12345,0,0.05,pi*1e8,1e9]
+limit_precision_p :: Bool -> Int -> S.Sample -> String
+limit_precision_p r n c =
     let i = printf "%.*f" n c
-    in right_variant (dropWhile (== '.') . dropWhile (== '0')) i
+    in if r
+       then i
+       else right_variant (dropWhile (== '.') . dropWhile (== '0')) i
 
+-- | Limited precision PP for 'S.Sample', with scientific notation.
+--
 -- > map (limit_precision_e 3) [1,1.25,0.05,pi*1e8,1e9]
-limit_precision_e :: Int -> Float -> String
+limit_precision_e :: Int -> S.Sample -> String
 limit_precision_e n c =
     let (i,_:j) = break (== '.') (show c)
         (k,l) = break (== 'e') j
         f :: String -> Int
-        f m = round ((read (take (n + 1) m) :: Float) / 10)
+        f m = round ((read (take (n + 1) m) :: S.Sample) / 10)
         k' = if length k > n
              then show (f k)
              else k
@@ -83,16 +144,20 @@
             then l
             else "." ++ k' ++ l
 
--- > map (limit_precision 3) [1,1.25,0.05,pi*1e8,1e9]
-limit_precision :: Int -> Float -> String
-limit_precision n c =
-    if c < 1e-3 || c > 1e6
+-- | Variant selecting scientific notation more cautiously than haskells default PP.
+--
+-- > map (limit_precision True 3) [1,1.25,0.05,0,pi*1e8,1e9]
+limit_precision :: Bool -> Int -> S.Sample -> String
+limit_precision r n c =
+    if c /= 0 && (c < (10 ** fromIntegral (- n)) || c > 1e6)
     then limit_precision_e n c
-    else limit_precision_p n c
+    else limit_precision_p r n c
 
-limit_precision_o :: Dot_Options -> Float -> String
-limit_precision_o o = limit_precision (numeric_precision o)
+-- | Variant of 'limit_precision' reading parameters from 'Dot_Options'.
+limit_precision_o :: Dot_Options -> S.Sample -> String
+limit_precision_o o = limit_precision (indicate_precision o) (numeric_precision o)
 
+-- | IP in record form.
 ip_record :: Dot_Options -> IP -> String
 ip_record o i =
     case i of
@@ -100,12 +165,14 @@
       IP_Port _ d n -> '<' : d : '_' : show n ++ ">"
       IP_Const _ n -> limit_precision_o o n
 
+-- | Very rudimentary HTML escaping.
 escape_html :: String -> String
 escape_html =
     let t = [('<',"&lt;"),('>',"&gt;"),('&',"&amp;")]
         f c = fromMaybe [c] (lookup c t)
     in concatMap f
 
+-- | 'IP' as @HTML@ string.
 ip_html :: Dot_Options -> IP -> String
 ip_html o i =
     case i of
@@ -124,8 +191,9 @@
     let f l = concat ["{",g (map (ip_record o) l),"}"]
         g = intercalate "|"
         lbl = g [f upr,f lwr]
-        f_str = "%s [shape=\"record\",color=\"%s\",label=\"{%s}\"];"
-    in printf f_str nm clr lbl
+    in attr_set_pp nm [("shape",string_pp "record")
+                      ,("color",string_pp clr)
+                      ,("label",label_pp lbl)]
 
 table :: Dot_Options -> String -> String -> ([IP],[IP]) -> String
 table o lbl clr (upr,lwr) =
@@ -134,12 +202,13 @@
         f p l = if null l
                 then ""
                 else concat ["<TR>",p ++ concatMap (ip_html o) l,"</TR>"]
-    in concat [lbl
-              ,"[shape=\"plaintext\","
-              ,"color=\"",clr,"\","
-              ,"label=<<TABLE BORDER=\"0\" CELLBORDER=\"1\">"
-              ,f [] upr ++ f e lwr
-              ,"</TABLE>>];"]
+    in attr_set_pp
+       lbl
+       [("shape",string_pp "plaintext")
+       ,("color",string_pp clr)
+       ,("label",concat ["<<TABLE BORDER=\"0\" CELLBORDER=\"1\">"
+                        ,f [] upr ++ f e lwr
+                        ,"</TABLE>>"])]
 
 dot_edge :: Dot_Options -> S.Graph -> S.Edge -> String
 dot_edge o g (l,S.ToPort ri rn) =
@@ -191,29 +260,32 @@
        then ""
        else f lbl clr (upr,lwr)
 
+dot_node_k_color :: S.Node -> Attr
+dot_node_k_color k =
+    let c = if S.node_k_type k == S.K_TR
+            then "cyan"
+            else S.rate_color (S.node_k_rate k)
+    in ("color",string_pp c)
+
 dot_node_k_rec :: Dot_Options -> S.Node -> String
 dot_node_k_rec o u =
-    concat [S.node_label u
-           ,"[shape=\"rect\",color=\""
-           ,S.rate_color (S.node_k_rate u)
-           ,"\",label=\""
-           ,S.node_k_name u
-           ,":"
-           ,limit_precision_o o (S.node_k_default u)
-           ,"\"];"]
+    attr_set_pp
+    (S.node_label u)
+    [("shape",string_pp "rect")
+    ,dot_node_k_color u
+    ,("label",string_pp (S.node_k_name u ++ ":" ++ limit_precision_o o (S.node_k_default u)))]
 
 dot_node_k_html :: Dot_Options -> S.Node -> String
 dot_node_k_html o u =
-    concat [S.node_label u
-           ,"[shape=\"plaintext\",color=\""
-           ,S.rate_color (S.node_k_rate u)
-           ,"\",label=<<TABLE BORDER=\"0\" CELLBORDER=\"1\">"
-           ,"<TR><TD PORT=\"o_0\">"
-           ,S.node_k_name u
-           ,":"
-           ,limit_precision_o o (S.node_k_default u)
-           ,"</TD></TR>"
-           ,"</TABLE>>];"]
+    attr_set_pp
+    (S.node_label u)
+    [("shape",string_pp "plaintext")
+    ,dot_node_k_color u
+    ,("label",concat ["<<TABLE BORDER=\"0\" CELLBORDER=\"1\">"
+                     ,"<TR><TD PORT=\"o_0\">"
+                     ,S.node_k_name u,":",limit_precision_o o (S.node_k_default u)
+                     ,"</TD></TR>"
+                     ,"</TABLE>>"])]
 
 dot_node_k :: Dot_Options -> S.Node -> String
 dot_node_k o =
diff --git a/Sound/SC3/UGen/Dot/Type.hs b/Sound/SC3/UGen/Dot/Type.hs
--- a/Sound/SC3/UGen/Dot/Type.hs
+++ b/Sound/SC3/UGen/Dot/Type.hs
@@ -1,3 +1,4 @@
+-- | Dot types.
 module Sound.SC3.UGen.Dot.Type where
 
 -- | Dot output formats.
@@ -10,8 +11,9 @@
     ,output_format :: Dot_Format -- ^ Select viewer format.
     ,fix_edge_location :: Bool -- ^ Select output port edge location.
     ,numeric_precision :: Int -- ^ Printing precision for constants.
-    ,inline_controls :: Bool
-    ,display_control_names :: Bool
+    ,indicate_precision :: Bool -- ^ Print to precision even if not required
+    ,inline_controls :: Bool -- ^ Draw controls within UGen input port slots.
+    ,display_control_names :: Bool -- ^ Elide control names if 'False'.
     ,output_directory :: FilePath -- ^ File name (without suffix).
     ,output_file_name :: String -- ^ File name (without suffix).
     ,dot_viewer :: String -- ^ @dot@ file viewer (ie. "dotty")
diff --git a/dot/01.svg b/dot/01.svg
new file mode 100644
--- /dev/null
+++ b/dot/01.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="125pt" height="188pt"
+ viewBox="0.00 0.00 125.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 122,-184 122,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 108,-102 108,-86 86,-86"/>
+<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="86,-78 86,-84 108,-84 108,-78 86,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
+<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
+<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="55,-10 55,-26 78,-26 78,-10 55,-10"/>
+<text text-anchor="start" x="58.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="80,-10 80,-26 92,-26 92,-10 80,-10"/>
+<text text-anchor="start" x="83" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="94,-10 94,-26 100,-26 100,-10 94,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M97,-78C97,-78 97,-38.8953 97,-28.5081"/>
+<polygon fill="black" stroke="black" points="96,-26 98,-26 98.0001,-28 96.0001,-28 96,-26"/>
+<polyline fill="none" stroke="black" points="97.0001,-28 97.0001,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/02.svg b/dot/02.svg
new file mode 100644
--- /dev/null
+++ b/dot/02.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="119pt" height="200pt"
+ viewBox="0.00 0.00 119.00 200.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 196)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-196 116,-196 116,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="9,-153 9,-191 111,-191 111,-153 9,-153"/>
+<text text-anchor="middle" x="33" y="-178.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polyline fill="none" stroke="black" points="57,-172 57,-191 "/>
+<text text-anchor="middle" x="73" y="-178.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polyline fill="none" stroke="black" points="89,-172 89,-191 "/>
+<text text-anchor="middle" x="100" y="-178.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polyline fill="none" stroke="black" points="9,-172 111,-172 "/>
+<text text-anchor="middle" x="60" y="-159.9" font-family="Courier,monospace" font-size="9.00"> </text>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="27,-77 27,-115 103,-115 103,-77 27,-77"/>
+<text text-anchor="middle" x="38" y="-102.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polyline fill="none" stroke="black" points="49,-96 49,-115 "/>
+<text text-anchor="middle" x="60" y="-102.9" font-family="Courier,monospace" font-size="9.00"> </text>
+<polyline fill="none" stroke="black" points="71,-96 71,-115 "/>
+<text text-anchor="middle" x="87" y="-102.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polyline fill="none" stroke="black" points="27,-96 103,-96 "/>
+<text text-anchor="middle" x="65" y="-83.9" font-family="Courier,monospace" font-size="9.00"> </text>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M60,-153C60,-153 60,-126.94 60,-117.982"/>
+<polygon fill="black" stroke="black" points="59,-115 61,-115 61.0001,-117 59.0001,-117 59,-115"/>
+<polyline fill="none" stroke="black" points="60.0001,-117 60.0001,-117.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="0,-1 0,-39 76,-39 76,-1 0,-1"/>
+<text text-anchor="middle" x="16" y="-26.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polyline fill="none" stroke="black" points="32,-20 32,-39 "/>
+<text text-anchor="middle" x="43" y="-26.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polyline fill="none" stroke="black" points="54,-20 54,-39 "/>
+<text text-anchor="middle" x="65" y="-26.9" font-family="Courier,monospace" font-size="9.00"> </text>
+<polyline fill="none" stroke="black" points="0,-20 76,-20 "/>
+<text text-anchor="middle" x="38" y="-7.9" font-family="Courier,monospace" font-size="9.00"> </text>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M65,-77C65,-77 65,-50.9399 65,-41.9818"/>
+<polygon fill="black" stroke="black" points="64,-39 66,-39 66.0001,-41 64.0001,-41 64,-39"/>
+<polyline fill="none" stroke="black" points="65.0001,-41 65.0001,-41.5 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/03.svg b/dot/03.svg
new file mode 100644
--- /dev/null
+++ b/dot/03.svg
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="153pt" height="404pt"
+ viewBox="0.00 0.00 153.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-400 150,-400 150,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="blue" points="10,-374 10,-390 44,-390 44,-374 10,-374"/>
+<text text-anchor="start" x="13.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">LFSaw</text>
+<polygon fill="none" stroke="blue" points="46,-374 46,-390 58,-390 58,-374 46,-374"/>
+<text text-anchor="start" x="49" y="-379.9" font-family="Courier,monospace" font-size="9.00">1</text>
+<polygon fill="none" stroke="blue" points="60,-374 60,-390 72,-390 72,-374 60,-374"/>
+<text text-anchor="start" x="63" y="-379.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="60,-366 60,-372 72,-372 72,-366 60,-366"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="blue" points="48,-302 48,-318 61,-318 61,-302 48,-302"/>
+<text text-anchor="start" x="51.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="63,-302 63,-318 69,-318 69,-302 63,-302"/>
+<polygon fill="none" stroke="blue" points="71,-302 71,-318 93,-318 93,-302 71,-302"/>
+<text text-anchor="start" x="74" y="-307.9" font-family="Courier,monospace" font-size="9.00">220</text>
+<polygon fill="none" stroke="blue" points="71,-294 71,-300 93,-300 93,-294 71,-294"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M66,-366C66,-366 66,-330.551 66,-320.581"/>
+<polygon fill="black" stroke="black" points="65,-318 67,-318 67.0001,-320 65.0001,-320 65,-318"/>
+<polyline fill="none" stroke="black" points="66.0001,-320 66.0001,-320.5 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="blue" points="64,-230 64,-246 77,-246 77,-230 64,-230"/>
+<text text-anchor="start" x="67.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="79,-230 79,-246 85,-246 85,-230 79,-230"/>
+<polygon fill="none" stroke="blue" points="87,-230 87,-246 109,-246 109,-230 87,-230"/>
+<text text-anchor="start" x="90" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="blue" points="87,-222 87,-228 109,-228 109,-222 87,-222"/>
+</g>
+<!-- u_4&#45;&gt;u_6 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_6:i_0</title>
+<path fill="none" stroke="black" d="M82,-294C82,-294 82,-258.551 82,-248.581"/>
+<polygon fill="black" stroke="black" points="81,-246 83,-246 83.0001,-248 81.0001,-248 81,-246"/>
+<polyline fill="none" stroke="black" points="82.0001,-248 82.0001,-248.5 "/>
+</g>
+<!-- u_7 -->
+<g id="node4" class="node"><title>u_7</title>
+<polygon fill="none" stroke="black" points="54,-158 54,-174 93,-174 93,-158 54,-158"/>
+<text text-anchor="start" x="57.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="95,-158 95,-174 101,-174 101,-158 95,-158"/>
+<polygon fill="none" stroke="black" points="103,-158 103,-174 115,-174 115,-158 103,-158"/>
+<text text-anchor="start" x="106" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="103,-150 103,-156 115,-156 115,-150 103,-150"/>
+</g>
+<!-- u_6&#45;&gt;u_7 -->
+<g id="edge6" class="edge"><title>u_6:o_0&#45;&gt;u_7:i_0</title>
+<path fill="none" stroke="black" d="M98,-222C98,-222 98,-186.551 98,-176.581"/>
+<polygon fill="black" stroke="black" points="97,-174 99,-174 99.0001,-176 97.0001,-176 97,-174"/>
+<polyline fill="none" stroke="black" points="98.0001,-176 98.0001,-176.5 "/>
+</g>
+<!-- u_9 -->
+<g id="node5" class="node"><title>u_9</title>
+<polygon fill="none" stroke="black" points="91,-86 91,-102 104,-102 104,-86 91,-86"/>
+<text text-anchor="start" x="94.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="106,-86 106,-102 112,-102 112,-86 106,-86"/>
+<polygon fill="none" stroke="black" points="114,-86 114,-102 136,-102 136,-86 114,-86"/>
+<text text-anchor="start" x="117" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="114,-78 114,-84 136,-84 136,-78 114,-78"/>
+</g>
+<!-- u_7&#45;&gt;u_9 -->
+<g id="edge8" class="edge"><title>u_7:o_0&#45;&gt;u_9:i_0</title>
+<path fill="none" stroke="black" d="M109,-150C109,-150 109,-114.551 109,-104.581"/>
+<polygon fill="black" stroke="black" points="108,-102 110,-102 110,-104 108,-104 108,-102"/>
+<polyline fill="none" stroke="black" points="109,-104 109,-104.5 "/>
+</g>
+<!-- u_10 -->
+<g id="node6" class="node"><title>u_10</title>
+<polygon fill="none" stroke="black" points="83,-10 83,-26 106,-26 106,-10 83,-10"/>
+<text text-anchor="start" x="86.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="108,-10 108,-26 120,-26 120,-10 108,-10"/>
+<text text-anchor="start" x="111" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="122,-10 122,-26 128,-26 128,-10 122,-10"/>
+</g>
+<!-- u_9&#45;&gt;u_10 -->
+<g id="edge10" class="edge"><title>u_9:o_0&#45;&gt;u_10:i_1</title>
+<path fill="none" stroke="black" d="M125,-78C125,-78 125,-38.8953 125,-28.5081"/>
+<polygon fill="black" stroke="black" points="124,-26 126,-26 126,-28 124,-28 124,-26"/>
+<polyline fill="none" stroke="black" points="125,-28 125,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/04.svg b/dot/04.svg
new file mode 100644
--- /dev/null
+++ b/dot/04.svg
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="254pt" height="476pt"
+ viewBox="0.00 0.00 254.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-472 251,-472 251,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="blue" points="10,-374 10,-390 44,-390 44,-374 10,-374"/>
+<text text-anchor="start" x="13.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">LFSaw</text>
+<polygon fill="none" stroke="blue" points="46,-374 46,-390 58,-390 58,-374 46,-374"/>
+<text text-anchor="start" x="49" y="-379.9" font-family="Courier,monospace" font-size="9.00">1</text>
+<polygon fill="none" stroke="blue" points="60,-374 60,-390 72,-390 72,-374 60,-374"/>
+<text text-anchor="start" x="63" y="-379.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="60,-366 60,-372 72,-372 72,-366 60,-366"/>
+</g>
+<!-- u_8 -->
+<g id="node4" class="node"><title>u_8</title>
+<polygon fill="none" stroke="blue" points="91,-302 91,-318 104,-318 104,-302 91,-302"/>
+<text text-anchor="start" x="94.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="106,-302 106,-318 112,-318 112,-302 106,-302"/>
+<polygon fill="none" stroke="blue" points="114,-302 114,-318 120,-318 120,-302 114,-302"/>
+<polygon fill="none" stroke="blue" points="114,-294 114,-300 120,-300 120,-294 114,-294"/>
+</g>
+<!-- u_2&#45;&gt;u_8 -->
+<g id="edge4" class="edge"><title>u_2:o_0&#45;&gt;u_8:i_0</title>
+<path fill="none" stroke="black" d="M73,-369C73,-369 100.562,-329.953 107.453,-320.191"/>
+<polygon fill="black" stroke="black" points="108.183,-317.423 109.817,-318.577 108.664,-320.211 107.03,-319.057 108.183,-317.423"/>
+<polyline fill="none" stroke="black" points="107.847,-319.634 107.558,-320.042 "/>
+</g>
+<!-- u_5 -->
+<g id="node2" class="node"><title>u_5</title>
+<polygon fill="none" stroke="yellow" points="78,-446 78,-462 107,-462 107,-446 78,-446"/>
+<text text-anchor="start" x="81.5" y="-451.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
+<polygon fill="none" stroke="yellow" points="109,-446 109,-462 131,-462 131,-446 109,-446"/>
+<text text-anchor="start" x="112" y="-451.9" font-family="Courier,monospace" font-size="9.00">200</text>
+<polygon fill="none" stroke="yellow" points="133,-446 133,-462 155,-462 155,-446 133,-446"/>
+<text text-anchor="start" x="136" y="-451.9" font-family="Courier,monospace" font-size="9.00">400</text>
+<polygon fill="none" stroke="yellow" points="133,-438 133,-444 155,-444 155,-438 133,-438"/>
+</g>
+<!-- u_7 -->
+<g id="node3" class="node"><title>u_7</title>
+<polygon fill="none" stroke="yellow" points="110,-374 110,-390 139,-390 139,-374 110,-374"/>
+<text text-anchor="start" x="113.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
+<polygon fill="none" stroke="yellow" points="141,-374 141,-390 147,-390 147,-374 141,-374"/>
+<polygon fill="none" stroke="yellow" points="149,-374 149,-390 171,-390 171,-374 149,-374"/>
+<text text-anchor="start" x="152" y="-379.9" font-family="Courier,monospace" font-size="9.00">600</text>
+<polygon fill="none" stroke="yellow" points="149,-366 149,-372 171,-372 171,-366 149,-366"/>
+</g>
+<!-- u_5&#45;&gt;u_7 -->
+<g id="edge2" class="edge"><title>u_5:o_0&#45;&gt;u_7:i_0</title>
+<path fill="none" stroke="black" d="M144,-438C144,-438 144,-402.551 144,-392.581"/>
+<polygon fill="black" stroke="black" points="143,-390 145,-390 145,-392 143,-392 143,-390"/>
+<polyline fill="none" stroke="black" points="144,-392 144,-392.5 "/>
+</g>
+<!-- u_7&#45;&gt;u_8 -->
+<g id="edge6" class="edge"><title>u_7:o_0&#45;&gt;u_8:i_1</title>
+<path fill="none" stroke="black" d="M160,-366C160,-366 127.078,-329.25 118.848,-320.062"/>
+<polygon fill="black" stroke="black" points="116.255,-318.667 117.745,-317.333 119.079,-318.822 117.59,-320.157 116.255,-318.667"/>
+<polyline fill="none" stroke="black" points="118.335,-319.49 118.668,-319.862 "/>
+</g>
+<!-- u_12 -->
+<g id="node6" class="node"><title>u_12</title>
+<polygon fill="none" stroke="blue" points="149,-230 149,-246 162,-246 162,-230 149,-230"/>
+<text text-anchor="start" x="152.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="164,-230 164,-246 170,-246 170,-230 164,-230"/>
+<polygon fill="none" stroke="blue" points="172,-230 172,-246 178,-246 178,-230 172,-230"/>
+<polygon fill="none" stroke="blue" points="172,-222 172,-228 178,-228 178,-222 172,-222"/>
+</g>
+<!-- u_8&#45;&gt;u_12 -->
+<g id="edge8" class="edge"><title>u_8:o_0&#45;&gt;u_12:i_0</title>
+<path fill="none" stroke="black" d="M117,-294C117,-294 155.281,-257.25 164.852,-248.062"/>
+<polygon fill="black" stroke="black" points="166.307,-245.279 167.693,-246.721 166.25,-248.106 164.865,-246.664 166.307,-245.279"/>
+<polyline fill="none" stroke="black" points="165.557,-247.385 165.197,-247.731 "/>
+</g>
+<!-- u_11 -->
+<g id="node5" class="node"><title>u_11</title>
+<polygon fill="none" stroke="yellow" points="160,-302 160,-318 189,-318 189,-302 160,-302"/>
+<text text-anchor="start" x="163.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
+<polygon fill="none" stroke="yellow" points="191,-302 191,-318 213,-318 213,-302 191,-302"/>
+<text text-anchor="start" x="194" y="-307.9" font-family="Courier,monospace" font-size="9.00">500</text>
+<polygon fill="none" stroke="yellow" points="215,-302 215,-318 237,-318 237,-302 215,-302"/>
+<text text-anchor="start" x="218" y="-307.9" font-family="Courier,monospace" font-size="9.00">900</text>
+<polygon fill="none" stroke="yellow" points="215,-294 215,-300 237,-300 237,-294 215,-294"/>
+</g>
+<!-- u_11&#45;&gt;u_12 -->
+<g id="edge10" class="edge"><title>u_11:o_0&#45;&gt;u_12:i_1</title>
+<path fill="none" stroke="black" d="M226,-294C226,-294 186.953,-257.25 177.191,-248.062"/>
+<polygon fill="black" stroke="black" points="174.315,-246.728 175.685,-245.272 177.142,-246.643 175.771,-248.099 174.315,-246.728"/>
+<polyline fill="none" stroke="black" points="176.456,-247.371 176.821,-247.713 "/>
+</g>
+<!-- u_13 -->
+<g id="node7" class="node"><title>u_13</title>
+<polygon fill="none" stroke="black" points="131,-158 131,-174 170,-174 170,-158 131,-158"/>
+<text text-anchor="start" x="134.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="172,-158 172,-174 178,-174 178,-158 172,-158"/>
+<polygon fill="none" stroke="black" points="180,-158 180,-174 192,-174 192,-158 180,-158"/>
+<text text-anchor="start" x="183" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="180,-150 180,-156 192,-156 192,-150 180,-150"/>
+</g>
+<!-- u_12&#45;&gt;u_13 -->
+<g id="edge12" class="edge"><title>u_12:o_0&#45;&gt;u_13:i_0</title>
+<path fill="none" stroke="black" d="M175,-222C175,-222 175,-186.551 175,-176.581"/>
+<polygon fill="black" stroke="black" points="174,-174 176,-174 176,-176 174,-176 174,-174"/>
+<polyline fill="none" stroke="black" points="175,-176 175,-176.5 "/>
+</g>
+<!-- u_15 -->
+<g id="node8" class="node"><title>u_15</title>
+<polygon fill="none" stroke="black" points="168,-86 168,-102 181,-102 181,-86 168,-86"/>
+<text text-anchor="start" x="171.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="183,-86 183,-102 189,-102 189,-86 183,-86"/>
+<polygon fill="none" stroke="black" points="191,-86 191,-102 213,-102 213,-86 191,-86"/>
+<text text-anchor="start" x="194" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="191,-78 191,-84 213,-84 213,-78 191,-78"/>
+</g>
+<!-- u_13&#45;&gt;u_15 -->
+<g id="edge14" class="edge"><title>u_13:o_0&#45;&gt;u_15:i_0</title>
+<path fill="none" stroke="black" d="M186,-150C186,-150 186,-114.551 186,-104.581"/>
+<polygon fill="black" stroke="black" points="185,-102 187,-102 187,-104 185,-104 185,-102"/>
+<polyline fill="none" stroke="black" points="186,-104 186,-104.5 "/>
+</g>
+<!-- u_16 -->
+<g id="node9" class="node"><title>u_16</title>
+<polygon fill="none" stroke="black" points="160,-10 160,-26 183,-26 183,-10 160,-10"/>
+<text text-anchor="start" x="163.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="185,-10 185,-26 197,-26 197,-10 185,-10"/>
+<text text-anchor="start" x="188" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="199,-10 199,-26 205,-26 205,-10 199,-10"/>
+</g>
+<!-- u_15&#45;&gt;u_16 -->
+<g id="edge16" class="edge"><title>u_15:o_0&#45;&gt;u_16:i_1</title>
+<path fill="none" stroke="black" d="M202,-78C202,-78 202,-38.8953 202,-28.5081"/>
+<polygon fill="black" stroke="black" points="201,-26 203,-26 203,-28 201,-28 201,-26"/>
+<polyline fill="none" stroke="black" points="202,-28 202,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/05.svg b/dot/05.svg
new file mode 100644
--- /dev/null
+++ b/dot/05.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="109pt" height="260pt"
+ viewBox="0.00 0.00 109.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-256 106,-256 106,5 -4,5"/>
+<!-- k_1 -->
+<g id="node1" class="node"><title>k_1</title>
+<polygon fill="none" stroke="blue" points="29,-226 29,-242 79,-242 79,-226 29,-226"/>
+<text text-anchor="start" x="32.5" y="-231.9" font-family="Courier,monospace" font-size="9.00">freq:440</text>
+</g>
+<!-- u_2 -->
+<g id="node2" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 57,-174 57,-158 51,-158"/>
+<polygon fill="none" stroke="black" points="59,-158 59,-174 71,-174 71,-158 59,-158"/>
+<text text-anchor="start" x="62" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="59,-150 59,-156 71,-156 71,-150 59,-150"/>
+</g>
+<!-- k_1&#45;&gt;u_2 -->
+<g id="edge2" class="edge"><title>k_1:o_0&#45;&gt;u_2:i_0</title>
+<path fill="none" stroke="black" d="M54,-225.657C54,-212.004 54,-185.538 54,-176.844"/>
+<polygon fill="black" stroke="black" points="53,-174 55,-174 55.0001,-176 53.0001,-176 53,-174"/>
+<polyline fill="none" stroke="black" points="54.0001,-176 54.0001,-176.5 "/>
+</g>
+<!-- u_4 -->
+<g id="node3" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="47,-86 47,-102 60,-102 60,-86 47,-86"/>
+<text text-anchor="start" x="50.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="62,-86 62,-102 68,-102 68,-86 62,-86"/>
+<polygon fill="none" stroke="black" points="70,-86 70,-102 92,-102 92,-86 70,-86"/>
+<text text-anchor="start" x="73" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="70,-78 70,-84 92,-84 92,-78 70,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge4" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M65,-150C65,-150 65,-114.551 65,-104.581"/>
+<polygon fill="black" stroke="black" points="64,-102 66,-102 66.0001,-104 64.0001,-104 64,-102"/>
+<polyline fill="none" stroke="black" points="65.0001,-104 65.0001,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node4" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="39,-10 39,-26 62,-26 62,-10 39,-10"/>
+<text text-anchor="start" x="42.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="64,-10 64,-26 76,-26 76,-10 64,-10"/>
+<text text-anchor="start" x="67" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="78,-10 78,-26 84,-26 84,-10 78,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M81,-78C81,-78 81,-38.8953 81,-28.5081"/>
+<polygon fill="black" stroke="black" points="80,-26 82,-26 82.0001,-28 80.0001,-28 80,-26"/>
+<polyline fill="none" stroke="black" points="81.0001,-28 81.0001,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/06.svg b/dot/06.svg
new file mode 100644
--- /dev/null
+++ b/dot/06.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="152pt" height="188pt"
+ viewBox="0.00 0.00 152.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 149,-184 149,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 100,-174 100,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">freq:440</text>
+<polygon fill="none" stroke="black" points="102,-158 102,-174 114,-174 114,-158 102,-158"/>
+<text text-anchor="start" x="105" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="102,-150 102,-156 114,-156 114,-150 102,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="90,-86 90,-102 103,-102 103,-86 90,-86"/>
+<text text-anchor="start" x="93.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="105,-86 105,-102 111,-102 111,-86 105,-86"/>
+<polygon fill="none" stroke="black" points="113,-86 113,-102 135,-102 135,-86 113,-86"/>
+<text text-anchor="start" x="116" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="113,-78 113,-84 135,-84 135,-78 113,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M108,-150C108,-150 108,-114.551 108,-104.581"/>
+<polygon fill="black" stroke="black" points="107,-102 109,-102 109,-104 107,-104 107,-102"/>
+<polyline fill="none" stroke="black" points="108,-104 108,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="82,-10 82,-26 105,-26 105,-10 82,-10"/>
+<text text-anchor="start" x="85.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="107,-10 107,-26 119,-26 119,-10 107,-10"/>
+<text text-anchor="start" x="110" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="121,-10 121,-26 127,-26 127,-10 121,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M124,-78C124,-78 124,-38.8953 124,-28.5081"/>
+<polygon fill="black" stroke="black" points="123,-26 125,-26 125,-28 123,-28 123,-26"/>
+<polyline fill="none" stroke="black" points="124,-28 124,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/07.svg b/dot/07.svg
new file mode 100644
--- /dev/null
+++ b/dot/07.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="125pt" height="188pt"
+ viewBox="0.00 0.00 125.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 122,-184 122,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 108,-102 108,-86 86,-86"/>
+<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="86,-78 86,-84 108,-84 108,-78 86,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
+<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
+<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="55,-10 55,-26 78,-26 78,-10 55,-10"/>
+<text text-anchor="start" x="58.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="80,-10 80,-26 92,-26 92,-10 80,-10"/>
+<text text-anchor="start" x="83" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="94,-10 94,-26 100,-26 100,-10 94,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M97,-78C97,-78 97,-38.8953 97,-28.5081"/>
+<polygon fill="black" stroke="black" points="96,-26 98,-26 98.0001,-28 96.0001,-28 96,-26"/>
+<polyline fill="none" stroke="black" points="97.0001,-28 97.0001,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/08.svg b/dot/08.svg
new file mode 100644
--- /dev/null
+++ b/dot/08.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="231pt" height="188pt"
+ viewBox="0.00 0.00 231.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 228,-184 228,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="71,-86 71,-102 84,-102 84,-86 71,-86"/>
+<text text-anchor="start" x="74.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 92,-102 92,-86 86,-86"/>
+<polygon fill="none" stroke="black" points="94,-86 94,-102 116,-102 116,-86 94,-86"/>
+<text text-anchor="start" x="97" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="94,-78 94,-84 116,-84 116,-78 94,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 86.9082,-114.551 88.5699,-104.581"/>
+<polygon fill="black" stroke="black" points="88.0136,-101.836 89.9864,-102.164 89.6575,-104.137 87.6847,-103.808 88.0136,-101.836"/>
+<polyline fill="none" stroke="black" points="88.6711,-103.973 88.5889,-104.466 "/>
+</g>
+<!-- u_8 -->
+<g id="node5" class="node"><title>u_8</title>
+<polygon fill="none" stroke="black" points="108,-10 108,-26 131,-26 131,-10 108,-10"/>
+<text text-anchor="start" x="111.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="133,-10 133,-26 145,-26 145,-10 133,-10"/>
+<text text-anchor="start" x="136" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="147,-10 147,-26 153,-26 153,-10 147,-10"/>
+<polygon fill="none" stroke="black" points="155,-10 155,-26 161,-26 161,-10 155,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_8 -->
+<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_8:i_1</title>
+<path fill="none" stroke="black" d="M117,-81C117,-81 142.266,-38.8906 148.582,-28.3633"/>
+<polygon fill="black" stroke="black" points="149.143,-25.4855 150.857,-26.5145 149.828,-28.2295 148.113,-27.2005 149.143,-25.4855"/>
+<polyline fill="none" stroke="black" points="148.971,-27.715 148.714,-28.1437 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="black" points="124,-158 124,-174 163,-174 163,-158 124,-158"/>
+<text text-anchor="start" x="127.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="165,-158 165,-174 187,-174 187,-158 165,-158"/>
+<text text-anchor="start" x="168" y="-163.9" font-family="Courier,monospace" font-size="9.00">220</text>
+<polygon fill="none" stroke="black" points="189,-158 189,-174 201,-174 201,-158 189,-158"/>
+<text text-anchor="start" x="192" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="189,-150 189,-156 201,-156 201,-150 189,-150"/>
+</g>
+<!-- u_7 -->
+<g id="node4" class="node"><title>u_7</title>
+<polygon fill="none" stroke="black" points="169,-86 169,-102 182,-102 182,-86 169,-86"/>
+<text text-anchor="start" x="172.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="184,-86 184,-102 190,-102 190,-86 184,-86"/>
+<polygon fill="none" stroke="black" points="192,-86 192,-102 214,-102 214,-86 192,-86"/>
+<text text-anchor="start" x="195" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="192,-78 192,-84 214,-84 214,-78 192,-78"/>
+</g>
+<!-- u_6&#45;&gt;u_7 -->
+<g id="edge4" class="edge"><title>u_6:o_0&#45;&gt;u_7:i_0</title>
+<path fill="none" stroke="black" d="M195,-150C195,-150 189.092,-114.551 187.43,-104.581"/>
+<polygon fill="black" stroke="black" points="186.014,-102.164 187.986,-101.836 188.315,-103.808 186.342,-104.137 186.014,-102.164"/>
+<polyline fill="none" stroke="black" points="187.329,-103.973 187.411,-104.466 "/>
+</g>
+<!-- u_7&#45;&gt;u_8 -->
+<g id="edge8" class="edge"><title>u_7:o_0&#45;&gt;u_8:i_2</title>
+<path fill="none" stroke="black" d="M203,-78C203,-78 168.547,-38.1875 159.934,-28.2344"/>
+<polygon fill="black" stroke="black" points="157.244,-26.6544 158.756,-25.3456 160.065,-26.858 158.553,-28.1667 157.244,-26.6544"/>
+<polyline fill="none" stroke="black" points="159.309,-27.5124 159.636,-27.8904 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/09.svg b/dot/09.svg
new file mode 100644
--- /dev/null
+++ b/dot/09.svg
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="443pt" height="332pt"
+ viewBox="0.00 0.00 443.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-328 440,-328 440,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="blue" points="10,-302 10,-318 49,-318 49,-302 10,-302"/>
+<text text-anchor="start" x="13.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="blue" points="51,-302 51,-318 79,-318 79,-302 51,-302"/>
+<text text-anchor="start" x="54" y="-307.9" font-family="Courier,monospace" font-size="9.00">0.25</text>
+<polygon fill="none" stroke="blue" points="81,-302 81,-318 93,-318 93,-302 81,-302"/>
+<text text-anchor="start" x="84" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="81,-294 81,-300 93,-300 93,-294 81,-294"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="blue" points="79,-230 79,-246 92,-246 92,-230 79,-230"/>
+<text text-anchor="start" x="82.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="94,-230 94,-246 100,-246 100,-230 94,-230"/>
+<polygon fill="none" stroke="blue" points="102,-230 102,-246 119,-246 119,-230 102,-230"/>
+<text text-anchor="start" x="105" y="-235.9" font-family="Courier,monospace" font-size="9.00">10</text>
+<polygon fill="none" stroke="blue" points="102,-222 102,-228 119,-228 119,-222 102,-222"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M87,-294C87,-294 94.3853,-258.551 96.4624,-248.581"/>
+<polygon fill="black" stroke="black" points="96.021,-245.796 97.979,-246.204 97.571,-248.162 95.613,-247.754 96.021,-245.796"/>
+<polyline fill="none" stroke="black" points="96.592,-247.958 96.49,-248.447 "/>
+</g>
+<!-- u_9 -->
+<g id="node5" class="node"><title>u_9</title>
+<polygon fill="none" stroke="blue" points="102,-154 102,-170 125,-170 125,-154 102,-154"/>
+<text text-anchor="start" x="105.5" y="-159.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="blue" points="127,-154 127,-170 139,-170 139,-154 127,-154"/>
+<text text-anchor="start" x="130" y="-159.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="141,-154 141,-170 147,-170 147,-154 141,-154"/>
+<polygon fill="none" stroke="blue" points="149,-154 149,-170 155,-170 155,-154 149,-154"/>
+</g>
+<!-- u_4&#45;&gt;u_9 -->
+<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_9:i_1</title>
+<path fill="none" stroke="black" d="M111,-222C111,-222 136.266,-182.188 142.582,-172.234"/>
+<polygon fill="black" stroke="black" points="143.156,-169.464 144.844,-170.536 143.773,-172.225 142.084,-171.153 143.156,-169.464"/>
+<polyline fill="none" stroke="black" points="142.928,-171.689 142.66,-172.111 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="blue" points="130,-302 130,-318 169,-318 169,-302 130,-302"/>
+<text text-anchor="start" x="133.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="blue" points="171,-302 171,-318 199,-318 199,-302 171,-302"/>
+<text text-anchor="start" x="174" y="-307.9" font-family="Courier,monospace" font-size="9.00">0.35</text>
+<polygon fill="none" stroke="blue" points="201,-302 201,-318 213,-318 213,-302 201,-302"/>
+<text text-anchor="start" x="204" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="201,-294 201,-300 213,-300 213,-294 201,-294"/>
+</g>
+<!-- u_8 -->
+<g id="node4" class="node"><title>u_8</title>
+<polygon fill="none" stroke="blue" points="178,-230 178,-246 191,-246 191,-230 178,-230"/>
+<text text-anchor="start" x="181.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="193,-230 193,-246 199,-246 199,-230 193,-230"/>
+<polygon fill="none" stroke="blue" points="201,-230 201,-246 218,-246 218,-230 201,-230"/>
+<text text-anchor="start" x="204" y="-235.9" font-family="Courier,monospace" font-size="9.00">15</text>
+<polygon fill="none" stroke="blue" points="201,-222 201,-228 218,-228 218,-222 201,-222"/>
+</g>
+<!-- u_6&#45;&gt;u_8 -->
+<g id="edge4" class="edge"><title>u_6:o_0&#45;&gt;u_8:i_0</title>
+<path fill="none" stroke="black" d="M207,-294C207,-294 198.876,-258.551 196.591,-248.581"/>
+<polygon fill="black" stroke="black" points="195.025,-246.223 196.975,-245.777 197.422,-247.726 195.472,-248.173 195.025,-246.223"/>
+<polyline fill="none" stroke="black" points="196.447,-247.949 196.559,-248.437 "/>
+</g>
+<!-- u_8&#45;&gt;u_9 -->
+<g id="edge8" class="edge"><title>u_8:o_0&#45;&gt;u_9:i_2</title>
+<path fill="none" stroke="black" d="M210,-222C210,-222 163.994,-180.753 153.93,-171.73"/>
+<polygon fill="black" stroke="black" points="151.332,-170.745 152.668,-169.255 154.157,-170.591 152.822,-172.08 151.332,-170.745"/>
+<polyline fill="none" stroke="black" points="153.489,-171.335 153.861,-171.669 "/>
+</g>
+<!-- u_11 -->
+<g id="node6" class="node"><title>u_11</title>
+<polygon fill="none" stroke="blue" points="323,-302 323,-318 341,-318 341,-302 323,-302"/>
+<text text-anchor="start" x="326.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">In</text>
+<polygon fill="none" stroke="blue" points="343,-302 343,-318 355,-318 355,-302 343,-302"/>
+<text text-anchor="start" x="346" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="323,-294 323,-300 341,-300 341,-294 323,-294"/>
+<polygon fill="none" stroke="blue" points="343,-294 343,-300 355,-300 355,-294 343,-294"/>
+</g>
+<!-- u_13 -->
+<g id="node7" class="node"><title>u_13</title>
+<polygon fill="none" stroke="blue" points="256,-230 256,-246 269,-246 269,-230 256,-230"/>
+<text text-anchor="start" x="259.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="271,-230 271,-246 293,-246 293,-230 271,-230"/>
+<text text-anchor="start" x="274" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="blue" points="295,-230 295,-246 301,-246 301,-230 295,-230"/>
+<polygon fill="none" stroke="blue" points="295,-222 295,-228 301,-228 301,-222 295,-222"/>
+</g>
+<!-- u_11&#45;&gt;u_13 -->
+<g id="edge10" class="edge"><title>u_11:o_0&#45;&gt;u_13:i_1</title>
+<path fill="none" stroke="black" d="M322,-297C322,-297 303.952,-258.647 299.158,-248.46"/>
+<polygon fill="black" stroke="black" points="297.095,-246.426 298.905,-245.574 299.756,-247.384 297.947,-248.235 297.095,-246.426"/>
+<polyline fill="none" stroke="black" points="298.852,-247.81 299.065,-248.262 "/>
+</g>
+<!-- u_19 -->
+<g id="node10" class="node"><title>u_19</title>
+<polygon fill="none" stroke="blue" points="342,-230 342,-246 355,-246 355,-230 342,-230"/>
+<text text-anchor="start" x="345.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="357,-230 357,-246 379,-246 379,-230 357,-230"/>
+<text text-anchor="start" x="360" y="-235.9" font-family="Courier,monospace" font-size="9.00">220</text>
+<polygon fill="none" stroke="blue" points="381,-230 381,-246 387,-246 387,-230 381,-230"/>
+<polygon fill="none" stroke="blue" points="381,-222 381,-228 387,-228 387,-222 381,-222"/>
+</g>
+<!-- u_11&#45;&gt;u_19 -->
+<g id="edge16" class="edge"><title>u_11:o_1&#45;&gt;u_19:i_1</title>
+<path fill="none" stroke="black" d="M349,-294C349,-294 375.797,-257.25 382.496,-248.062"/>
+<polygon fill="black" stroke="black" points="383.192,-245.411 384.808,-246.589 383.63,-248.205 382.014,-247.027 383.192,-245.411"/>
+<polyline fill="none" stroke="black" points="382.822,-247.616 382.527,-248.02 "/>
+</g>
+<!-- u_14 -->
+<g id="node8" class="node"><title>u_14</title>
+<polygon fill="none" stroke="black" points="250,-158 250,-174 289,-174 289,-158 250,-158"/>
+<text text-anchor="start" x="253.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="291,-158 291,-174 297,-174 297,-158 291,-158"/>
+<polygon fill="none" stroke="black" points="299,-158 299,-174 311,-174 311,-158 299,-158"/>
+<text text-anchor="start" x="302" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="299,-150 299,-156 311,-156 311,-150 299,-150"/>
+</g>
+<!-- u_13&#45;&gt;u_14 -->
+<g id="edge12" class="edge"><title>u_13:o_0&#45;&gt;u_14:i_0</title>
+<path fill="none" stroke="black" d="M298,-222C298,-222 295.046,-186.551 294.215,-176.581"/>
+<polygon fill="black" stroke="black" points="293.003,-174.083 294.997,-173.917 295.163,-175.91 293.17,-176.076 293.003,-174.083"/>
+<polyline fill="none" stroke="black" points="294.166,-175.993 294.208,-176.491 "/>
+</g>
+<!-- u_16 -->
+<g id="node9" class="node"><title>u_16</title>
+<polygon fill="none" stroke="black" points="295,-86 295,-102 308,-102 308,-86 295,-86"/>
+<text text-anchor="start" x="298.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="310,-86 310,-102 316,-102 316,-86 310,-86"/>
+<polygon fill="none" stroke="black" points="318,-86 318,-102 340,-102 340,-86 318,-86"/>
+<text text-anchor="start" x="321" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="318,-78 318,-84 340,-84 340,-78 318,-78"/>
+</g>
+<!-- u_14&#45;&gt;u_16 -->
+<g id="edge14" class="edge"><title>u_14:o_0&#45;&gt;u_16:i_0</title>
+<path fill="none" stroke="black" d="M305,-150C305,-150 310.908,-114.551 312.57,-104.581"/>
+<polygon fill="black" stroke="black" points="312.014,-101.836 313.986,-102.164 313.658,-104.137 311.685,-103.808 312.014,-101.836"/>
+<polyline fill="none" stroke="black" points="312.671,-103.973 312.589,-104.466 "/>
+</g>
+<!-- u_22 -->
+<g id="node13" class="node"><title>u_22</title>
+<polygon fill="none" stroke="black" points="326,-10 326,-26 349,-26 349,-10 326,-10"/>
+<text text-anchor="start" x="329.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="351,-10 351,-26 363,-26 363,-10 351,-10"/>
+<text text-anchor="start" x="354" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="365,-10 365,-26 371,-26 371,-10 365,-10"/>
+<polygon fill="none" stroke="black" points="373,-10 373,-26 379,-26 379,-10 373,-10"/>
+</g>
+<!-- u_16&#45;&gt;u_22 -->
+<g id="edge22" class="edge"><title>u_16:o_0&#45;&gt;u_22:i_1</title>
+<path fill="none" stroke="black" d="M341,-81C341,-81 361.672,-38.8906 366.84,-28.3633"/>
+<polygon fill="black" stroke="black" points="367.102,-25.5593 368.898,-26.4407 368.016,-28.236 366.221,-27.3546 367.102,-25.5593"/>
+<polyline fill="none" stroke="black" points="367.119,-27.7953 366.898,-28.2442 "/>
+</g>
+<!-- u_20 -->
+<g id="node11" class="node"><title>u_20</title>
+<polygon fill="none" stroke="black" points="348,-158 348,-174 387,-174 387,-158 348,-158"/>
+<text text-anchor="start" x="351.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="389,-158 389,-174 395,-174 395,-158 389,-158"/>
+<polygon fill="none" stroke="black" points="397,-158 397,-174 409,-174 409,-158 397,-158"/>
+<text text-anchor="start" x="400" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="397,-150 397,-156 409,-156 409,-150 397,-150"/>
+</g>
+<!-- u_19&#45;&gt;u_20 -->
+<g id="edge18" class="edge"><title>u_19:o_0&#45;&gt;u_20:i_0</title>
+<path fill="none" stroke="black" d="M384,-222C384,-222 389.908,-186.551 391.57,-176.581"/>
+<polygon fill="black" stroke="black" points="391.014,-173.836 392.986,-174.164 392.658,-176.137 390.685,-175.808 391.014,-173.836"/>
+<polyline fill="none" stroke="black" points="391.671,-175.973 391.589,-176.466 "/>
+</g>
+<!-- u_21 -->
+<g id="node12" class="node"><title>u_21</title>
+<polygon fill="none" stroke="black" points="381,-86 381,-102 394,-102 394,-86 381,-86"/>
+<text text-anchor="start" x="384.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="396,-86 396,-102 402,-102 402,-86 396,-86"/>
+<polygon fill="none" stroke="black" points="404,-86 404,-102 426,-102 426,-86 404,-86"/>
+<text text-anchor="start" x="407" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="404,-78 404,-84 426,-84 426,-78 404,-78"/>
+</g>
+<!-- u_20&#45;&gt;u_21 -->
+<g id="edge20" class="edge"><title>u_20:o_0&#45;&gt;u_21:i_0</title>
+<path fill="none" stroke="black" d="M403,-150C403,-150 400.046,-114.551 399.215,-104.581"/>
+<polygon fill="black" stroke="black" points="398.003,-102.083 399.997,-101.917 400.163,-103.91 398.17,-104.076 398.003,-102.083"/>
+<polyline fill="none" stroke="black" points="399.166,-103.993 399.208,-104.491 "/>
+</g>
+<!-- u_21&#45;&gt;u_22 -->
+<g id="edge24" class="edge"><title>u_21:o_0&#45;&gt;u_22:i_2</title>
+<path fill="none" stroke="black" d="M415,-78C415,-78 385.141,-38.1875 377.676,-28.2344"/>
+<polygon fill="black" stroke="black" points="375.2,-26.6 376.8,-25.4 378,-27 376.4,-28.2 375.2,-26.6"/>
+<polyline fill="none" stroke="black" points="377.2,-27.6 377.5,-28 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/10.svg b/dot/10.svg
new file mode 100644
--- /dev/null
+++ b/dot/10.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="145pt" height="260pt"
+ viewBox="0.00 0.00 145.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-256 142,-256 142,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-230 10,-246 49,-246 49,-230 10,-230"/>
+<text text-anchor="start" x="13.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-230 51,-246 73,-246 73,-230 51,-230"/>
+<text text-anchor="start" x="54" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-230 75,-246 87,-246 87,-230 75,-230"/>
+<text text-anchor="start" x="78" y="-235.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-222 75,-228 87,-228 87,-222 75,-222"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="63,-158 63,-174 76,-174 76,-158 63,-158"/>
+<text text-anchor="start" x="66.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="78,-158 78,-174 84,-174 84,-158 78,-158"/>
+<polygon fill="none" stroke="black" points="86,-158 86,-174 108,-174 108,-158 86,-158"/>
+<text text-anchor="start" x="89" y="-163.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="86,-150 86,-156 108,-156 108,-150 86,-150"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-222C81,-222 81,-186.551 81,-176.581"/>
+<polygon fill="black" stroke="black" points="80,-174 82,-174 82.0001,-176 80.0001,-176 80,-174"/>
+<polyline fill="none" stroke="black" points="81.0001,-176 81.0001,-176.5 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 92,-102 92,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">Pan2</text>
+<polygon fill="none" stroke="black" points="94,-86 94,-102 100,-102 100,-86 94,-86"/>
+<polygon fill="none" stroke="black" points="102,-86 102,-102 114,-102 114,-86 102,-86"/>
+<text text-anchor="start" x="105" y="-91.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="116,-86 116,-102 128,-102 128,-86 116,-86"/>
+<text text-anchor="start" x="119" y="-91.9" font-family="Courier,monospace" font-size="9.00">1</text>
+<polygon fill="none" stroke="black" points="102,-78 102,-84 114,-84 114,-78 102,-78"/>
+<polygon fill="none" stroke="black" points="116,-78 116,-84 128,-84 128,-78 116,-78"/>
+</g>
+<!-- u_4&#45;&gt;u_6 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_6:i_0</title>
+<path fill="none" stroke="black" d="M97,-150C97,-150 97,-114.551 97,-104.581"/>
+<polygon fill="black" stroke="black" points="96,-102 98,-102 98.0001,-104 96.0001,-104 96,-102"/>
+<polyline fill="none" stroke="black" points="97.0001,-104 97.0001,-104.5 "/>
+</g>
+<!-- u_9 -->
+<g id="node4" class="node"><title>u_9</title>
+<polygon fill="none" stroke="black" points="69,-10 69,-26 92,-26 92,-10 69,-10"/>
+<text text-anchor="start" x="72.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="94,-10 94,-26 106,-26 106,-10 94,-10"/>
+<text text-anchor="start" x="97" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="108,-10 108,-26 114,-26 114,-10 108,-10"/>
+<polygon fill="none" stroke="black" points="116,-10 116,-26 122,-26 122,-10 116,-10"/>
+</g>
+<!-- u_6&#45;&gt;u_9 -->
+<g id="edge6" class="edge"><title>u_6:o_0&#45;&gt;u_9:i_1</title>
+<path fill="none" stroke="black" d="M108,-78C108,-78 110.256,-38.8953 110.855,-28.5081"/>
+<polygon fill="black" stroke="black" points="110.002,-25.9424 111.998,-26.0576 111.883,-28.0543 109.886,-27.939 110.002,-25.9424"/>
+<polyline fill="none" stroke="black" points="110.885,-27.9967 110.856,-28.4959 "/>
+</g>
+<!-- u_6&#45;&gt;u_9 -->
+<g id="edge8" class="edge"><title>u_6:o_1&#45;&gt;u_9:i_2</title>
+<path fill="none" stroke="black" d="M122,-78C122,-78 119.744,-38.8953 119.145,-28.5081"/>
+<polygon fill="black" stroke="black" points="118.002,-26.0576 119.998,-25.9424 120.114,-27.939 118.117,-28.0543 118.002,-26.0576"/>
+<polyline fill="none" stroke="black" points="119.115,-27.9967 119.144,-28.4959 "/>
+</g>
+</g>
+</svg>
diff --git a/dot/11.svg b/dot/11.svg
new file mode 100644
--- /dev/null
+++ b/dot/11.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="72pt" height="118pt"
+ viewBox="0.00 0.00 72.00 117.70" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(0.626087 0.626087) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 112,-184 112,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_3 -->
+<g id="node2" class="node"><title>u_3</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">&gt;</text>
+<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 98,-102 98,-86 86,-86"/>
+<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="86,-78 86,-84 98,-84 98,-78 86,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_3 -->
+<g id="edge2" class="edge"><title>u_2:o_0:s&#45;&gt;u_3:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
+<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
+<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
+</g>
+<!-- u_4 -->
+<g id="node3" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="50,-10 50,-26 73,-26 73,-10 50,-10"/>
+<text text-anchor="start" x="53.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="75,-10 75,-26 87,-26 87,-10 75,-10"/>
+<text text-anchor="start" x="78" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="89,-10 89,-26 95,-26 95,-10 89,-10"/>
+</g>
+<!-- u_3&#45;&gt;u_4 -->
+<g id="edge4" class="edge"><title>u_3:o_0:s&#45;&gt;u_4:i_1</title>
+<path fill="none" stroke="black" d="M92,-78C92,-78 92,-38.8953 92,-28.5081"/>
+<polygon fill="black" stroke="black" points="91,-26 93,-26 93.0001,-28 91.0001,-28 91,-26"/>
+<polyline fill="none" stroke="black" points="92.0001,-28 92.0001,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/hsc3-dot.cabal b/hsc3-dot.cabal
--- a/hsc3-dot.cabal
+++ b/hsc3-dot.cabal
@@ -1,26 +1,27 @@
 Name:              hsc3-dot
-Version:           0.14
+Version:           0.15
 Synopsis:          haskell supercollider graph drawing
 Description:       dot format graph generator for SuperCollider
                    unit generator graphs constructed using hsc3.
 License:           GPL
 Category:          Sound
-Copyright:         (c) Rohan Drape, 2006-2013
+Copyright:         (c) Rohan Drape, 2006-2014
 Author:            Rohan Drape
 Maintainer:        rd@slavepianos.org
 Stability:         Experimental
-Homepage:          http://rd.slavepianos.org/?t=hsc3-dot
-Tested-With:       GHC == 7.6.1
+Homepage:          http://rd.slavepianos.org/t/hsc3-dot
+Tested-With:       GHC == 7.8.2
 Build-Type:        Simple
 Cabal-Version:     >= 1.8
 
 Data-files:        README
+Extra-Doc-Files:   dot/*.svg
 
 Library
   Build-Depends:   base == 4.*,
                    directory,
                    filepath,
-                   hsc3 == 0.14.*,
+                   hsc3 == 0.15.*,
                    process
   GHC-Options:     -Wall -fwarn-tabs
   Exposed-modules: Sound.SC3.UGen.Dot
