diff --git a/Help/Graphs/rzblp.lhs b/Help/Graphs/rzblp.lhs
deleted file mode 100644
--- a/Help/Graphs/rzblp.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-rzblp (rd)
-
-> import Sound.SC3
-> import qualified Sound.SC3.UGen.Unsafe as U
-
-> 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
deleted file mode 100644
--- a/Help/Graphs/trmlo.lhs
+++ /dev/null
@@ -1,41 +0,0 @@
-trmlo (rd)
-
-> import Sound.SC3
-> import qualified Sound.SC3.UGen.Unsafe as U
-
-> 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
deleted file mode 100644
--- a/Help/Graphs/voscil.lhs
+++ /dev/null
@@ -1,31 +0,0 @@
-voscil (rd)
-
-> import Sound.SC3
-> import qualified Sound.SC3.UGen.Unsafe as U
-> import System.Random
-
-> 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
@@ -6,5 +6,5 @@
   http://haskell.org/
   http://audiosynth.com/
 
-(c) rohan drape, 2006-2010
+(c) rohan drape, 2006-2011
     gpl, http://gnu.org/copyleft/
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+import Distribution.Simple
+main = defaultMain
diff --git a/Setup.lhs b/Setup.lhs
deleted file mode 100644
--- a/Setup.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env runhaskell
-> import Distribution.Simple
-> main = defaultMain
diff --git a/Sound/SC3/UGen/Demand/Unsafe.hs b/Sound/SC3/UGen/Demand/Unsafe.hs
--- a/Sound/SC3/UGen/Demand/Unsafe.hs
+++ b/Sound/SC3/UGen/Demand/Unsafe.hs
@@ -1,3 +1,4 @@
+-- | Unsafe variants of functions at @Sound.SC3.UGen.Demand.Monadic@.
 module Sound.SC3.UGen.Demand.Unsafe where
 
 import Sound.SC3.UGen.UGen
diff --git a/Sound/SC3/UGen/FFT/Unsafe.hs b/Sound/SC3/UGen/FFT/Unsafe.hs
--- a/Sound/SC3/UGen/FFT/Unsafe.hs
+++ b/Sound/SC3/UGen/FFT/Unsafe.hs
@@ -1,3 +1,4 @@
+-- | Unsafe variants of functions at @Sound.SC3.UGen.FFT.Monadic@.
 module Sound.SC3.UGen.FFT.Unsafe where
 
 import Sound.SC3.UGen.UGen
diff --git a/Sound/SC3/UGen/Noise/Unsafe.hs b/Sound/SC3/UGen/Noise/Unsafe.hs
--- a/Sound/SC3/UGen/Noise/Unsafe.hs
+++ b/Sound/SC3/UGen/Noise/Unsafe.hs
@@ -1,3 +1,4 @@
+-- | Unsafe variants of functions at @Sound.SC3.UGen.Noise.Monadic@.
 module Sound.SC3.UGen.Noise.Unsafe where
 
 import Sound.SC3.UGen.Rate
@@ -94,16 +95,16 @@
 tExpRand = liftP3 N.tExpRand
 
 -- | Random integer in uniform distribution on trigger.
-tiRand :: UGen -> UGen -> UGen -> UGen
-tiRand = liftP3 N.tiRand
+tIRand :: UGen -> UGen -> UGen -> UGen
+tIRand = liftP3 N.tIRand
 
 -- | Random value in uniform distribution on trigger.
 tRand :: UGen -> UGen -> UGen -> UGen
 tRand = liftP3 N.tRand
 
 -- | Triggered windex.
-twindex :: UGen -> UGen -> UGen -> UGen
-twindex = liftP3 N.twindex
+tWindex :: UGen -> UGen -> UGen -> UGen
+tWindex = liftP3 N.tWindex
 
 -- | White noise.
 whiteNoise :: Rate -> UGen
diff --git a/Sound/SC3/UGen/Unsafe.hs b/Sound/SC3/UGen/Unsafe.hs
--- a/Sound/SC3/UGen/Unsafe.hs
+++ b/Sound/SC3/UGen/Unsafe.hs
@@ -1,4 +1,4 @@
--- | Unsafe variants of the hsc3 SuperCollider unit generator bindings.
+-- | Unsafe variants of the @hsc3@ SuperCollider unit generator bindings.
 module Sound.SC3.UGen.Unsafe (module Sound.SC3.UGen.Demand.Unsafe,
                               module Sound.SC3.UGen.FFT.Unsafe,
                               module Sound.SC3.UGen.Noise.Unsafe) where
diff --git a/Sound/SC3/UGen/Unsafe/Lift.hs b/Sound/SC3/UGen/Unsafe/Lift.hs
--- a/Sound/SC3/UGen/Unsafe/Lift.hs
+++ b/Sound/SC3/UGen/Unsafe/Lift.hs
@@ -1,3 +1,4 @@
+-- | Functions to lifting monadic 'UGen's to unsafe forms.
 module Sound.SC3.UGen.Unsafe.Lift where
 
 import Sound.SC3.UGen.UGen
diff --git a/hsc3-unsafe.cabal b/hsc3-unsafe.cabal
--- a/hsc3-unsafe.cabal
+++ b/hsc3-unsafe.cabal
@@ -1,29 +1,30 @@
 Name:              hsc3-unsafe
-Version:           0.8
+Version:           0.11
 Synopsis:          Unsafe Haskell SuperCollider
-Description:       hsc3 provides Sound.SC3.UGen.Unsafe.  
+Description:       @hsc3-unsafe@ provides "Sound.SC3.UGen.Unsafe".
 License:           GPL
 Category:          Sound
-Copyright:         (c) Rohan Drape, 2006-2010
+Copyright:         (c) Rohan Drape, 2006-2011
 Author:            Rohan Drape
 Maintainer:        rd@slavepianos.org
 Stability:         Experimental
 Homepage:          http://slavepianos.org/rd/?t=hsc3-unsafe
-Tested-With:       GHC == 6.10.3
+Tested-With:       GHC == 7.2.2
 Build-Type:        Simple
-Cabal-Version:     >= 1.6
+Cabal-Version:     >= 1.8
 
 Data-files:        README
-                   Help/Graphs/rzblp.lhs
-                   Help/Graphs/trmlo.lhs
-                   Help/Graphs/voscil.lhs
 
 Library
   Build-Depends:   base == 4.*,
-                   hsc3 == 0.8
+                   hsc3 == 0.11.*
   GHC-Options:     -Wall -fwarn-tabs
   Exposed-modules: Sound.SC3.UGen.Demand.Unsafe
                    Sound.SC3.UGen.FFT.Unsafe
                    Sound.SC3.UGen.Noise.Unsafe
                    Sound.SC3.UGen.Unsafe
                    Sound.SC3.UGen.Unsafe.Lift
+
+Source-Repository  head
+  Type:            darcs
+  Location:        http://slavepianos.org/rd/sw/hsc3-unsafe/
