diff --git a/src/Synthesizer/Dimensional/Amplitude/Cut.hs b/src/Synthesizer/Dimensional/Amplitude/Cut.hs
--- a/src/Synthesizer/Dimensional/Amplitude/Cut.hs
+++ b/src/Synthesizer/Dimensional/Amplitude/Cut.hs
@@ -34,7 +34,6 @@
 import qualified Synthesizer.Dimensional.Rate as Rate
 import qualified Synthesizer.Dimensional.Amplitude as Amp
 
-import qualified Synthesizer.Generic.Signal2 as SigG2
 import qualified Synthesizer.Generic.Signal  as SigG
 import qualified Synthesizer.Generic.Cut     as CutG
 import qualified Synthesizer.State.Signal    as Sig
@@ -62,23 +61,25 @@
 
 {-# INLINE unzip #-}
 unzip ::
-   (SigG2.Transform sig (yv0, yv1) yv0,
-    SigG2.Transform sig (yv0, yv1) yv1) =>
+   (SigG.Transform sig (yv0, yv1),
+    SigG.Transform sig yv0,
+    SigG.Transform sig yv1) =>
    SigA.T rate amp (sig (yv0, yv1)) ->
    (SigA.T rate amp (sig yv0), SigA.T rate amp (sig yv1))
 unzip x =
-   let (ss0,ss1) = SigG2.unzip (SigA.body x)
+   let (ss0,ss1) = SigG.unzip (SigA.body x)
    in  (SigA.replaceBody ss0 x, SigA.replaceBody ss1 x)
 
 {-# INLINE unzip3 #-}
 unzip3 ::
-   (SigG2.Transform sig (yv0, yv1, yv2) yv0,
-    SigG2.Transform sig (yv0, yv1, yv2) yv1,
-    SigG2.Transform sig (yv0, yv1, yv2) yv2) =>
+   (SigG.Transform sig (yv0, yv1, yv2),
+    SigG.Transform sig yv0,
+    SigG.Transform sig yv1,
+    SigG.Transform sig yv2) =>
    SigA.T rate amp (sig (yv0, yv1, yv2)) ->
    (SigA.T rate amp (sig yv0), SigA.T rate amp (sig yv1), SigA.T rate amp (sig yv2))
 unzip3 x =
-   let (ss0,ss1,ss2) = SigG2.unzip3 (SigA.body x)
+   let (ss0,ss1,ss2) = SigG.unzip3 (SigA.body x)
    in  (SigA.replaceBody ss0 x, SigA.replaceBody ss1 x, SigA.replaceBody ss2 x)
 
 
@@ -300,20 +301,20 @@
 zip ::
    (Ord y, Field.C y, Dim.C u,
     Module.C y yv0, Module.C y yv1,
-    SigG.Read sig yv0, SigG2.Transform sig yv1 (yv0,yv1)) =>
+    SigG.Read sig yv0, SigG.Transform sig yv1, SigG.Transform sig (yv0,yv1)) =>
    Signal s u y sig yv0 -> Signal s u y sig yv1 -> Signal s u y sig (yv0,yv1)
 zip =
-   merge (SigG2.zipWithState (,)) . SigA.restore
+   merge (SigG.zipWithState (,)) . SigA.restore
 
 {-# INLINE zipVolume #-}
 zipVolume ::
    (Field.C y, Dim.C u,
     Module.C y yv0, Module.C y yv1,
-    SigG.Read sig yv0, SigG2.Transform sig yv1 (yv0,yv1)) =>
+    SigG.Read sig yv0, SigG.Transform sig yv1, SigG.Transform sig (yv0,yv1)) =>
    DN.T u y ->
    Signal s u y sig yv0 -> Signal s u y sig yv1 -> Signal s u y sig (yv0,yv1)
 zipVolume vol =
-   mergeVolume (SigG2.zipWithState (,)) vol . SigA.restore
+   mergeVolume (SigG.zipWithState (,)) vol . SigA.restore
 
 
 
@@ -321,27 +322,27 @@
 mergeStereo ::
    (Ord y, Field.C y, Dim.C u,
     Module.C y yv,
-    SigG2.Transform sig yv (Stereo.T yv)) =>
+    SigG.Transform sig yv, SigG.Transform sig (Stereo.T yv)) =>
    Signal s u y sig yv -> Signal s u y sig yv -> Signal s u y sig (Stereo.T yv)
-mergeStereo = merge (SigG2.zipWith Stereo.cons)
+mergeStereo = merge (SigG.zipWith Stereo.cons)
 
 {-# INLINE mergeStereoVolume #-}
 mergeStereoVolume ::
    (Field.C y, Dim.C u,
     Module.C y yv,
-    SigG2.Transform sig yv (Stereo.T yv)) =>
+    SigG.Transform sig yv, SigG.Transform sig (Stereo.T yv)) =>
    DN.T u y ->
    Signal s u y sig yv -> Signal s u y sig yv -> Signal s u y sig (Stereo.T yv)
-mergeStereoVolume = mergeVolume (SigG2.zipWith Stereo.cons)
+mergeStereoVolume = mergeVolume (SigG.zipWith Stereo.cons)
 
 {-# INLINE mergeStereoPrimitive #-}
 mergeStereoPrimitive ::
-   (Amp.Primitive amp, SigG2.Transform sig y (Stereo.T y)) =>
+   (Amp.Primitive amp, SigG.Transform sig y, SigG.Transform sig (Stereo.T y)) =>
    SigA.T (Rate.Phantom s) amp (sig y) ->
    SigA.T (Rate.Phantom s) amp (sig y) ->
    SigA.T (Rate.Phantom s) amp (sig (Stereo.T y))
 mergeStereoPrimitive =
-   mergePrimitive (SigG2.zipWith Stereo.cons)
+   mergePrimitive (SigG.zipWith Stereo.cons)
 
 
 
@@ -350,7 +351,7 @@
    (Ord y, Field.C y, Dim.C u,
     Module.C y yv0, Module.C y yv1, Module.C y yv2,
     SigG.Read sig yv0, SigG.Read sig yv1,
-    SigG2.Transform sig yv2 (yv0, yv1, yv2)) =>
+    SigG.Transform sig yv2, SigG.Transform sig (yv0, yv1, yv2)) =>
    Signal s u y sig yv0 -> Signal s u y sig yv1 -> Signal s u y sig yv2 ->
    Signal s u y sig (yv0,yv1,yv2)
 zip3 x0 x1 x2 =
@@ -363,7 +364,7 @@
    (Field.C y, Dim.C u,
     Module.C y yv0, Module.C y yv1, Module.C y yv2,
     SigG.Read sig yv0, SigG.Read sig yv1,
-    SigG2.Transform sig yv2 (yv0, yv1, yv2)) =>
+    SigG.Transform sig yv2, SigG.Transform sig (yv0, yv1, yv2)) =>
    DN.T u y ->
    Signal s u y sig yv0 -> Signal s u y sig yv1 -> Signal s u y sig yv2 ->
    Signal s u y sig (yv0,yv1,yv2)
@@ -371,7 +372,7 @@
    let sampX0 = SigA.vectorSamples (toAmplitudeScalar z) (SigA.restore x0)
        sampX1 = SigA.vectorSamples (toAmplitudeScalar z) (SigA.restore x1)
        sampX2 = SigA.vectorSamples (toAmplitudeScalar z) x2
-       z = SigA.fromBody amp (SigG2.zipWithState3 (,,) sampX0 sampX1 sampX2)
+       z = SigA.fromBody amp (SigG.zipWithState3 (,,) sampX0 sampX1 sampX2)
    in  z
 
 
@@ -382,14 +383,14 @@
    (Ord y, Field.C y, Dim.C u,
     Module.C y yv,
     SigG.Read sig yv,
-    SigG2.Transform sig Bool yv) =>
+    SigG.Transform sig Bool, SigG.Transform sig yv) =>
    Signal s u y sig yv {- ^ False -} ->
    Signal s u y sig yv {- ^ True -} ->
    SigA.T (Rate.Phantom s) Amp.Abstract (sig Bool) ->
    Signal s u y sig yv
 selectBool xf xt cs =
    SigA.processBody
-      (flip (SigG2.zipWithState (\(xfi,xti) c -> if c then xti else xfi))
+      (flip (SigG.zipWithState (\(xfi,xti) c -> if c then xti else xfi))
           (SigA.body cs))
       (zip
          (SigA.restore xf)
diff --git a/src/Synthesizer/Dimensional/Arrow.hs b/src/Synthesizer/Dimensional/Arrow.hs
--- a/src/Synthesizer/Dimensional/Arrow.hs
+++ b/src/Synthesizer/Dimensional/Arrow.hs
@@ -28,7 +28,7 @@
 import Control.Applicative (Applicative, liftA2, )
 
 import qualified Synthesizer.State.Signal as Sig
-import qualified Synthesizer.Generic.Signal2 as SigG2
+import qualified Synthesizer.Generic.Signal as SigG
 
 import qualified Algebra.Module as Module
 import qualified Algebra.Field  as Field
@@ -90,13 +90,14 @@
 -- we need this generality in ControlledProcess.applyConverter
 {-# INLINE apply #-}
 apply ::
-   (SigG2.Transform sig (Displacement sample0) (Displacement sample1),
+   (SigG.Transform sig (Displacement sample0),
+    SigG.Transform sig (Displacement sample1),
     Applicable arrow rate) =>
    T arrow sample0 sample1 ->
    SigA.T rate (Amplitude sample0) (sig (Displacement sample0)) ->
    SigA.T rate (Amplitude sample1) (sig (Displacement sample1))
 {-
-   (SigG2.Transform sig yv0 yv1, Applicable arrow rate) =>
+   (SigG.Transform sig yv0, SigG.Transform sig yv1, Applicable arrow rate) =>
    Single arrow amp0 amp1 yv0 yv1 ->
    SigA.T rate amp0 (sig yv0) ->
    SigA.T rate amp1 (sig yv1)
@@ -108,7 +109,8 @@
 {-# INLINE applyFlat #-}
 applyFlat ::
    (Flat.C yv0 amp0,
-    SigG2.Transform sig yv0 yv1, Applicable arrow rate) =>
+    SigG.Transform sig yv0,
+    SigG.Transform sig yv1, Applicable arrow rate) =>
    Single arrow (Amp.Flat yv0) amp1 yv0 yv1 ->
    SigA.T rate amp0 (sig yv0) ->
    SigA.T rate amp1 (sig yv1)
@@ -139,7 +141,8 @@
 
 {-# INLINE ($/:) #-}
 ($/:) ::
-   (Applicative f, SigG2.Transform sig yv0 yv1,
+   (Applicative f,
+    SigG.Transform sig yv0, SigG.Transform sig yv1,
     Applicable arrow rate) =>
    f (Single arrow amp0 amp1 yv0 yv1) ->
    f (SigA.T rate amp0 (sig yv0)) ->
diff --git a/src/Synthesizer/Dimensional/Causal/Process.hs b/src/Synthesizer/Dimensional/Causal/Process.hs
--- a/src/Synthesizer/Dimensional/Causal/Process.hs
+++ b/src/Synthesizer/Dimensional/Causal/Process.hs
@@ -35,7 +35,6 @@
 import Control.Applicative (Applicative, )
 
 import qualified Synthesizer.State.Signal as Sig
-import qualified Synthesizer.Generic.Signal2 as SigG2
 import qualified Synthesizer.Generic.Signal  as SigG
 
 import qualified Algebra.Module as Module
@@ -85,7 +84,7 @@
 
 {-# INLINE apply #-}
 apply ::
-   (SigG2.Transform sig yv0 yv1) =>
+   (SigG.Transform sig yv0, SigG.Transform sig yv1) =>
    Single s amp0 amp1 yv0 yv1 ->
    SigA.T (Rate.Phantom s) amp0 (sig yv0) ->
    SigA.T (Rate.Phantom s) amp1 (sig yv1)
@@ -93,7 +92,8 @@
 
 {-# INLINE applyFlat #-}
 applyFlat ::
-   (Flat.C yv0 amp0, SigG2.Transform sig yv0 yv1) =>
+   (Flat.C yv0 amp0,
+    SigG.Transform sig yv0, SigG.Transform sig yv1) =>
    Single s (Amp.Flat yv0) amp1 yv0 yv1 ->
    SigA.T (Rate.Phantom s) amp0 (sig yv0) ->
    SigA.T (Rate.Phantom s) amp1 (sig yv1)
@@ -121,7 +121,8 @@
 
 {-# INLINE ($/:) #-}
 ($/:) ::
-   (Applicative f, SigG2.Transform sig yv0 yv1) =>
+   (Applicative f,
+    SigG.Transform sig yv0, SigG.Transform sig yv1) =>
    f (Single s amp0 amp1 yv0 yv1) ->
    f (SigA.T (Rate.Phantom s) amp0 (sig yv0)) ->
    f (SigA.T (Rate.Phantom s) amp1 (sig yv1))
diff --git a/src/Synthesizer/Dimensional/Map.hs b/src/Synthesizer/Dimensional/Map.hs
--- a/src/Synthesizer/Dimensional/Map.hs
+++ b/src/Synthesizer/Dimensional/Map.hs
@@ -15,7 +15,7 @@
 import Control.Arrow (Arrow, )
 import Control.Category (Category, )
 
-import qualified Synthesizer.Generic.Signal2 as SigG2
+import qualified Synthesizer.Generic.Signal as SigG
 
 import qualified Number.DimensionTerm        as DN
 import qualified Algebra.DimensionTerm       as Dim
@@ -58,7 +58,7 @@
 
 {-# INLINE apply #-}
 apply ::
-   (SigG2.Transform sig yv0 yv1) =>
+   (SigG.Transform sig yv0, SigG.Transform sig yv1) =>
    Single amp0 amp1 yv0 yv1 ->
    SigA.T rate amp0 (sig yv0) ->
    SigA.T rate amp1 (sig yv1)
@@ -66,7 +66,8 @@
 
 {-# INLINE applyFlat #-}
 applyFlat ::
-   (Flat.C yv0 amp0, SigG2.Transform sig yv0 yv1) =>
+   (Flat.C yv0 amp0,
+    SigG.Transform sig yv0, SigG.Transform sig yv1) =>
    Single (Amp.Flat yv0) amp1 yv0 yv1 ->
    SigA.T rate amp0 (sig yv0) ->
    SigA.T rate amp1 (sig yv1)
diff --git a/src/Synthesizer/Dimensional/Rate/Filter.hs b/src/Synthesizer/Dimensional/Rate/Filter.hs
--- a/src/Synthesizer/Dimensional/Rate/Filter.hs
+++ b/src/Synthesizer/Dimensional/Rate/Filter.hs
@@ -98,7 +98,6 @@
 import qualified Synthesizer.Generic.Filter.NonRecursive as FiltG
 import qualified Synthesizer.Generic.Filter.Delay as DelayG
 import qualified Synthesizer.Generic.Signal  as SigG
-import qualified Synthesizer.Generic.Signal2 as SigG2
 
 import qualified Synthesizer.Frame.Stereo as Stereo
 
@@ -259,7 +258,7 @@
 {-# INLINE phaseModulationGeneric #-}
 phaseModulationGeneric ::
    (Additive.C yv, RealField.C q, Dim.C u,
-    SigG2.Transform sig q yv, SigG.Write sig yv) =>
+    SigG.Transform sig q, SigG.Transform sig yv, SigG.Write sig yv) =>
       Interpolation.T q yv
    -> DN.T u q
           {- ^ minimal deviation from current time, usually negative -}
diff --git a/src/Synthesizer/Dimensional/RateAmplitude/Rain.hs b/src/Synthesizer/Dimensional/RateAmplitude/Rain.hs
--- a/src/Synthesizer/Dimensional/RateAmplitude/Rain.hs
+++ b/src/Synthesizer/Dimensional/RateAmplitude/Rain.hs
@@ -44,9 +44,6 @@
 
 import qualified Synthesizer.Frame.Stereo as Stereo
 
--- import qualified Synthesizer.Generic.Signal2 as SigG2
--- import qualified Synthesizer.Generic.Signal  as SigG
-
 import qualified Synthesizer.Plain.Control as CtrlL
 import qualified Synthesizer.Plain.Displacement as DispL
 import qualified Synthesizer.Plain.Noise as NoiseL
diff --git a/src/Synthesizer/Dimensional/Signal/Private.hs b/src/Synthesizer/Dimensional/Signal/Private.hs
--- a/src/Synthesizer/Dimensional/Signal/Private.hs
+++ b/src/Synthesizer/Dimensional/Signal/Private.hs
@@ -13,7 +13,6 @@
 import Synthesizer.Dimensional.Process (($#), )
 
 import qualified Synthesizer.Generic.Filter.NonRecursive as FiltG
-import qualified Synthesizer.Generic.Signal2 as SigG2
 import qualified Synthesizer.Generic.Signal as SigG
 
 -- import qualified Data.StorableVector.Lazy.Pattern as SVP
@@ -151,7 +150,7 @@
 Of course, for stereo signals @Stereo.T@ should be prefered.
 -}
 zip ::
-   (SigG2.Transform sig y1 (y0,y1), SigG.Read sig y0) =>
+   (SigG.Transform sig y1, SigG.Transform sig (y0,y1), SigG.Read sig y0) =>
    T (Rate.Phantom s) amp0 (sig y0) ->
    T (Rate.Phantom s) amp1 (sig y1) ->
    T (Rate.Phantom s) (amp0,amp1) (sig (y0,y1))
@@ -159,7 +158,7 @@
    Cons
       Rate.Phantom
       (amplitude x, amplitude y)
-      (SigG2.zip (body x) (body y))
+      (SigG.zip (body x) (body y))
 
 
 {-# INLINE processBody #-}
diff --git a/synthesizer-dimensional.cabal b/synthesizer-dimensional.cabal
--- a/synthesizer-dimensional.cabal
+++ b/synthesizer-dimensional.cabal
@@ -1,5 +1,5 @@
 Name:           synthesizer-dimensional
-Version:        0.6.0.1
+Version:        0.7
 License:        GPL
 License-File:   LICENSE
 Author:         Henning Thielemann <haskell@henning-thielemann.de>
@@ -12,7 +12,7 @@
    abstract from the sample rate in statically type safe way.
 Stability:      Experimental
 Tested-With:    GHC==6.10.4, GHC==6.12.1, GHC==7.0.4, GHC==7.2.1
-Cabal-Version:  >=1.6
+Cabal-Version:  >=1.14
 Build-Type:     Simple
 
 Extra-Source-Files:
@@ -31,13 +31,18 @@
   Type:        darcs
   Location:    http://code.haskell.org/synthesizer/dimensional/
 
+Source-Repository this
+  Tag:         0.7
+  Type:        darcs
+  Location:    http://code.haskell.org/synthesizer/dimensional/
+
 Library
   Build-Depends:
-    synthesizer-core >=0.5 && <0.6,
+    synthesizer-core >=0.6 && <0.7,
     transformers >=0.2 && <0.4,
     event-list >=0.1 && <0.2,
     non-negative >=0.1 && <0.2,
-    numeric-prelude >=0.3 && <0.4,
+    numeric-prelude >=0.3 && <0.5,
     storable-record >=0.0.1 && <0.1,
     sox >=0.2 && <0.3,
     storablevector >=0.2.3 && <0.3,
@@ -49,8 +54,9 @@
   If impl(ghc>=7.0)
     GHC-Options: -fwarn-unused-do-bind
     CPP-Options: -DNoImplicitPrelude=RebindableSyntax
-    Extensions: CPP
+    Default-Extensions: CPP
 
+  Default-Language: Haskell2010
   GHC-Options:    -Wall
   Hs-source-dirs: src
   Exposed-modules:
@@ -108,34 +114,57 @@
 
 
 Executable rain
-  If !flag(buildExamples)
+  If flag(buildExamples)
+    Build-Depends:
+      synthesizer-dimensional,
+      synthesizer-core,
+      numeric-prelude,
+      event-list,
+      utility-ht,
+      random,
+      base
+  Else
     Buildable: False
+  Default-Language: Haskell2010
   GHC-Options: -Wall -fexcess-precision
   If flag(optimizeAdvanced)
-    GHC-Options: -O2 -fvia-C -optc-O2
+    GHC-Options: -O2 -fllvm
   If impl(ghc>=7.0)
     GHC-Options: -fwarn-unused-do-bind
     CPP-Options: -DNoImplicitPrelude=RebindableSyntax
-    Extensions: CPP
+    Default-Extensions: CPP
 
-  Hs-Source-Dirs: src
-  Main-Is: Synthesizer/Dimensional/RateAmplitude/Rain.hs
+  Main-Is: src/Synthesizer/Dimensional/RateAmplitude/Rain.hs
 
 Executable demonstration
   If flag(buildExamples)
     Build-Depends:
       explicit-exception >=0.1.6 && <0.2,
-      old-time >=1.0 && <2
+      old-time >=1.0 && <2,
+
+      synthesizer-dimensional,
+      synthesizer-core,
+      sox,
+      storablevector,
+      storable-record,
+      numeric-prelude,
+      event-list,
+      non-negative,
+      transformers,
+      utility-ht,
+      random,
+      base
   Else
     Buildable: False
   If impl(ghc>=7.0)
     GHC-Options: -fwarn-unused-do-bind
     CPP-Options: -DNoImplicitPrelude=RebindableSyntax
-    Extensions: CPP
+    Default-Extensions: CPP
 
+  Default-Language: Haskell2010
   GHC-Options: -Wall -fexcess-precision
   If flag(optimizeAdvanced)
-    GHC-Options: -O2 -fvia-C -optc-O2
+    GHC-Options: -O2 -fllvm
 -- -ddump-simpl-stats
   Hs-Source-Dirs: src
   Main-Is:
@@ -144,15 +173,24 @@
     Synthesizer.Dimensional.RateAmplitude.Demonstration
 
 Executable traumzauberbaum
-  If !flag(buildExamples)
+  If flag(buildExamples)
+    Build-Depends:
+      synthesizer-dimensional,
+      synthesizer-core,
+      numeric-prelude,
+      utility-ht,
+      storablevector,
+      base
+  Else
     Buildable: False
+
+  Default-Language: Haskell2010
   GHC-Options: -Wall -fexcess-precision
   If impl(ghc>=7.0)
     GHC-Options: -fwarn-unused-do-bind
     CPP-Options: -DNoImplicitPrelude=RebindableSyntax
-    Extensions: CPP
+    Default-Extensions: CPP
 
   If flag(optimizeAdvanced)
-    GHC-Options: -O2 -fvia-C -optc-O2
-  Hs-Source-Dirs: src
-  Main-Is: Synthesizer/Dimensional/RateAmplitude/Traumzauberbaum.hs
+    GHC-Options: -O2 -fllvm
+  Main-Is: src/Synthesizer/Dimensional/RateAmplitude/Traumzauberbaum.hs
