diff --git a/Help/Graphs/rzblp.lhs b/Help/Graphs/rzblp.lhs
--- a/Help/Graphs/rzblp.lhs
+++ b/Help/Graphs/rzblp.lhs
@@ -3,20 +3,21 @@
 > import Sound.SC3
 > import qualified Sound.SC3.UGen.Unsafe as U
 
-> let { wrp i l r = let m = (r - l) / 2
->                   in i * m + l + m
->     ; lfn f l r = wrp (U.lfNoise0 kr f) l r
->     ; hpb q = mixFill 2 (\_ -> let { f = lfn q 1330 1395
->                                    ; a = lfn q 0.001 0.007 }
->                                in blip ar f 24 * a)
->     ; mk_f d = let { q = lfn 5.2 5.2 5.21
->                    ; a = d dinf (mce [1, 3, 2, 7, 8])
->                    ; tr = impulse kr q 0
->                    ; freq = demand tr 0 a * 30 + 340 }
->                in sum [ blip ar freq 3 * lfn q 0.001 0.01
->                       , resonz (impulse ar q (mce2 0 0))
->                                    (lfn 5 30 640)
->                                    (lfn q 0.1 0.5) * lfn q 0.01 1.8
->                       , hpb q * lfn q 1.2 1.8
->                       , blip ar (lfn q 16 36) 3 * mce2 0.03 0.09 ] }
-> in audition (out 0 (mk_f U.drand + mk_f U.dxrand))
+> main =
+>   let { wrp i l r = let m = (r - l) / 2
+>                     in i * m + l + m
+>       ; lfn f l r = wrp (U.lfNoise0 kr f) l r
+>       ; hpb q = mixFill 2 (\_ -> let { f = lfn q 1330 1395
+>                                      ; a = lfn q 0.001 0.007 }
+>                                  in blip ar f 24 * a)
+>       ; mk_f d = let { q = lfn 5.2 5.2 5.21
+>                      ; a = d dinf (mce [1, 3, 2, 7, 8])
+>                      ; tr = impulse kr q 0
+>                      ; freq = demand tr 0 a * 30 + 340 }
+>                  in sum [ blip ar freq 3 * lfn q 0.001 0.01
+>                         , resonz (impulse ar q (mce2 0 0))
+>                                      (lfn 5 30 640)
+>                                      (lfn q 0.1 0.5) * lfn q 0.01 1.8
+>                         , hpb q * lfn q 1.2 1.8
+>                         , blip ar (lfn q 16 36) 3 * mce2 0.03 0.09 ] }
+>   in audition (out 0 (mk_f U.drand + mk_f U.dxrand))
diff --git a/Help/Graphs/trmlo.lhs b/Help/Graphs/trmlo.lhs
--- a/Help/Graphs/trmlo.lhs
+++ b/Help/Graphs/trmlo.lhs
@@ -3,38 +3,39 @@
 > import Sound.SC3
 > import qualified Sound.SC3.UGen.Unsafe as U
 
-> let { mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)
->     ; mWrp1 i m = mWrp i m (m + 1)
->     ; mWrpN i m n = mWrp i m (m + n)
->     ; o1 = let { f = 5
->                ; d = 3
->                ; s = envSine d 0.1
->                ; e = envGen kr 1 1 0 1 DoNothing s
->                ; n = 65
->                ; m = sinOsc kr f 0 }
->            in pan2 (sinOsc ar (mWrp1 m n) 0) m e
->     ; o2 = let { f = U.iRand 5 9
->                ; d = U.iRand 5 9
->                ; s = envSine d (U.rand 0.1 0.2)
->                ; e = envGen kr 1 1 0 1 DoNothing s
->                ; n = U.iRand 69 72
->                ; m = sinOsc kr f 0 }
->            in pan2 (sinOsc ar (mWrp1 m n) 0) m e
->     ; o3 = let { f = U.iRand 5 9
->                ; d = U.iRand 9 12
->                ; s = envSine d (U.rand 0.1 0.2)
->                ; e = envGen kr 1 1 0 1 DoNothing s
->                ; n = U.iRand 69 72
->                ; m = sinOsc kr f 0
->                ; l = line kr 0 (U.iRand 1 5) d DoNothing }
->            in pan2 (blip ar (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e
->     ; o4 = let { f = U.iRand 5 18
->                ; d = U.iRand 12 15
->                ; s = envSine d (U.rand 0.1 0.2)
->                ; e = envGen kr 1 5e-2 0 1 DoNothing s
->                ; n = U.iRand 69 72
->                ; m = sinOsc kr f 0
->                ; l = line kr 0 (U.iRand 1 5) d RemoveSynth
->                ; fr = mWrpN m (n + l) (U.iRand 1 5) }
->            in pan2 (blip ar fr (linLin m (-1) 1 1 (U.iRand 2 24))) m e }
-> in audition (out 0 (o1 + o2 + o3 + o4))
+> main =
+>   let { mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)
+>       ; mWrp1 i m = mWrp i m (m + 1)
+>       ; mWrpN i m n = mWrp i m (m + n)
+>       ; o1 = let { f = 5
+>                  ; d = 3
+>                  ; s = envSine d 0.1
+>                  ; e = envGen kr 1 1 0 1 DoNothing s
+>                  ; n = 65
+>                  ; m = sinOsc kr f 0 }
+>              in pan2 (sinOsc ar (mWrp1 m n) 0) m e
+>       ; o2 = let { f = U.iRand 5 9
+>                  ; d = U.iRand 5 9
+>                  ; s = envSine d (U.rand 0.1 0.2)
+>                  ; e = envGen kr 1 1 0 1 DoNothing s
+>                  ; n = U.iRand 69 72
+>                  ; m = sinOsc kr f 0 }
+>              in pan2 (sinOsc ar (mWrp1 m n) 0) m e
+>       ; o3 = let { f = U.iRand 5 9
+>                  ; d = U.iRand 9 12
+>                  ; s = envSine d (U.rand 0.1 0.2)
+>                  ; e = envGen kr 1 1 0 1 DoNothing s
+>                  ; n = U.iRand 69 72
+>                  ; m = sinOsc kr f 0
+>                  ; l = line kr 0 (U.iRand 1 5) d DoNothing }
+>              in pan2 (blip ar (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e
+>       ; o4 = let { f = U.iRand 5 18
+>                  ; d = U.iRand 12 15
+>                  ; s = envSine d (U.rand 0.1 0.2)
+>                  ; e = envGen kr 1 5e-2 0 1 DoNothing s
+>                  ; n = U.iRand 69 72
+>                  ; m = sinOsc kr f 0
+>                  ; l = line kr 0 (U.iRand 1 5) d RemoveSynth
+>                  ; fr = mWrpN m (n + l) (U.iRand 1 5) }
+>              in pan2 (blip ar fr (linLin m (-1) 1 1 (U.iRand 2 24))) m e }
+>   in audition (out 0 (o1 + o2 + o3 + o4))
diff --git a/Help/Graphs/voscil.lhs b/Help/Graphs/voscil.lhs
--- a/Help/Graphs/voscil.lhs
+++ b/Help/Graphs/voscil.lhs
@@ -4,27 +4,28 @@
 > import qualified Sound.SC3.UGen.Unsafe as U
 > import System.Random
 
-> let { rrand l r = getStdRandom (randomR (l, r))
->     ; lfn r = U.lfNoise0 kr r
->     ; b = 32
->     ; hb = (constant b - 1) / 2
->     ; bn = 8192 * 4
->     ; rt = 6
->     ; f = 600
->     ; s = let { v = vOsc ar (lfn rt * hb + hb) (f * 2) 0
->               ; o = let { bf = lfn rt * 40 + 600
->                         ; nh = lfn rt * 16 + 24 }
->                     in blip ar bf nh * (lfn rt * 0.1 + 0.1)
->               ; p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)
->               ; w = vOsc ar (lfSaw kr (1 / rt) 0 * hb + hb) f 0
->               ; q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5) }
->           in p + q
->     ; run fd = let r_set i = 
->                        do { m <- rrand 2 512
->                           ; j <- sequence (replicate m (rrand 0 bn))
->                           ; k <- sequence (replicate m (rrand (-1) 1))
->                           ; async fd (b_alloc i bn 1)
->                           ; send fd (b_set i (zip j k)) }
->                in do { mapM_ r_set [0 .. (b - 1)]
->                      ; play fd (out 0 s) } }
-> in withSC3 run
+> main =
+>   let { rrand l r = getStdRandom (randomR (l, r))
+>       ; lfn r = U.lfNoise0 kr r
+>       ; b = 32
+>       ; hb = (constant b - 1) / 2
+>       ; bn = 8192 * 4
+>       ; rt = 6
+>       ; f = 600
+>       ; s = let { v = vOsc ar (lfn rt * hb + hb) (f * 2) 0
+>                 ; o = let { bf = lfn rt * 40 + 600
+>                           ; nh = lfn rt * 16 + 24 }
+>                       in blip ar bf nh * (lfn rt * 0.1 + 0.1)
+>                 ; p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)
+>                 ; w = vOsc ar (lfSaw kr (1 / rt) 0 * hb + hb) f 0
+>                 ; q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5) }
+>             in p + q
+>       ; run fd = let r_set i = 
+>                          do { m <- rrand 2 512
+>                             ; j <- sequence (replicate m (rrand 0 bn))
+>                             ; k <- sequence (replicate m (rrand (-1) 1))
+>                             ; async fd (b_alloc i bn 1)
+>                             ; send fd (b_set i (zip j k)) }
+>                  in do { mapM_ r_set [0 .. (b - 1)]
+>                        ; play fd (out 0 s) } }
+>   in withSC3 run
diff --git a/README b/README
--- a/README
+++ b/README
@@ -2,9 +2,9 @@
 
 hsc3-unsafe provides Sound.SC3.UGen.Unsafe.
 
-  http://slavepianos.org/rd/f/207949/
+  http://slavepianos.org/rd/?t=hsc3-unsafe
   http://haskell.org/
   http://audiosynth.com/
 
-(c) rohan drape, 2006-2009
+(c) rohan drape, 2006-2010
     gpl, http://gnu.org/copyleft/
diff --git a/hsc3-unsafe.cabal b/hsc3-unsafe.cabal
--- a/hsc3-unsafe.cabal
+++ b/hsc3-unsafe.cabal
@@ -1,15 +1,15 @@
 Name:              hsc3-unsafe
-Version:           0.7
+Version:           0.8
 Synopsis:          Unsafe Haskell SuperCollider
 Description:       hsc3 provides Sound.SC3.UGen.Unsafe.  
 License:           GPL
 Category:          Sound
-Copyright:         (c) Rohan Drape, 2006-2009
+Copyright:         (c) Rohan Drape, 2006-2010
 Author:            Rohan Drape
 Maintainer:        rd@slavepianos.org
 Stability:         Experimental
-Homepage:          http://slavepianos.org/rd/f/382071/
-Tested-With:       GHC == 6.8.2
+Homepage:          http://slavepianos.org/rd/?t=hsc3-unsafe
+Tested-With:       GHC == 6.10.3
 Build-Type:        Simple
 Cabal-Version:     >= 1.6
 
@@ -19,8 +19,8 @@
                    Help/Graphs/voscil.lhs
 
 Library
-  Build-Depends:   base == 3.*,
-                   hsc3 == 0.7
+  Build-Depends:   base == 4.*,
+                   hsc3 == 0.8
   GHC-Options:     -Wall -fwarn-tabs
   Exposed-modules: Sound.SC3.UGen.Demand.Unsafe
                    Sound.SC3.UGen.FFT.Unsafe
