diff --git a/Changelog b/Changelog
--- a/Changelog
+++ b/Changelog
@@ -1,5 +1,15 @@
--> 0.2.0    fixes few docs bugs,
+-- 0.3.0    update for Score api. Now there is no Score api by default.
+			Consider using 'temporal-media'[1] or 'temporal-music-notation'[2]
+			packages for csound score events composition. 
+			'temporal-media' is general package for functional construction 
+			of list of events with fixed start time and duration, like
+			csound notes. 
 
+			[1] http://hackage.haskell.org/package/temporal-media
+			[2] http://hackage.haskell.org/package/temporal-music-notation
+
+-> 0.2.0    fixes docs bugs,
+
 			new functions in CsoundExpr.Base.Score :
 
 			extends TemporalFunctor with new methods
@@ -12,7 +22,7 @@
 			new class Sustainable, adds ability for legato and pedal (sustain,
 			sustainBy functions)
 
-			new class TemporalStretch, adds ability to stretch score depndent
+			new class TemporalStretch, adds ability to stretch score dependent
 			on note's start time (ritardando or accelerando)
 
 			adds list-like operations on Scores : reverseS, takeS, dropS
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Anton Kholomiov 2010
+Copyright Anton Kholomiov 2011
 
 All rights reserved.
 
diff --git a/csound-expression.cabal b/csound-expression.cabal
--- a/csound-expression.cabal
+++ b/csound-expression.cabal
@@ -1,17 +1,20 @@
 Name:          csound-expression
-Version:       0.2.0
+Version:       0.3.0
 Cabal-Version: >= 1.2
 License:       BSD3
 License-File:  LICENSE
 Author:	       Anton Kholomiov
 Maintainer:    <anton.kholomiov@gmail.com>
 Synopsis:      Csound combinator library
-Description:   Csound code generator. See "CsoundExpr.Tutorial" for guides and examples. 
+Description:   Csound code generator. See root module "CsoundExpr" 
+               for introduction guides. Score module is no longer 
+               availible inside 'csound-expression' package, consider 
+               using 'temporal-media' or 'temporal-music-notation'
+               packages.
 
-               WARNING : API changes (see TemporalFunctor method tmap, and ./Changelog)
 Category:      Sound, Music
 Stability:     Experimental
-Tested-With:   GHC==6.12.1
+Tested-With:   GHC==6.12.3
 Build-Type:    Simple
 
 Extra-Source-Files : 
@@ -19,8 +22,8 @@
 
 Library
   Build-Depends:
-        base >= 4, base < 5, containers, mtl == 2.0.1.0, pretty, 
-        filepath, directory, haskell98, Boolean, temporal-media == 0.1.0
+        base >= 4, base < 5, containers, mtl >= 2.0, pretty, 
+        filepath, directory, haskell98, Boolean, temporal-media >= 0.2
   Hs-Source-Dirs:      src/
   Exposed-Modules:
         CsoundExpr
@@ -33,17 +36,16 @@
         CsoundExpr.Base.SideEffect
         CsoundExpr.Base.Arithmetic
         CsoundExpr.Base.Header
-        CsoundExpr.Base.Score
         CsoundExpr.Base.Gens
         CsoundExpr.Base.Pitch
         CsoundExpr.Base.UserDefined
         CsoundExpr.Base.Pretty
 -- Tutorial
-        CsoundExpr.Tutorial
-        CsoundExpr.Tutorial.Intro
-        CsoundExpr.Tutorial.Composition
-        CsoundExpr.Tutorial.Orchestra
-        CsoundExpr.Tutorial.Limits
+--        CsoundExpr.Tutorial
+--        CsoundExpr.Tutorial.Intro
+--        CsoundExpr.Tutorial.Composition
+--        CsoundExpr.Tutorial.Orchestra
+--        CsoundExpr.Tutorial.Limits
 
 -- Opcodes
         CsoundExpr.Opcodes
diff --git a/src/CsoundExpr.hs b/src/CsoundExpr.hs
--- a/src/CsoundExpr.hs
+++ b/src/CsoundExpr.hs
@@ -1,4 +1,270 @@
+{-|
+    Library csound-expression allows csound code construction 
+    in functional way.
+
+    It has two parts "CsoundExpr.Base" and "CsoundExpr.Opcodes".
+    First part "Csound.Base" contains essential functionality of the package. 
+    Second part "Csound.Opcodes" contains opcode definitions.
+
+    This module provides overview of the library.
+    For examples see sources, folder 'examples'
+-}
 module CsoundExpr (
+    -- * Introduction
+    {-|
+        Csound-expression is csound code generator. Program 
+        produces value of 'CsoundFile' type. 
+    'CsoundFile' is 'Show'. So that is the way to get csound code. 
+    Function 'csd' can be invoked to make value of 'CsoundFile' type.         
+
+    >csd :: Flags -> Header -> EventList Dur SignalOut -> CsoundFile
+
+    * 'Flags' is 'String'. It's pasted in place of csounds flags. 
+
+    * 'Header' is csound header declaration. 
+        See module "CsoundExpr.Base.Header" for more details.
+
+    * 'EventList' represents csound orchestra and score sections. This
+        type comes from external library 'temporal-media' [1]. 
+        'EventList' contains values with time marks. 
+        Value begins at some time and lasts for some time.
+        Very much like csound notes, but there is one difference
+        no need for p-field parameters, translator derives them from 
+        note structure encoded in values of type 'SignalOut'.
+        'EventList' can be constructed directly with functions of 
+        'temporal-media' library, but better way is to use some
+        front-end. Package 'temporal-music-notation' [2]
+        provides higher level musical functionality for 'EventList' 
+        construction. In this library you can find some examples 
+        illustrating how to compose intruments and score.                
+
+    \[1\] <http://hackage.haskell.org/package/temporal-media>
+
+    \[2\] <http://hackage.haskell.org/package/temporal-music-notation>
+    
+    -}
+
+    -- * Instruments
+    {-|
+    Instruments are functions from some signal representation to signal. 
+    'Score' (from 'temporal-music-notation' library) or 
+    'EventList' (from 'temporal-media' library) is a 'Functor', 
+    so to play on instrument means to apply instrument. 
+    to container of its notes. Instrument can be made with opcodes.
+    Translator derives p-fields from instrument structure. There are only
+    two explicit p-fields 'itime' and 'idur' (@p2@ and @p3@ in csound).
+    -}
+
+
+    -- * Signals / Types
+
+    {-|
+    Signals are represented with trees. Tree contains information about how 
+    signal was build. 
+    
+    There are five types for signals ("CsoundExpr.Base.Types").
+
+    'Arate' is audio rate signal
+
+    'Krate' is control rate signal
+
+    'Irate' is init value
+   
+    'SignalOut' is no output at all (it's produced by opcodes 
+        like out, outs, xtratim) 
+
+    'BoolRate' is comparision of two control or init rate signals
+    ("CsoundExpr.Base.Boolean")
+
+    
+    There are two classes to allow csound's polymorphism : 'X' and 'K'
+
+    'X' = 'Arate' | 'Krate' | 'Irate'
+
+    'K' = 'Krate' | 'Irate'
+
+
+    Csound's S - signal is represented with 'String'.
+    Ftable is represented with 'Irate'. If you want to get 'Krate' ftable
+    you can construct it with function 'ifB'.
+    
+    There are two special types 'MultiOut' 
+    (for opcodes that may produce several outputs, 
+        see "CsoundExpr.Base.MultiOut")
+    and 'SideEffect' 
+    (for opcodes that rely on number of appearances in csound code, 
+     like @unirand@, see "CsoundExpr.Base.SideEffect")    
+    -}
+
+    -- * Opcodes 
+
+    {-|
+        Naming conventions : Opcodes are named after csound's 
+        counterparts usually. Some opcodes in csound can produce 
+        signals of different rates by request (oscil, linseg).
+        Those opcodes are labelled with suffix. Suffix defines 
+        output rate of signal (oscilA, oscilK). Some opcodes 
+        in csound have unfixed number of inputs due to setup 
+        parameters, almost all of them. Those opcodes have 
+        first argument that is list of setup parameters.
+
+        example
+
+        >oscilA :: (X a, X b) => [Irate] -> a -> b -> Irate -> Arate
+        >oscilK :: (K a, K b) => [Irate] -> a -> b -> Irate -> Krate        
+    -}
+
+    -- * Imperative style csound code
+    
+    {-|
+        Most of csound opcodes can be used in functional way. 
+        You can plug them in one another, and make expressions, 
+        but some of them behave like procedures and rely on order 
+        of execution in instrument. Module "CsoundExpr.Base.Imperative" 
+        provides functions to write imperative csound code. 
+
+        'outList' - to sequence procedures
+
+        '(/<=/>)' - Assignment
+
+        'ar', 'kr', 'ir', 'gar', 'gkr', 'gir' - named values, 
+        to produce signal with specified name and rate.
+        
+        Functional style :
+
+        >exmpInstr :: Irate -> SignalOut
+        >exmpInstr pch = out $ oscilA [] (num 1000) (cpspch pch) $ 
+        >       gen10 4096 [1]
+
+
+        Imperative style :
+
+        >exmpImper :: Irate -> SignalOut 
+        >exmpImper pch = outList [        
+        >        ir "amp" <=> num 1000,
+        >        ir "cps" <=> cpspch pch,
+        >        ir "ft"  <=> gen10 4096 [1],
+        >        ar "sig" <=> oscilA [] (ir "amp") (ir "cps") (ir "ft"),
+        >        out (ar "sig")]
+
+    -}
+    
+    -- * Arithmetic
+    {-|
+        You can use polymorphic operations to do some arihmetic 
+        on signals from "CsoundExpr.Base.Arithmetic". And Signal 
+        is 'Num'. 'Eq' is undefined though.                    
+    -}
+
+    -- * Preview
+
+    {-|
+        To see what will come out of an expression you can 
+        print it. 'Arate', 'Krate' and 'Irate' are 'Show'.
+    -}
+
+    -- * User Defined opcodes
+
+    {-|
+        You can add your own opcodes to library, 
+        see "CsoundExpr.Base.UserDefined"
+    -}
+
+    -- * MIDI 
+    
+    {-|
+        There are two ways to tell 'csd' to include instrument 
+        in csound file. Instrument can be a part of 'Score' or 
+        it can be midi instrument, then it should be mentioned 
+        in 'massign' or 'pgmassign' function. If you want to 
+        play midi-instr for some time @t@, you can tell it 
+        to 'csd' function by invoking 'csd' with @'none' t@
+        ('temporal-media') or @(toList $ 'rest' t)@ ('temporal-music-notation')
+        in place of 'EventList' value.
+        
+        >flags = "-odac -iadc  -+rtmidi=virtual -M0"
+        >
+        >header = [massign [] 1 instrMidi]
+        >
+        >instrMidi :: SignalOut
+        >instrMidi = out $ oscilA [] (num 1000) cpsmidi $ gen10 4096 [1]
+        >
+        >-- play instrMidi for 2 minutes
+        >exmpMidi = print $ csd flags header (none 120)
+    -}
+
+    -- * Limits
+    -- ** What can not be expressed 
+        
+    -- *** ids
+    {-| 
+        The major benefit and major problem of csound-expression is 
+        abscense of ids for p-fields, ftables, notes and instruments.
+        
+    
+        no ids for ... means ... no 
+
+        p-fields/notes - opcodes that rely on p-fields or invoke instruments
+
+        ftables - k-rate ftables
+
+        instruments - convenient way to specify order of instruments
+    -}
+
+    -- *** imperative program flow control
+    
+        -- |  There is no program flow control opcodes (like if, then, goto).
+        -- But you can use functional if/then from module 
+        -- "CsoundExpr.Base.Boolean"
+
+    -- *** Srate
+
+        -- | I've decided to represent csound's S-rate with 'String'.
+        -- Signal is represented with tree and it means i can't include
+        -- opcodes that produce Srate
+
+    -- ** Hack-way around (what somehow can be expressed)
+
+    -- *** instrument order
+    {-|
+        Orchestra section is generated from 'EventList'. Different instruments
+        have different tree structure and one instrument's tree can't be 
+        transformed into another one by replacing leaf-values only. 
+
+        You can point to instrument by its structure. There is opcode in 
+        "CsoundExpr.Base.Header" that specifies order of instruments by
+        list of notes. 'instrOrder' takes in list of notes, if instrument's
+        tree is equivalent to note it is placed in relation to list of notes.
+
+        There are ways to make mistake. Sometimes it's unpredictable. 
+        
+        
+        In example below 
+
+        @q1 =/= q2@
+
+        @sco@ contains two instruments (one with @x@, and another 
+                one with @cpspch x@)
+
+        >
+        >osc x = oscilA [] (num 1000) x $ gen10 4096 [1]
+        >env   = lineK 1 idur 0
+        >
+        >q1 x = osc x <*> env
+        >q2 x = env   <*> osc x
+        >
+        >sco1 = note 1 440
+        >sco2 = note 1 $ cpspch 8.00
+        >
+        >sco = fmap q1 $ sco1 +:+ sco2
+
+        I think maybe it's worthwhile to introduce some way of instrument id
+        assignment.
+    -}
+
+
+
+
 	module CsoundExpr.Base
 )
 where
diff --git a/src/CsoundExpr/Base.hs b/src/CsoundExpr/Base.hs
--- a/src/CsoundExpr/Base.hs
+++ b/src/CsoundExpr/Base.hs
@@ -11,7 +11,7 @@
 	module CsoundExpr.Base.Arithmetic,
 	module CsoundExpr.Base.SideEffect,
 	module CsoundExpr.Base.Header,
-	module CsoundExpr.Base.Score,
+--	module CsoundExpr.Base.Score,
 	module CsoundExpr.Base.Gens, 
     module CsoundExpr.Base.Pretty 
 )
@@ -24,7 +24,7 @@
 import CsoundExpr.Base.Arithmetic
 import CsoundExpr.Base.SideEffect
 import CsoundExpr.Base.Header
-import CsoundExpr.Base.Score
+-- import CsoundExpr.Base.Score
 import CsoundExpr.Base.Gens 
 import CsoundExpr.Base.Pretty 
 
diff --git a/src/CsoundExpr/Base/Imperative.hs b/src/CsoundExpr/Base/Imperative.hs
--- a/src/CsoundExpr/Base/Imperative.hs
+++ b/src/CsoundExpr/Base/Imperative.hs
@@ -144,586 +144,4 @@
               [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
                sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
                sig7 <=> exprs7] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8) =>
-         Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8) where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8) <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9) =>
-         Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9) <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9,
-          Assign a10) =>
-         Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11) =>
-         Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12) =>
-         Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13) =>
-         Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24, Assign a25) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24, sig25)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24, exprs25)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24,
-               sig25 <=> exprs25] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24, Assign a25,
-          Assign a26) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24, sig25, sig26)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24, exprs25, exprs26)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24,
-               sig25 <=> exprs25, sig26 <=> exprs26] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24, Assign a25,
-          Assign a26, Assign a27) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24, exprs25, exprs26, exprs27)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24,
-               sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24, Assign a25,
-          Assign a26, Assign a27, Assign a28) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24,
-               sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27,
-               sig28 <=> exprs28] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24, Assign a25,
-          Assign a26, Assign a27, Assign a28, Assign a29) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28, a29)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28,
-         sig29)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28,
-           exprs29)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24,
-               sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27,
-               sig28 <=> exprs28, sig29 <=> exprs29] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24, Assign a25,
-          Assign a26, Assign a27, Assign a28, Assign a29, Assign a30) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28, a29, a30)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28,
-         sig29, sig30)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28,
-           exprs29, exprs30)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24,
-               sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27,
-               sig28 <=> exprs28, sig29 <=> exprs29, sig30 <=> exprs30] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
- 
-instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4,
-          Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10,
-          Assign a11, Assign a12, Assign a13, Assign a14, Assign a15,
-          Assign a16, Assign a17, Assign a18, Assign a19, Assign a20,
-          Assign a21, Assign a22, Assign a23, Assign a24, Assign a25,
-          Assign a26, Assign a27, Assign a28, Assign a29, Assign a30,
-          Assign a31) =>
-         Assign
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28, a29, a30, a31)
-         where
-        (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10,
-         sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19,
-         sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28,
-         sig29, sig30, sig31)
-          <=>
-          (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7,
-           exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14,
-           exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21,
-           exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28,
-           exprs29, exprs30, exprs31)
-          = outList
-              [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2,
-               sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6,
-               sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9,
-               sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12,
-               sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15,
-               sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18,
-               sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21,
-               sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24,
-               sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27,
-               sig28 <=> exprs28, sig29 <=> exprs29, sig30 <=> exprs30,
-               sig31 <=> exprs31]
+
diff --git a/src/CsoundExpr/Base/MultiOut.hs b/src/CsoundExpr/Base/MultiOut.hs
--- a/src/CsoundExpr/Base/MultiOut.hs
+++ b/src/CsoundExpr/Base/MultiOut.hs
@@ -17,57 +17,24 @@
     mo6,
     mo7,
     mo8,
-    mo9,
-    mo10,
-    mo11,
-    mo12,
-    mo13,
-    mo14,
-    mo15,
-    mo16,
-    mo17,
-    mo18,
-    mo19,
-    mo20,
-    mo21,
-    mo22,
-    mo23,
-    mo24,
-    mo25,
-    mo26,
-    mo27,
-    mo28,
-    mo29,
-    mo30,
-    mo31,
-    mo32,
     moA1,
     moA2,
     moA3,
     moA4,
     moA6,
     moA8,
-    moA16,
-    moA24,
-    moA32,
     moK1,
     moK2,
     moK3,
     moK4,
     moK6,
     moK8,
-    moK16,
-    moK24,
-    moK32,
     moI1,
     moI2,
     moI3,
     moI4,
     moI6,
-    moI8,
-    moI16,
-    moI24,
-    moI32)
+    moI8)
 where 
       
 import CsoundExpr.Translator.Types
@@ -135,32 +102,8 @@
      MultiOut ->
        (Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate)
 moA8 = mo8 
-           
- 
-moA16 ::
-      MultiOut ->
-        (Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate,
-         Arate, Arate, Arate, Arate, Arate, Arate, Arate)
-moA16 = mo16 
              
  
-moA24 ::
-      MultiOut ->
-        (Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate,
-         Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate,
-         Arate, Arate, Arate, Arate, Arate, Arate)
-moA24 = mo24 
-             
- 
-moA32 ::
-      MultiOut ->
-        (Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate,
-         Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate,
-         Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate,
-         Arate, Arate, Arate, Arate, Arate)
-moA32 = mo32 
-             
- 
 moK1 :: MultiOut -> (Krate)
 moK1 = mo1 
            
@@ -186,31 +129,8 @@
        (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate)
 moK8 = mo8 
            
- 
-moK16 ::
-      MultiOut ->
-        (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate,
-         Krate, Krate, Krate, Krate, Krate, Krate, Krate)
-moK16 = mo16 
              
  
-moK24 ::
-      MultiOut ->
-        (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate,
-         Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate,
-         Krate, Krate, Krate, Krate, Krate, Krate)
-moK24 = mo24 
-             
- 
-moK32 ::
-      MultiOut ->
-        (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate,
-         Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate,
-         Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate,
-         Krate, Krate, Krate, Krate, Krate)
-moK32 = mo32 
-             
- 
 moI1 :: MultiOut -> (Irate)
 moI1 = mo1 
            
@@ -236,31 +156,8 @@
        (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate)
 moI8 = mo8 
            
- 
-moI16 ::
-      MultiOut ->
-        (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate,
-         Irate, Irate, Irate, Irate, Irate, Irate, Irate)
-moI16 = mo16 
              
  
-moI24 ::
-      MultiOut ->
-        (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate,
-         Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate,
-         Irate, Irate, Irate, Irate, Irate, Irate)
-moI24 = mo24 
-             
- 
-moI32 ::
-      MultiOut ->
-        (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate,
-         Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate,
-         Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate,
-         Irate, Irate, Irate, Irate, Irate)
-moI32 = mo32 
-             
- 
 mo1 :: (X a0) => MultiOut -> (a0)
 mo1 x = (y0)
   where y0 = rateMO rs $ labelMO 0 x
@@ -348,883 +245,3 @@
         rs
           = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
              rateOf y5, rateOf y6, rateOf y7] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
- 
-mo9 ::
-      (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8) =>
-      MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8)
-mo9 x = (y0, y1, y2, y3, y4, y5, y6, y7, y8)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
- 
-mo10 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9) =>
-       MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
-mo10 x = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
- 
-mo11 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9,
-        X a10) =>
-       MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
-mo11 x = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
- 
-mo12 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11) =>
-       MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
-mo12 x = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
- 
-mo13 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12) =>
-       MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
-mo13 x = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
- 
-mo14 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
-mo14 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
- 
-mo15 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-mo15 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
- 
-mo16 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15)
-mo16 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
- 
-mo17 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16)
-mo17 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
- 
-mo18 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17)
-mo18 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
- 
-mo19 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18)
-mo19 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
- 
-mo20 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19)
-mo20 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
- 
-mo21 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20)
-mo21 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
- 
-mo22 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21)
-mo22 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
- 
-mo23 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22)
-mo23 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
- 
-mo24 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23)
-mo24 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
- 
-mo25 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24)
-mo25 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
- 
-mo26 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24, X a25) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25)
-mo26 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        y25 = rateMO rs $ labelMO 25 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24, rateOf y25] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
- 
-mo27 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24, X a25, X a26) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26)
-mo27 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        y25 = rateMO rs $ labelMO 25 x
-        y26 = rateMO rs $ labelMO 26 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24, rateOf y25,
-             rateOf y26] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
- 
-mo28 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27)
-mo28 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26, y27)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        y25 = rateMO rs $ labelMO 25 x
-        y26 = rateMO rs $ labelMO 26 x
-        y27 = rateMO rs $ labelMO 27 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24, rateOf y25,
-             rateOf y26, rateOf y27] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
- 
-mo29 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28)
-mo29 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26, y27,
-     y28)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        y25 = rateMO rs $ labelMO 25 x
-        y26 = rateMO rs $ labelMO 26 x
-        y27 = rateMO rs $ labelMO 27 x
-        y28 = rateMO rs $ labelMO 28 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24, rateOf y25,
-             rateOf y26, rateOf y27, rateOf y28] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
- 
-mo30 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28,
-        X a29) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28, a29)
-mo30 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26, y27,
-     y28, y29)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        y25 = rateMO rs $ labelMO 25 x
-        y26 = rateMO rs $ labelMO 26 x
-        y27 = rateMO rs $ labelMO 27 x
-        y28 = rateMO rs $ labelMO 28 x
-        y29 = rateMO rs $ labelMO 29 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24, rateOf y25,
-             rateOf y26, rateOf y27, rateOf y28, rateOf y29] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
- 
-mo31 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28,
-        X a29, X a30) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28, a29, a30)
-mo31 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26, y27,
-     y28, y29, y30)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        y25 = rateMO rs $ labelMO 25 x
-        y26 = rateMO rs $ labelMO 26 x
-        y27 = rateMO rs $ labelMO 27 x
-        y28 = rateMO rs $ labelMO 28 x
-        y29 = rateMO rs $ labelMO 29 x
-        y30 = rateMO rs $ labelMO 30 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24, rateOf y25,
-             rateOf y26, rateOf y27, rateOf y28, rateOf y29, rateOf y30] 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
- 
-mo32 ::
-       (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10,
-        X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19,
-        X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28,
-        X a29, X a30, X a31) =>
-       MultiOut ->
-         (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,
-          a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27,
-          a28, a29, a30, a31)
-mo32 x
-  = (y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14,
-     y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26, y27,
-     y28, y29, y30, y31)
-  where y0 = rateMO rs $ labelMO 0 x
-        y1 = rateMO rs $ labelMO 1 x
-        y2 = rateMO rs $ labelMO 2 x
-        y3 = rateMO rs $ labelMO 3 x
-        y4 = rateMO rs $ labelMO 4 x
-        y5 = rateMO rs $ labelMO 5 x
-        y6 = rateMO rs $ labelMO 6 x
-        y7 = rateMO rs $ labelMO 7 x
-        y8 = rateMO rs $ labelMO 8 x
-        y9 = rateMO rs $ labelMO 9 x
-        y10 = rateMO rs $ labelMO 10 x
-        y11 = rateMO rs $ labelMO 11 x
-        y12 = rateMO rs $ labelMO 12 x
-        y13 = rateMO rs $ labelMO 13 x
-        y14 = rateMO rs $ labelMO 14 x
-        y15 = rateMO rs $ labelMO 15 x
-        y16 = rateMO rs $ labelMO 16 x
-        y17 = rateMO rs $ labelMO 17 x
-        y18 = rateMO rs $ labelMO 18 x
-        y19 = rateMO rs $ labelMO 19 x
-        y20 = rateMO rs $ labelMO 20 x
-        y21 = rateMO rs $ labelMO 21 x
-        y22 = rateMO rs $ labelMO 22 x
-        y23 = rateMO rs $ labelMO 23 x
-        y24 = rateMO rs $ labelMO 24 x
-        y25 = rateMO rs $ labelMO 25 x
-        y26 = rateMO rs $ labelMO 26 x
-        y27 = rateMO rs $ labelMO 27 x
-        y28 = rateMO rs $ labelMO 28 x
-        y29 = rateMO rs $ labelMO 29 x
-        y30 = rateMO rs $ labelMO 30 x
-        y31 = rateMO rs $ labelMO 31 x
-        rs
-          = [rateOf y0, rateOf y1, rateOf y2, rateOf y3, rateOf y4,
-             rateOf y5, rateOf y6, rateOf y7, rateOf y8, rateOf y9, rateOf y10,
-             rateOf y11, rateOf y12, rateOf y13, rateOf y14, rateOf y15,
-             rateOf y16, rateOf y17, rateOf y18, rateOf y19, rateOf y20,
-             rateOf y21, rateOf y22, rateOf y23, rateOf y24, rateOf y25,
-             rateOf y26, rateOf y27, rateOf y28, rateOf y29, rateOf y30,
-             rateOf y31]
diff --git a/src/CsoundExpr/Base/Pitch.hs b/src/CsoundExpr/Base/Pitch.hs
--- a/src/CsoundExpr/Base/Pitch.hs
+++ b/src/CsoundExpr/Base/Pitch.hs
@@ -2,79 +2,69 @@
 -- | Csound pitch constants
 
 module CsoundExpr.Base.Pitch 
-    (Pch, Oct,
+    (     
+     Pitch, Octave,
+     low, high, lower, higher,
+
+     -- * Pitch constants
+     --
+     -- | 'c' is 8.00, 'cs' is 8.01 etc.
      c, cs, d, ds, e, es, f, fs, g, gs, a, as, b, bs,
-     cb, db, eb, fb, gb, ab, bb, 
-     css, dss, ess, fss, gss, ass, bss,
-     cbb, dbb, ebb, fbb, gbb, abb, bbb)
+     cb, db, eb, fb, gb, ab, bb
+    )
 where
 
 import CsoundExpr.Base
 
-type Pch  = Irate
-type Oct  = Int
+type Pitch  = Irate
+type Octave = Int
 
--- natural, sharps
+-- | 'high' shifts pitch one octave higher
+high :: Pitch -> Pitch
+high = higher 1
 
-c, cs, d, ds, e, es, f, fs, g, gs, a, as, b, bs :: Oct -> Pch
+-- | 'low' shifts pitch one octave lower
+low :: Pitch -> Pitch
+low = lower 1
 
-c  = inDouble (8.00 + ) 
-cs = inDouble (8.01 + )
-d  = inDouble (8.02 + )
-ds = inDouble (8.03 + )
-e  = inDouble (8.04 + )
-f  = inDouble (8.05 + )
-fs = inDouble (8.06 + )
-g  = inDouble (8.07 + )
-gs = inDouble (8.08 + )
-a  = inDouble (8.09 + )
-as = inDouble (8.10 + )
-b  = inDouble (8.11 + )
+-- | 'higher' shifts pitch by @n@ octaves higher
+higher :: Octave -> Pitch -> Pitch
+higher n = ( + (double $ fromIntegral n))
 
+-- | 'lower' shifts pitch by @n@ octaves lower
+lower :: Octave -> Pitch -> Pitch
+lower n = higher (-n)
 
-inDouble :: (Double -> Double) -> Oct -> Pch
-inDouble f = fromDouble . f . toDouble 
-    where toDouble   = fromInteger  . toInteger
-          fromDouble = fromRational . toRational
 
+-- natural, sharps
 
+c, cs, d, ds, e, es, f, fs, g, gs, a, as, b, bs :: Pitch
 
+c  = 8.00 
+cs = 8.01
+d  = 8.02
+ds = 8.03
+e  = 8.04
+f  = 8.05
+fs = 8.06
+g  = 8.07
+gs = 8.08
+a  = 8.09
+as = 8.10
+b  = 8.11
+
 es = f
-bs = c . (+1)
+bs = high c
 
 -- flats
 
-cb, db, eb, fb, gb, ab, bb :: Oct -> Pch
+cb, db, eb, fb, gb, ab, bb :: Pitch
 
-cb = b . (\x -> x - 1)
+cb = low b 
 db = cs
 eb = ds
 fb = e
 gb = fs
 ab = gs
 bb = as
-
--- double sharps
-
-css, dss, ess, fss, gss, ass, bss :: Oct -> Pch
-
-css = d
-dss = e
-ess = fs
-fss = g
-gss = a
-ass = b
-bss = cs . (+1)
-
--- double flats
-
-cbb, dbb, ebb, fbb, gbb, abb, bbb :: Oct -> Pch
-
-cbb = bb . (\x -> x - 1)
-dbb = c
-ebb = d
-fbb = eb
-gbb = f
-abb = g
-bbb = a
 
diff --git a/src/CsoundExpr/Base/Pretty.hs b/src/CsoundExpr/Base/Pretty.hs
--- a/src/CsoundExpr/Base/Pretty.hs
+++ b/src/CsoundExpr/Base/Pretty.hs
@@ -1,11 +1,10 @@
 module CsoundExpr.Base.Pretty(
         Cs.CsoundFile, Cs.Flags,
         Player, FileName,
-        csd, play)
+        csd, play, playDac)
 where
 
 
-import Temporal.Media(EventList)
 import qualified CsoundExpr.Translator.Cs.CsoundFile as Cs
 import CsoundExpr.Translator.Csd
 import CsoundExpr.Base.Header
@@ -15,6 +14,7 @@
 import System.Directory
 import qualified System.FilePath as FP 
 
+import Temporal.Media(EventList)
 
 ---------------------------------------------------
 ---------------------------------------------------
@@ -34,6 +34,8 @@
 --
 -- Example (d minor) :
 --
+-- >import Temporal.Music.Notation.Score
+-- >
 -- >import CsoundExpr
 -- >import CsoundExpr.Opcodes
 -- >import CsoundExpr.Base.Pitch
@@ -53,15 +55,13 @@
 -- >instr :: Irate -> SignalOut
 -- >instr x = out $ oscilA [] (num 1000) (cpspch x) sinWave
 -- >
--- >sco = fmap instr $ line $ map (note 1) [d 0, f 0, a 0, d 1]
+-- >sco = fmap instr $ line $ map (note 1) [d, f, a, high d]
 -- >
--- >main = print $ csd flags header $ toList sco
---
-
-csd :: Cs.Flags                     -- ^ flags 
-    -> Header                       -- ^ header section
-    -> EventList Dur SignalOut      -- ^ score section
-    -> Cs.CsoundFile                -- ^ csd file
+-- >main = print $ csd flags header $ renderScore sco
+csd :: Cs.Flags                 -- ^ flags 
+    -> Header                   -- ^ header section
+    -> EventList Dur SignalOut  -- ^ score section
+    -> Cs.CsoundFile            -- ^ csd file
 csd = toCsd
 
 
@@ -72,7 +72,7 @@
 -- | 'play' writes 'CsoundFile' to file in temporal direcory, 
 -- executes csound on it, saves to .wav file, and invokes player
 --
--- >play "totem" "~/temp" "song" $ csd flags header $ toList scores
+-- >play "totem" "./temp" "song" $ csd flags header $ toList scores
 play :: Player -> FP.FilePath -> FileName -> Cs.CsoundFile -> IO ExitCode
 play playerCode tmpdir tmpfile csoundCode = do
     writeFile fileCsd (show csoundCode)
@@ -82,4 +82,15 @@
 	      fileWav = (tmpdir FP.</> tmpfile ++ ".wav")  	
 	      csound  = (("csound -o " ++ fileWav ++ " ") ++ )
 	      player  = ((playerCode ++ " ") ++ )
-	
+
+-- | 'playDac' writes 'CsoundFile' to  in temporal direcory, 
+-- executes csound on it, and plays online
+--
+-- >playDac "./temp" "song" $ csd flags header $ toList scores
+playDac :: FP.FilePath -> FileName -> Cs.CsoundFile -> IO ExitCode
+playDac tmpdir tmpfile csoundCode = do
+    writeFile fileCsd (show csoundCode)
+    system $ csound fileCsd
+	where fileCsd = (tmpdir FP.</> tmpfile ++ ".csd") 
+	      csound  = ("csound -odac " ++ )
+
diff --git a/src/CsoundExpr/Base/Score.hs b/src/CsoundExpr/Base/Score.hs
deleted file mode 100644
--- a/src/CsoundExpr/Base/Score.hs
+++ /dev/null
@@ -1,180 +0,0 @@
-{-# LANGUAGE FlexibleContexts #-}
-module CsoundExpr.Base.Score (
-    -- * Types
-	Time, Dur, Score, 
-    -- * Constructors
-    rest, note, toList,
-    -- * Duration querry
-	dur, 
-    -- * Arrangers
-    Arrangeable(..),
-	line, chord, loop, trill, rondo, reprise, 
-    -- * Transformers
-    -- ** In time domain
-    delay, 
-    stretch, tstretch, 
-    cut, takeS, dropS, reverseS,
-    pedal, pedalBy,
-    sustain, sustainBy,
-    -- ** Mappings
-    tmap, dmap, tdmap, 
-    -- * Misc
-    tmapRel, dmapRel, tdmapRel, tstretchRel,
-    linseg
-)
-where
-
-import CsoundExpr.Translator.Types(Time, Dur)
-import qualified Temporal.Media as M
-import Temporal.Media(Arrangeable(..), linseg)
-
-import Control.Arrow(second)
-
-
--- | representing score
-type Score a = M.MediaUnit Dur () a
-
-
--- | duration
-dur :: M.Temporal Dur a => a -> Dur
-dur = M.dur
-
--- | pause
-rest :: M.Temporal Dur a => Dur -> a
-rest = M.none
-
--- | stretch in time domain
-stretch :: M.Stretchable Dur a => Dur -> a -> a
-stretch = M.stretch
-
--- | stretch in time domain depndent on note's time
-tstretch :: M.TemporalStretchable Dur a => (Time -> Dur) -> a -> a
-tstretch = M.tstretch
-
--- | relative 'tstretch' 
---
--- time normalized by durtion of value
-tstretchRel :: M.TemporalStretchable Dur a => (Time -> Dur) -> a -> a
-tstretchRel = M.tstretchRel
-
--- | adds given amount of duration to all notes
-sustain :: Dur -> Score a -> Score a
-sustain = M.sustain
-
--- | general sustain
-sustainBy :: (Time -> Dur -> a -> (b, Dur)) -> Score a -> Score b
-sustainBy = M.sustainBy
-
--- | adds sustain, but total duration of score elements remains unchaged
---
--- notes are sustained within total duration interval.
--- adds given amount of time to all notes.
-pedal :: Dur -> Score a -> Score a 
-pedal dt' = pedalBy (\t dt a -> (a, dt + dt'))
-
--- | general \"pedal\"
---
--- total duration of score element remains unchanged. notes are sustained within total duration interval
-pedalBy :: (Time -> Dur -> a -> (b, Dur)) -> Score a -> Score b
-pedalBy f x = M.sustainBy f' x
-    where d = dur x
-          f' t dt a = second (min (d - t)) $ f t dt a 
-                       
-        
-
--- | constructor of score
-note :: Dur -> a -> Score a
-note = M.temp
-
-delay :: (M.Temporal Dur a, Arrangeable a) => Dur -> a -> a
-delay = M.delay
-
--- | sequential composition
-line :: Arrangeable a => [a] -> a
-line = M.sequent
-
--- | parallel composition
-chord :: Arrangeable a => [a] -> a
-chord = M.parallel
-
-loop :: Arrangeable a => Int -> a -> a
-loop = M.loop
-
--- | loop for two groups of notes
-trill :: Arrangeable a => Int -> a -> a -> a
-trill n a b = loop n $ line [a, b]
-
--- | rondo form
---
--- >rondo a b c = line [a, b, a, c, a]
-rondo :: Arrangeable a => a -> a -> a -> a
-rondo a b c = line [a, b, a, c, a]
-
--- | reprise form
---
--- >reprise a b1 b2 = line [a, b1, a, b2]
-reprise :: Arrangeable a => a -> a -> a -> a
-reprise a b c = line [a, b, a, c]
-
--- | extracting score parts in some time interval.
--- it reverses output if @t1 < t0@.
-cut :: Dur -> Dur -> Score a -> Score a
-cut = M.cut
-
--- | take sub-score from begining
-takeS :: Dur -> Score a -> Score a
-takeS = M.take
-
--- | drop sub-score
-dropS :: Dur -> Score a -> Score a
-dropS = M.drop
-
--- | reverse score
-reverseS :: Score a -> Score a
-reverseS = M.reverse
-
--- | temporal functor 'tmap' method for scores
---
--- map with time
-tmap :: (Time -> a -> b) -> Score a -> Score b
-tmap = M.tmap
-
--- |  temporal functor 'dmap' method for scores
---
--- map with duration
-dmap :: (Dur -> a -> b) -> Score a -> Score b
-dmap = M.dmap
-
--- | temporal functor 'tdmap' method for scores
---
--- map with time and duration
-tdmap :: (Time -> Dur -> a -> b) -> Score a -> Score b
-tdmap = M.tdmap
-
-
--- | relative 'tmap' 
---
--- map with time normalized by total duration value
-tmapRel :: (Time -> a -> b) -> Score a -> Score b
-tmapRel = M.tmapRel
-
--- |  relative 'dmap' 
---
--- map with duration normalized by total duration value
-dmapRel :: (Dur -> a -> b) -> Score a -> Score b
-dmapRel = M.dmapRel
-
--- | relative 'tdmap'
---
--- map with time and duration normalized by total duration value
-tdmapRel :: (Time -> Dur -> a -> b) -> Score a -> Score b
-tdmapRel = M.tdmapRel
-
-
-
-
-
--- | transform 'Score' to 'EventList'
-toList :: Score a -> M.EventList Dur a
-toList = M.fromMediaUnit (const id)
-
diff --git a/src/CsoundExpr/Translator/Csd.hs b/src/CsoundExpr/Translator/Csd.hs
--- a/src/CsoundExpr/Translator/Csd.hs
+++ b/src/CsoundExpr/Translator/Csd.hs
@@ -3,7 +3,7 @@
 where
 
 import Text.PrettyPrint
-import Temporal.Media(EventList, Temporal(..))
+import Temporal.Media(EventList(..))
 
 
 import qualified CsoundExpr.Translator.Cs.CsTree       as La
@@ -44,6 +44,9 @@
           tDur      = Cs.TotalDuration $ dur scores 
           scores'   = fmap fromSignalOut scores
           (instr0, midi, order) = parseInits inits
+
+dur :: EventList Dur a -> Dur
+dur (EventList t xs) = t
 
 
 ---------------------------------------------------------------
diff --git a/src/CsoundExpr/Translator/Score.hs b/src/CsoundExpr/Translator/Score.hs
--- a/src/CsoundExpr/Translator/Score.hs
+++ b/src/CsoundExpr/Translator/Score.hs
@@ -6,7 +6,7 @@
 import Data.Function
 
 
-import Temporal.Media(EventList(..))
+import Temporal.Media(EventList(..), Event(..))
 
 import qualified Data.Map as Map
 
@@ -53,7 +53,7 @@
 		    (x:xs) -> let (x1, x2) = partition (pred x) xs
 			      in  iterScoreList (res ++ [x : x1]) x2
 	  pred = liftPredicateToList equalStructure `on` thd
-	  toList (EventList _ xs) = xs
+	  toList (EventList _ xs) = map (\(Event t d a) -> (t, d, a)) xs
 
 
 foldVals :: [(Time, Time, [(NodeId, ValueId)])] -> ([(NodeId, PfieldId)], [Note])
diff --git a/src/CsoundExpr/Tutorial.hs b/src/CsoundExpr/Tutorial.hs
deleted file mode 100644
--- a/src/CsoundExpr/Tutorial.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-
-{-|
-    Csound-expression allows csound code construction in functional way.
-
-    It has two parts "CsoundExpr.Base" and "CsoundExpr.Opcodes".
-    "Csound.Base" contains essential functionality of the package. Csound code 
-    can be produced with "Csound.Base". "Csound.Opcodes" contains auxillary 
-    functions to build csound instruments.
-
-    
-    Tutorial contents :
-
-    * "CsoundExpr.Tutorial.Intro"  
-    
-
-    * "CsoundExpr.Tutorial.Composition" 
-
-        score section
-
-    * "CsoundExpr.Tutorial.Orchestra"
-
-        orchestra section 
-        
-    * "CsoundExpr.Tutorial.Limits"        
-    
-        explains hack-features, limitations
-
-    
-    Note :
-
-    Feel free to report english-language bugs in tutorial or in docs.
-
--}
-
-
-
-module CsoundExpr.Tutorial where
diff --git a/src/CsoundExpr/Tutorial/Composition.hs b/src/CsoundExpr/Tutorial/Composition.hs
deleted file mode 100644
--- a/src/CsoundExpr/Tutorial/Composition.hs
+++ /dev/null
@@ -1,318 +0,0 @@
-{-|
-    Module "CsoundExpr.Base.Score" provides functions to 
-    construct csound's score section
-
-    * Prev : "CsoundExpr.Tutorial.Intro"
-
-    * Next : "CsoundExpr.Tutorial.Orchestra" 
--}
-
-
-module CsoundExpr.Tutorial.Composition (    
-    -- * EventList
-    {-|     
-    'EventList' contains values with time marks. 
-    Value begins at some time and lasts for some time (see temporal-media package)
-    'EventList' can be constructed from 'Score' with 'toList' function. 
-    -}
-    exmpEventList,
-
-    -- * Score
-    
-    {-|
-    'Score' is tree structure that represents music. Lists contain notes and nodes
-    contain information about how subtrees relate to each other in time. 
-    Subtrees can be sequential or parallel. 'csd' function takes in 'EventList' 
-    'Double' 'SignalOut'. 'Double' is type  of time-marks. 'SignalOut' represents 
-    instrument structure. 
-    -}
-    exmpScore,
-
-    -- * Score's instances
-    -- | Score is a Functor, Monad, Temporal, Stretchable, Arrangeable and TemporalFunctor
-    
-    -- ** Functor
-    -- | It makes possible to represent csound's instrument as
-    -- a function from note representation to 'SignalOut'.    
-    -- 
-    -- To play on instrument means to apply instrument to 'Score'
-    -- of its notes.
-    --
-    -- >-- oscillator instrument
-    -- >instr :: Irate -> SignalOut
-    -- >instr x = out $ oscilA [] (num 1000) (cpspch x) $ gen10 4096 [1]
-    -- >
-    -- >exmpScoFunctor = fmap instr $ line $ map (note 1) [d 0, f 0, a 0, d 1]
-
-    exmpScoFunctor,
-    -- ** Monad       
-        
-    {-|
-        Gives way to more structured composition.
-
-    
-        @return a@ makes note of @a@ that lasts for 1 sec.
-        @ma >>= f@ is better understood by its @join@ function.
-
-        >ma >>= f = joinScore $ fmap f ma
-        >
-        >joinScore :: Score (Score a) -> Score a
-
-        @'Score' a@ is a tree. Nodes represent sequent/parallel 
-        composition and leaves represent value @a@ or rest that lasts 
-        for some time @t@. 'joinScore' takes in 'Score' that contains some more 
-        'Score' 's in its leaves, and builds one tree by substituting 
-        values of Scores by Scores. Note that while substituting it stretches 
-        duration of 'Score' by duration of value.  
-
-        >type ChordType = [Irate]
-        >
-        >majC, minC :: ChordType
-        >
-        >majC = [0, 0.04, 0.07]  -- in csound 0.01 is one half-tone
-        >minC = [0, 0.03, 0.07]
-        >
-        >arpeggi :: (Irate, ChordType) -> Score Irate
-        >arpeggi baseNote chordType = line $ map return (pchs ++ pchs)
-        >   where pchs = map ((+ baseNote) . (chordType !! )) [0, 1, 2, 1, 2, 1]    
-        >
-        >harmony = line $ map return 
-        >    [(e 0, minC), (a (-1), minC), (d 0, majC),    (g 0, majC),
-        >     (c 0, majC), (f 0, minC),    (b (-1), majC), (e 0, minC)]
-        >
-        >sco = harmony >>= arpeggi
-    -}
-
-    exmpScoMonad,
-    -- ** Temporal
-    
-    {-| There are two methods defined on 'Temporal' objects. 
-        
-        >none :: Dur -> a  -- construct rest
-        >dur  :: a -> Dur  -- ask for duration
-    -}
-
-    exmpScoTemporal,
-    -- ** Stretchable
-    
-    {-| Stretching things in time domain with 'stretch' method.
-
-        > stretch :: Dur -> a -> a
-    -}
-
-    exmpScoStretchable,
-    -- ** Arrangeable
-    --
-    exmpScoArrangeable,
-
-    -- | Constructing things in sequent '(+:+)' and parallel ways '(=:=)'
-    
-    -- ** TemporalFunctor
-    {-|
-    There is class called 'TemporalFunctor' with methods for time/duration dependent mapping.
-    There are methods 
-    
-    
-    'tmap' - for time dependent mapping, 
-    
-    'dmap' - for duration dependent mapping and
-
-    'tdmap' - for time/duration dependent mapping. 
-    
-
-    >class Dur t => TemporalFunctor f where
-    >    tmap  :: (t -> a -> b)      -> f a -> f b
-    >    dmap  :: (t -> a -> b)      -> f a -> f b
-    >    tdmap :: (t -> t -> a -> b) -> f a -> f b
-
-    Note in 'Score' can be thought of as an event that happens in some time @t@ 
-    and lasts for some time @d@. Thus note carries three parametters value @a@, start time @t@ 
-    and duration time @d@. 'TemporalFunctor' provides different mappings over time parameters.
-
-    First argument of 'tmap' function means function from start time of
-    note and note's value @a@ to new value @b@
-
-
-    example : fadeOut
-
-    >instr :: Irate -> SignalOut
-    >instr vol = out $ oscilA [] vol (num 440) $ gen10 4096 [1]
-    >
-    >sco = fmap instr $ tmap (\t v -> double (5 - t) * v) $ loop 5 $ note 1 1000    
-
-    First argument of dmap's function means function from duration 
-    of value @t@ and value itself @a@ to new value @b@.
-
-    It allows to construct instruments that can rely on note duration.
-
-    >instr :: Dur -> Irate -> SignalOut
-    >instr t vol = out $ (env t <*> ) $ fst $ se1 $ unirandA vol
-    >   where env t
-    >           | t < 1     = lineK  1 idur 0
-    >           | otherwise = exponK 1 idur 0
-    >
-    >v1 = 1.5 * v0
-    >v0 = 5000
-    >
-    >sco = dmap instr $ line [note 0.5 v1, note 0.5 v0, rest 1, note 2 v1]
-
-    Note : 
-
-    >stretch t (dmap instr sco) =/= dmap instr (stretch t sco)
-
-    'tdmap' combines 'tmap' and 'dmap' behavior. It's first argument is a function from
-    time, duration and value to value.
-
-    There are helping functions 'tmapRel', 'dmapRel' and 'tdmapRel'. They express 
-    time/duration dependent mapping with normalization in time domain. All time values are notmalized by 
-    total duration of value.
-
-    @sco@ of fadeOut example can be rewritten as
-
-    >sco = fmap instr $ tmapRel (\t v -> double (1 - t) * v ) $ loop 5 $ note 1 5000 
-
-   -}
-
-    exmpScoTemporalFunctor,
-
-    -- * Example
-
-    -- | radiohead - weird fishes (intro), see src
-   main
-
-    )where
-
-import Temporal.Media(EventList)
-
-import CsoundExpr.Base
-import CsoundExpr.Base.Pitch
-import CsoundExpr.Opcodes hiding (delay)
-
-exmpEventList :: EventList Double Irate
-exmpEventList = toList $ line $ map (note 1) [c 0, d 0, e 0, f 0, g 0, a 0, b 0, c 1]
-
-
-exmpScore :: Score String
-exmpScore = note 1 "hello" +:+ rest 1 +:+ note 1 "world"
-
--- oscilator instrument
-instr :: Irate -> SignalOut
-instr x = out $ oscilA [] (num 1000) (cpspch x) $ gen10 4096 [1]
-
-exmpScoFunctor = fmap instr $ line $ map (note 1) [d 0, f 0, a 0, d 1]
-
-
-type ChordType = [Irate]
-
-majC, minC :: ChordType
-
-majC = [0, 0.04, 0.07]  -- in csound 0.01 is one half-tone
-minC = [0, 0.03, 0.07]
-
-arpeggi :: Irate -> ChordType -> Score Irate
-arpeggi baseNote chordType = line $ map return (pchs ++ pchs)
-   where pchs = map ((+ baseNote) . (chordType !! )) [0, 1, 2, 1, 2, 1]    
-
-harmony = line $ map return 
-    [(e 0, minC), (a (-1), minC), (d 0, majC),    (g 0, majC),
-     (c 0, majC), (f 0, minC),    (b (-1), majC), (e 0, minC)]
-
-exmpScoMonad = harmony >>= uncurry arpeggi
-
-exmpScoTemporal = dur exmpScoMonad
-
-exmpScoStretchable = stretch 2 exmpScoMonad
-
-exmpScoArrangeable = exmpScore
-
-
-instrT :: Dur -> Irate -> SignalOut
-instrT t vol = out $ (env t <*> ) $ fst $ se1 $ unirandA vol
-   where env t
-           | t < 1     = lineK  1 idur 0
-           | otherwise = exponK 1 idur 0
-
-exmpScoTemporalFunctor = tmap instrT $ line [note 0.5 v1, note 0.5 v0, rest 1, note 2 v1]
-
-
---------------------------------------------------------
--- example 
---
--- radiohead - weird fishes (intro)
-
-mapSnd f (a, b) = (a, f b)
-
-
-flags = "-d"
-
--- volume levels
-
-v1 = 1.3 * v0
-v0 = 7000 
-
--- instruments
-
-pluckInstr :: (Irate, Irate) -> SignalOut 
-pluckInstr (amp, pch) = outList [
-	out $ env <*> wgpluck2 0.75 amp (cpspch pch) (num 0.75) (num 0.5), 
-	xtratim 1]
-	where env = linsegrK [0, idur * 0.05, 1,  idur * 0.9, 1] 1 0  
-
-guitar = pluckInstr . mapSnd (+ (-1))
-
-
---chords
-
-guitarChord1, guitarChord2, guitarChord3 :: [Irate] -> Score (Irate, Irate)
-
--- volumes 4/4
-vs x = map ( * x) $ cycle [v1, v0, v0, v0]
-
--- guitar 1
-guitarChord1 = line . map return . zip (vs 1) . concat . replicate 10
-
-ch11 = [d 1, g 0, e 0]
-ch12 = map ( + 0.02) ch11
-ch13 = [a 1, a 0, cs 1]
-ch14 = [fs 1, b 0, g 0]
-
-chSeq1 = line $ map return $ [ch11, ch12, ch13, ch14]
-
--- guitar 2
-guitarChord2 = line . map return . zip (vs 0.5) . concat . replicate 6 . arpeggi
-	where arpeggi x = x ++ take 2 x
-
-
-ch21 = [g 0, d 1, e 1]
-ch22 = map (+ 0.02) ch21
-ch23 = [cs 1, e 1, a 1]
-ch24 = [d 1, g 1, e 1]
-
-chSeq2 = line $ map return $ [ch21, ch22, ch23, ch24]
-
--- guitar 3
-guitarChord3 = line . map return . zip (vs 0.2) . concat . replicate 6 . arpeggi
-	where arpeggi x = take 2 x ++ x
-
-ch31 = [e 1, g 1, b 1]
-ch32 = map (+ 0.02) ch31
-ch33 = [fs 1, a 1, cs 2]
-ch34 = [d 2, g 1, b 1]
-
-chSeq3 = line $ map return $ [ch31, ch32, ch33, ch34]
-
--- scores
-
-scoG1 = fmap guitar $ chSeq1 >>= guitarChord1
-scoG2 = fmap guitar $ chSeq2 >>= guitarChord2
-scoG3 = fmap guitar $ chSeq3 >>= guitarChord3
-
-scoG2intro = cut (3*30) (4*30) scoG2
-
-intro  = chord [scoG1, scoG3, delay (3*30) scoG2intro]
-chords = loop 3 $ chord [scoG1, scoG2, scoG3] 
-
-sco = stretch 0.17 $ intro +:+ chords
-
-main = print $ csd flags headerMono $ toList sco 
-
diff --git a/src/CsoundExpr/Tutorial/Intro.hs b/src/CsoundExpr/Tutorial/Intro.hs
deleted file mode 100644
--- a/src/CsoundExpr/Tutorial/Intro.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-|
-    Csound-expression is csound code generator. Program produces value of 'CsoundFile' type. 
-    'CsoundFile' is 'Show'. So that is the way to get csound code. 'csd' function can be invoked
-    to make value of 'CsoundFile' type.         
-
-    >csd :: Flags -> Header -> EventList Dur SignalOut -> CsoundFile
-
-    * 'Flags' is 'String'. It's pasted in place of csounds flags. 
-
-    * 'Header' is csound header declaration. 
-        See "CsoundExpr.Base.Header" for more details.
-
-    * 'EventList' represents csound orchestra and score sections. 
-        This tutorial is all about how to construct 'EventList'.
-   
-
-    'EventList'
-
-
-    'EventList' contains values with time marks. 
-    Value begins at some time and lasts for some time (see temporal-media package)
-    'EventList' can be constructed from 'Score' with 'toList' function. 
-
-    'Score'
-
-
-    'Score' is tree structure that represents music. Lists contain notes and nodes
-    contain information about how subtrees relate to each other in time. 
-    Subtrees can be sequential or parallel. Module "CsoundExpr.Base.Score" exposes
-    combinators for 'EventList' / 'Score' building.
-    'csd' function takes in 'EventList' 'Double' 'SignalOut'. 'Double' is type 
-    of time-marks. 'SignalOut' represents instrument structure. 
-
-
-    Let's make first simple csound code block. 
-    It plays d minor chord wih oscilator.
-
-    >import CsoundExpr
-    >import CsoundExpr.Opcodes(out, oscilA, cpspch)
-    >import CsoundExpr.Base.Pitch
-    > 
-    >flags  = "-d -o dm.wav"
-    >
-    >-- (<=>)  - assignment operator
-    >-- instr0 - packs assignent statements in header statement
-    >setup :: SignalInit
-    >setup = instr0 [
-    >        gSr     <=> 44100,
-    >        gKr     <=> 4410,
-    >        gKsmps  <=> 10,
-    >        gNchnls <=> 1]
-    >
-    >header :: Header
-    >header = [setup]
-    >
-    >-- gen routine (see CsoundExpr.Base.Gens)
-    >sinWave :: Irate
-    >sinWave = gen10 4096 [1] 
-    >
-    >-- oscilator instrument
-    >instr :: Irate -> SignalOut
-    >instr x = out $ oscilA [] (num 1000) (cpspch x) sinWave
-    >
-    >-- line, note - Score constructors (see CsoundExpr.Base.Score)
-    >-- Score is a Functor, so it's possible to use instruments as
-    >--   functions on abstract note representation.
-    >--   here note is represented with pitch value of type Irate 
-    >--   (Irate is csound's init value) 
-    >--
-    >sco = fmap instr $ line $ map (note 1) [d 0, f 0, a 0, d 1]
-    >
-    >
-    >-- toList - converts Score to EventList (see CsoundExpr.Base.Score)
-    >dmCode = csd flags header $ toList sco
-
-
-    * Prev : "CsoundExpr.Tutorial"
-
-    * Next : "CsoundExpr.Tutorial.Composition"
--}
-
---
---
-module CsoundExpr.Tutorial.Intro (
-        dmCode
-        )
-where
-
-
-
-import CsoundExpr
-import CsoundExpr.Opcodes
-import CsoundExpr.Base.Pitch
- 
-flags  = "-o dm.wav"
-
--- (<=>)  - assignment operator
--- instr0 - packs assignent statements in header statement
-setup = instr0 [
-        gSr     <=> 44100,
-        gKr     <=> 4410,
-        gKsmps  <=> 10,
-        gNchnls <=> 1]
-
-header = [setup]
-
--- gen routine
-sinWave = gen10 4096 [1]
-
--- oscilator instrument
-instr :: Irate -> SignalOut
-instr x = out $ oscilA [] (num 1000) (cpspch x) sinWave
-
--- line, note - Score constructors (see CsoundExpr.Base.Score)
--- Score is a Functor, so it's possible to use instruments as
---   functions on abstract note representation.
---   here note is represented with pitch value of type Irate 
---   (Irate is csound's init value) 
---
-sco = fmap instr $ line $ map (note 1) [d 0, f 0, a 0, d 1]
-
-
--- toList - converts Score to EventList
-dmCode = csd flags header $ toList sco
-
-
-
-
diff --git a/src/CsoundExpr/Tutorial/Limits.hs b/src/CsoundExpr/Tutorial/Limits.hs
deleted file mode 100644
--- a/src/CsoundExpr/Tutorial/Limits.hs
+++ /dev/null
@@ -1,83 +0,0 @@
-
--- | This chapter explains some limitations and hack-features of library.
---
---
--- * Prev : "CsoundExpr.Tutorial.Orchestra"
---
--- * Next : <http://www.csounds.com/manual/html/index.html>
-
-
-module CsoundExpr.Tutorial.Limits ( 
-    -- * What can not be expressed 
-    
-    
-    -- ** ids
-    {-| 
-        The major benefit and major problem of csound-expression is 
-        abscense of ids for p-fields, ftables, notes and instruments.
-        
-    
-        no ids for ... means ... no 
-
-        p-fields/notes - opcodes that rely on p-fields or invoke instruments
-
-        ftables - k-rate ftables
-
-        instruments - convenient way to specify order of instruments
-    -}
-
-    -- ** program flow control
-    
-        -- |  there is no program flow control opcodes (like if, then, goto)
-
-    -- ** Srate
-
-        -- | i've decided to represent csound's S-rate with 'String'.
-        -- 
-        -- Signal is represented with tree and it means i can't include
-        -- opcodes that produce Srate
-
-    -- * hack-way around (what somehow can be expressed)
-
-    -- ** instrument order
-    {-|
-        Orchestra section is generated from 'EventList'. Different instruments
-        have different tree structure and one instrument's tree can't be 
-        transformed into another one by replacing leaf-values only. 
-
-        You can point to instrument by its structure. There is opcode in 
-        "CsoundExpr.Base.Header" that specifies order of instruments by
-        list of notes. 'instrOrder' takes in list of notes, if instrument's
-        tree is equivalent to note it is placed in relation to list of notes.
-
-        There are ways to make mistake. Sometimes it's unpredictable. 
-        
-        
-        In example below 
-
-        @q1 =/= q2@
-
-        @sco@ contains two instruments (one with @x@, and another one with @cpspch x@)
-
-        >
-        >osc x = oscilA [] (num 1000) x $ gen10 4096 [1]
-        >env   = lineK 1 idur 0
-        >
-        >q1 x = osc x <*> env
-        >q2 x = env   <*> osc x
-        >
-        >sco1 = note 1 440
-        >sco2 = note 1 $ cpspch 8.00
-        >
-        >sco = fmap q1 $ sco1 +:+ sco2
-
-        I think maybe it's worthwhile to introduce some way of instrument id
-        assignment.
-    -}
-
-    
-    )
-
-where
-
-
diff --git a/src/CsoundExpr/Tutorial/Orchestra.hs b/src/CsoundExpr/Tutorial/Orchestra.hs
deleted file mode 100644
--- a/src/CsoundExpr/Tutorial/Orchestra.hs
+++ /dev/null
@@ -1,317 +0,0 @@
--- | Guide to instrument-making
---
--- * Prev : "CsoundExpr.Tutorial.Composition"
---
--- * Next : "CsoundExpr.Tutorial.Limits"
-
-
-module CsoundExpr.Tutorial.Orchestra (
-
-    -- * Instruments
-
-    {-|
-    Instruments are functions from some signal representation to signal. 
-    'Score' is a 'Functor', so to play on instrument means to apply instrument 
-    to 'Score' of its notes. Instrument can be made with opcodes.
-    Translator derives p-fields from instrument structure. There are only
-    two explicit p-fields 'itime' and 'idur' (@p2@ and @p3@ in csound).
-    -}
-
-    exmpInstr,
-
-    -- * Signals / Types
-
-    {-|
-    Signals are represented with trees. Tree contains information about how 
-    signal was build. 
-    
-    There are five types for signals ("CsoundExpr.Base.Types").
-
-    'Arate' is audio rate signal
-
-    'Krate' is control rate signal
-
-    'Irate' is init value
-   
-    'SignalOut' is no output at all (it's produced by opcodes like out, outs, xtratim) 
-
-    'BoolRate' is comparision of two control or init rate signals
-
-    
-    There are two classes to allow csound's polymorphism : 'X' and 'K'
-
-    'X' = 'Arate' | 'Krate' | 'Irate'
-
-    'K' = 'Krate' | 'Irate'
-
-
-    Csound's S - signal is represented with 'String'.
-    Ftable is represented with 'Irate'.
-
-    
-    There are two special types 'MultiOut' 
-    (for opcodes that may produce several outputs, see "CsoundExpr.Base.MultiOut")
-    and 'SideEffect' 
-    (for opcodes that rely on number of appearances in csound code, 
-     like @unirand@, see "CsoundExpr.Base.SideEffect")    
-    -}
-
-    -- * Opcodes 
-
-    {-|
-        Naming conventions : Opcodes are named after csound's counterparts usually.
-        Some opcodes in csound can produce signals of different rates by request (oscil, linseg).
-        Those opcodes are labelled with suffix. Suffix defines output rate of signal (oscilA, oscilK). 
-        Some opcodes in csound have unfixed number of inputs due to setup parameters, almost all of them.
-        Those opcodes have first argument that is list of setup parameters.
-
-        example
-
-        >oscilA :: (X a, X b) => [Irate] -> a -> b -> Irate -> Arate
-        >oscilK :: (K a, K b) => [Irate] -> a -> b -> Irate -> Krate        
-    -}
-
-
-    -- * Imperative style csound code
-    
-    {-|
-        Most of csound opcodes can be used in functional way. You can plug them in one another, 
-        and make expressions, but some of them behave like procedures and rely on order 
-        of execution in instrument. Module "CsoundExpr.Base.Imperative" provides functions
-        to write imperative csound code. 
-
-        'outList' - to sequence procedures
-
-        '(/<=/>)' - Assignment
-
-        'ar', 'kr', 'ir', 'gar', 'gkr', 'gir' - named values, to produce signal with specified name and rate.
-
-        
-        Functional style :
-
-        >exmpInstr :: Irate -> SignalOut
-        >exmpInstr pch = out $ oscilA [] (num 1000) (cpspch pch) $ gen10 4096 [1]
-
-
-        Imperative style :
-
-        >exmpImper :: Irate -> SignalOut 
-        >exmpImper pch = outList [        
-        >        ir "amp" <=> num 1000,
-        >        ir "cps" <=> cpspch pch,
-        >        ir "ft"  <=> gen10 4096 [1],
-        >        ar "sig" <=> oscilA [] (ir "amp") (ir "cps") (ir "ft"),
-        >        out (ar "sig")]
-
-    -}
-    
-    exmpImper,
-    -- * Arithmetic
-    {-|
-        You can use polymorphic operations to do some arihmetic on signals 
-        from "CsoundExpr.Base.Arithmetic". And Signal is 'Num'. 'Eq' is undefined though.                    
-    -}
-
-    exmpArith,
-    -- * Preview
-
-    {-|
-        To see what will come out of an expression you can print it. Signal is 'Show'.
-    -}
-    exmpPreview,
-
-
-    -- * User Defined opcodes
-
-    {-|
-        You can add your own opcodes to library, see "CsoundExpr.Base.UserDefined"
-    -}
-
-    -- * MIDI 
-    
-    {-|
-        There are two ways to tell 'csd' to include instrument in csound file. 
-        Instrument can be a part of 'Score' or it can be midi instrument, then it should
-        be mentioned in 'massign' or 'pgmassign' function. If you want to play midi-instr
-        for some time @t@, you can tell it to 'csd' function by invoking 'csd' with @'rest' t@
-        in place of 'EventList' value.
-
-        >flags = "-odac -iadc  -+rtmidi=virtual -M0"
-        >
-        >header = [massign [] 1 instrMidi]
-        >
-        >instrMidi :: SignalOut
-        >instrMidi = out $ oscilA [] (num 1000) cpsmidi $ gen10 4096 [1]
-        >
-        >-- play instrMidi for 2 minutes
-        >exmpMidi = print $ csd flags header (rest 120)
-
-    -}
-    exmpMidi,
-
-    -- * Example    
-    -- | Song, see src
-
-    main
-)
-
- where
-
-import CsoundExpr.Base
-import CsoundExpr.Base.Pitch
-import CsoundExpr.Opcodes hiding (delay)
-
-------------------------------------
-
-exmpInstr :: Irate -> SignalOut
-exmpInstr pch = out $ oscilA [] (num 1000) (cpspch pch) $ gen10 4096 [1]
-
-exmpImper :: Irate -> SignalOut 
-exmpImper pch = outList [        
-        ir "amp" <=> num 1000,
-        ir "cps" <=> cpspch pch,
-        ir "ft"  <=> gen10 4096 [1],
-        ar "sig" <=> oscilA [] (ir "amp") (ir "cps") (ir "ft"),
-        out (ar "sig")]
-
-
-exmpArith pch = out $ (env <*>) $ oscilA [] (num 1000) (cpspch pch) $ gen10 4096 [1]
-    where env = lineK 1 idur 0
-
-
-exmpPreview = mapM_ print $ map ( $ (a 1)) [exmpInstr, exmpImper, exmpArith] 
-
-flagsMidi = "-odac -iadc  -+rtmidi=virtual -M0"
-
-header = [massign [] 1 instrMidi]
-
-instrMidi :: SignalOut
-instrMidi = out $ oscilA [] (num 1000) cpsmidi $ gen10 4096 [1]
-
--- play instrMidi for 2 minutes
-exmpMidi = print $ csd flagsMidi header (rest 120)
-
-----------------------------------------------------------------
-----------------------------------------------------------------
--- Example
---
--- Song
---
-
-mapSnd f (a, b) = (a, f b) 
-
-flags  = "-d"
-
-dot = stretch 1.5
-
-wn = note 1
-hn = note 0.5
-qn = note 0.25
-en = note 0.125
-
-
-sinWave = gen10 4096 [1]
-expWave = gen05 4096 [0.01, 4070, 1, 26, 0.01]
-
--- volume levels
---
-
-v1 = 1.3 * v0
-v0 = 10000 	
-
--- instruments
---
-
--- plucked
-
-pluckInstr :: (Irate, Irate) -> SignalOut 
-pluckInstr (amp, pch) = outList [
-	out $ env <*> wgpluck2 0.75 amp (cpspch pch) (num 0.75) (num 0.5), 
-	xtratim 1]
-	where env = linsegrK [0, idur * 0.05, 1,  idur * 0.9, 1] 1 0  
-
-guitar = pluckInstr . mapSnd (+ (-1))
-bass   = pluckInstr . mapSnd (+ (-2))
-
--- drums
-
-qCabasa = out $ cabasa [] 9000 0.01
-qBamboo = out $ bamboo [] (num 2500) 0.01
-
-shh = out $ (env <*> ) $ fst $ se1 $ unirandA (num 1000)
-	where env = exponK 1 idur 0.001
-
--- aahs 
-
-aahs :: Dur -> (Irate, Irate) -> SignalOut
-aahs t (amp, pch) 
-	| t < tShort = out $ env1 <*> osc pch
-	| otherwise  = outList [out $ env2 <*> osc pch, xtratim 1] 
-	where osc x  = oscilA [] amp (cpspch x) tab
-	      env1   = linsegK  $ norm (ps ++ [0.025, 0])
-	      env2   = linsegrK (norm $ ps ++ [0.025, 1]) 1 0 	
-	      norm   = zipWith (<*>) (cycle [1, idur])
-	      tab    = gen10 4096 [1, 0.7, 0.2, 0.7] 		
-	      tShort = 0.6/2	
-	      ps     = [0, 0.5, 0.2, 0.25, 0.3, 0.125, 0.5, 0.1, 1 :: Irate] 	
-
-
--- piece
---
-
--- chords
-
-bassChord, guitarChord :: (Irate, Irate, Irate, Irate) -> Score (Irate, Irate)
-
-bassChord (n1, _, _, _) = loop 4 $ line $ map en [(v1, n1), (v0, n1), (v0, n1), (v0, n1)]
-
-guitarChord (n1, n2, n3, n4) = line $ [qn (v1, n1)] ++ 
-	map (dot . qn) [(v0, n3), (v0, n2), (v1, n4), (v0, n3)] ++ [qn (v0, n4)]
-
-
-ch1 = (b (-1), d 0, a 0, cs 1)
-ch2 = (   d 0, fs 0, cs 1, d 1)
-ch3 = (g (-1), a (-1), fs 0, g 0)
-
-chordSeq = line $ map wn [ch1, ch2, ch1, ch3]
-
--- solo
-
-soloNotes :: [Irate] -> Score (Irate, Irate)
-soloNotes notes = stretch 2 $  
-	(line $ map return notes) >>= pulse
-
-pulse :: Irate -> Score (Irate, Irate)
-pulse = line . zipWith note durs . zip vols . repeat
-	where vols = map ((0.3 * v0) *)  [0.2, 0.4, 0.6, 0.8, 0.6, 0.4]
-	      durs = norm [1, 1.2 , 1, 1, 1, 1.5]	
-	      norm xs = map ( /sum xs) xs	  
-
--- scores
-
-scoBamboo = stretch 0.5 $ loop 15 $ delay 1 $ line $ map (note 1) $ replicate 3 qBamboo
-scoCabasa = loop (4*16) $ line [rest 0.25, qn qCabasa]
-scoShh    = delay 2 $ loop 8 $ line [wn shh, rest 3]
-
-scoDrums = chord [scoBamboo, delay 12 scoCabasa, delay 12 scoShh]
-
-scoGuitar = fmap guitar $ chordSeq >>= guitarChord
-scoBass   = fmap bass   $ chordSeq >>= bassChord
-
-accomp = chord [
-		delay 4  $ loop 5 scoGuitar, 
-		delay 12 $ loop 4 scoBass, 
-		scoDrums] 
-
-scoAahs1 = loop 2 $ dmap aahs $ soloNotes [d 1, cs 1, e 0, fs 0]
-scoAahs2 = loop 2 $ dmap aahs $ soloNotes [d 1, cs 1, a 0, d 0]
-scoAahs3 = loop 2 $ dmap aahs $ soloNotes [a 0, cs 1, g 0, fs 0]
-
-solo = delay 20 $ chord [
-		scoAahs1,
-	delay 5 $ stretch 1.3 scoAahs2,
-	delay 7 $ stretch 1.5 scoAahs3]
-
-sco = stretch 2.0 $ chord [solo, accomp]  
-
-main = print $ csd flags headerMono $ toList sco
