diff --git a/Help/rescale.help.hs b/Help/rescale.help.hs
--- a/Help/rescale.help.hs
+++ b/Help/rescale.help.hs
@@ -1,5 +1,4 @@
 -- Change the gain of an audio file.
-
 import qualified Sound.File.NeXT as F
 import System.Environment
 
@@ -18,5 +17,5 @@
     _ -> putStrLn "rescale gain-multiplier file-name"
 
 {-
-rescale 0.25 "/home/rohan/audio/text.snd"
+rescale 0.25 "/home/rohan/data/audio/pf-c5.snd"
 -}
diff --git a/Help/stat.help.hs b/Help/stat.help.hs
--- a/Help/stat.help.hs
+++ b/Help/stat.help.hs
@@ -1,5 +1,4 @@
 -- Trivial sound file statistics.
-
 import qualified Sound.File.NeXT as F
 import System.Environment
 
@@ -9,11 +8,11 @@
   let nf = F.frameCount hdr
       sr = F.sampleRate hdr
       nc = F.channelCount hdr
-  mapM_ print [("nframes", [fromIntegral nf])
-              ,("srate", [fromIntegral sr])
-              ,("nchan", [fromIntegral nc])
-              ,("minimum", map minimum d)
-              ,("maximum", map maximum d)]
+  print (("nframes",nf)
+        ,("srate",sr)
+        ,("nchan",nc)
+        ,("minima",map minimum d)
+        ,("maxima",map maximum d))
 
 main :: IO ()
 main = do
@@ -23,5 +22,5 @@
     _ -> putStrLn "stat file-name"
 
 {-
-stat "/home/rohan/audio/text.snd"
+stat "/home/rohan/data/audio/pf-c5.snd"
 -}
diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,12 +1,18 @@
-hsc3-sf - simple sound file input/output
+hsc3-sf
+-------
 
-hsc3-sf provides Sound.File.NeXT, a Haskell module that 
-provides simple minded sound file input/output for 
-NeXT/Sun format sound files.  For more comprehensive
-sound file support in haskell see hsndfile.
+simple sound file input/output
 
-  http://slavepianos.org/rd
-  http://code.haskell.org/hsndfile
+[hsc3-sf][hsc3-sf] provides `Sound.File.NeXT`, a [Haskell][hs] module
+that provides simple minded sound file input/output for NeXT/Sun
+format sound files.  For more comprehensive sound file support in
+haskell see [hsndfile][hsf].
 
-(c) rohan drape, 2006-2011
-    gpl, http://gnu.org/copyleft/
+[hs]: http://haskell.org/
+[hsc3-sf]: http://rd.slavepianos.org/?t=hsc3-sf
+[hsf]: http://code.haskell.org/hsndfile
+
+© [rohan drape][rd], 2006-2012, [gpl]
+
+[rd]: http://rd.slavepianos.org/
+[gpl]: http://gnu.org/copyleft/
diff --git a/Sound/File/Decode.hs b/Sound/File/Decode.hs
--- a/Sound/File/Decode.hs
+++ b/Sound/File/Decode.hs
@@ -7,11 +7,13 @@
 import Sound.OpenSoundControl.Coding.Byte
 import Sound.File.Encoding
 
+-- > setsOf 2 [0..5] == [[0,1],[2,3],[4,5]]
 setsOf :: Int -> [a] -> [[a]]
-setsOf _ [] = []
 setsOf n l =
-    let (x, y) = splitAt n l
-    in x : setsOf n y
+    case l of
+      [] -> []
+      _ -> let (x, y) = splitAt n l
+           in x : setsOf n y
 
 channel :: [[a]] -> Int -> [a]
 channel l n = map (!!n) l
@@ -24,9 +26,11 @@
 
 bSetsOf :: Int64 -> B.ByteString -> [B.ByteString]
 bSetsOf _ b | B.null b = []
-bSetsOf n b | otherwise =
-                let (x, y) = B.splitAt n b
-                in x : bSetsOf n y
+bSetsOf n b =
+    if B.null b
+    then []
+    else let (x, y) = B.splitAt n b
+         in x : bSetsOf n y
 
 decodef32 :: Int -> B.ByteString -> [[Double]]
 decodef32 n = deinterleave n . map decode_f32 . bSetsOf 4
diff --git a/Sound/File/NeXT.hs b/Sound/File/NeXT.hs
--- a/Sound/File/NeXT.hs
+++ b/Sound/File/NeXT.hs
@@ -33,19 +33,23 @@
               deriving (Eq, Show)
 
 toEncoding :: Int -> Encoding
-toEncoding 2 = Linear8
-toEncoding 3 = Linear16
-toEncoding 5 = Linear32
-toEncoding 6 = Float
-toEncoding 7 = Double
-toEncoding _ = undefined
+toEncoding n =
+    case n of
+      2 -> Linear8
+      3 -> Linear16
+      5 -> Linear32
+      6 -> Float
+      7 -> Double
+      _ -> undefined
 
 fromEncoding :: Encoding -> Int
-fromEncoding Linear8 = 2
-fromEncoding Linear16 = 3
-fromEncoding Linear32 = 5
-fromEncoding Float = 6
-fromEncoding Double = 7
+fromEncoding c =
+    case c of
+      Linear8 -> 2
+      Linear16 -> 3
+      Linear32 -> 5
+      Float -> 6
+      Double -> 7
 
 -- | The NeXT header magic number.
 magic :: Int
@@ -55,7 +59,7 @@
 encodeHeader :: Header -> B.ByteString
 encodeHeader (Header nf enc sr nc) =
     let nb = nf * nc * sizeOf enc
-        h = [magic, 28, nb, (fromEncoding enc), sr, nc, 0]
+        h = [magic, 28, nb, fromEncoding enc, sr, nc, 0]
     in B.concat (map encode_i32 h)
 
 -- | Byte-decode a NeXT header.
diff --git a/hsc3-sf.cabal b/hsc3-sf.cabal
--- a/hsc3-sf.cabal
+++ b/hsc3-sf.cabal
@@ -1,5 +1,5 @@
 Name:              hsc3-sf
-Version:           0.11
+Version:           0.12
 Synopsis:          Haskell SuperCollider SoundFile
 Description:       Trivial @NeXT@ sound file input and output.
                    The main module is "Sound.File.NeXT".
@@ -8,12 +8,12 @@
                    <http://hackage.haskell.org/package/hsndfile>.
 License:           GPL
 Category:          Sound
-Copyright:         (c) Rohan Drape, 2006-2011
+Copyright:         (c) Rohan Drape, 2006-2012
 Author:            Rohan Drape
 Maintainer:        rd@slavepianos.org
 Stability:         Experimental
-Homepage:          http://slavepianos.org/rd/?t=hsc3-sf
-Tested-With:       GHC == 7.2.2
+Homepage:          http://rd.slavepianos.org/?t=hsc3-sf
+Tested-With:       GHC == 7.6.1
 Build-Type:        Simple
 Cabal-Version:     >= 1.8
 
@@ -24,7 +24,7 @@
 Library
   Build-Depends:   base == 4.*,
                    bytestring,
-                   hosc == 0.11.*
+                   hosc == 0.12.*
   GHC-Options:     -Wall -fwarn-tabs
   Exposed-modules: Sound.File.NeXT
                    Sound.File.Decode
@@ -33,4 +33,4 @@
 
 Source-Repository  head
   Type:            darcs
-  Location:        http://slavepianos.org/rd/sw/hsc3-sf/
+  Location:        http://rd.slavepianos.org/sw/hsc3-sf/
