diff --git a/MboxTools.hs b/MboxTools.hs
deleted file mode 100644
--- a/MboxTools.hs
+++ /dev/null
@@ -1,1 +0,0 @@
-module MboxTools where
diff --git a/mbox-average-size.hs b/mbox-average-size.hs
--- a/mbox-average-size.hs
+++ b/mbox-average-size.hs
@@ -1,6 +1,7 @@
-import Codec.Mbox (Mbox(..), MboxMessage(..), parseMbox)
+import Codec.Mbox (Mbox(..), MboxMessage(..), parseMbox, mboxMsgBody)
 import Control.Applicative ((<$>))
 import Data.List (foldl')
+import Data.Label
 import qualified Data.ByteString.Lazy as B
 
 data P a = P !a !Int
diff --git a/mbox-tools.cabal b/mbox-tools.cabal
--- a/mbox-tools.cabal
+++ b/mbox-tools.cabal
@@ -1,6 +1,6 @@
 Name:           mbox-tools
 Cabal-Version:  >=1.8
-Version:        0.2.0.1
+Version:        0.2.0.2
 License:        BSD3
 License-File:   LICENSE
 Copyright:      (c) Nicolas Pouillard
@@ -20,44 +20,49 @@
 flag useless
   Default: False
 
-Library
-    Build-depends: base(>=3 && <5), containers>=0.1, bytestring>=0.9, parsec,
-                   transformers, mtl>=2.0, fclabels>=1.0, pureMD5,
-                   codec-mbox>=0.1, hsemail>=1.3.1
-                   -- TMP-NO-MIME, mime-bytestring
-    exposed-modules: MboxTools
--- TODO hsemail-1.3.1 is not released
--- mime-bytestring is not yet released
+-- TMP-NO-MIME, mime-bytestring
 
 executable mbox-counting
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox
     main-is: mbox-counting.hs
     ghc-options: -Wall
 executable mbox-average-size
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, fclabels
     main-is: mbox-average-size.hs
     ghc-options: -Wall
   if !flag(useless)
     buildable: False
 executable mbox-quoting
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox
     main-is: mbox-quoting.hs
     ghc-options: -Wall
   if !flag(useless)
     buildable: False
 executable redact-mbox
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, mtl
     main-is: redact-mbox.hs
     Build-depends: random
     ghc-options: -Wall
   if !flag(useless)
     buildable: False
 executable mbox-list
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, parsec, hsemail,
+                   pureMD5, fclabels>=1.0, mtl
     main-is: mbox-list.hs
     ghc-options: -Wall
 executable mbox-pick
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, parsec, hsemail,
+                   pureMD5, fclabels, mtl
     main-is: mbox-pick.hs
     ghc-options: -Wall
 executable mbox-partition
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, parsec, hsemail,
+                   pureMD5, fclabels, mtl, containers
     main-is: mbox-partition.hs
     ghc-options: -Wall
 executable mbox-grep
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, parsec, hsemail,
+                   pureMD5, fclabels, mtl
     main-is: mbox-grep.hs
     ghc-options: -Wall
   if flag(use_hutt)
@@ -65,12 +70,18 @@
   else
     buildable: False
 executable split-mbox
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, parsec, hsemail,
+                   pureMD5, fclabels, mtl
     main-is: split-mbox.hs
     ghc-options: -Wall
 executable mbox-iter
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, parsec, hsemail,
+                   pureMD5, fclabels, mtl
     main-is: mbox-iter.hs
     ghc-options: -Wall
     build-depends: process
 executable mbox-from-files
+    Build-depends: base(>=3 && <5), bytestring, codec-mbox, parsec, hsemail,
+                   pureMD5, fclabels, mtl
     main-is: mbox-from-files.hs
     ghc-options: -Wall
diff --git a/redact-mbox.hs b/redact-mbox.hs
--- a/redact-mbox.hs
+++ b/redact-mbox.hs
@@ -44,10 +44,10 @@
 swap (x,y) = (y,x)
 
 wrapState :: (acc -> x -> (acc, y)) -> x -> State acc y
-wrapState f x = State (\state -> swap (f state x))
+wrapState f x = state (\s -> swap (f s x))
 
 unwrapState :: (x -> State acc y) -> acc -> x -> (acc, y)
-unwrapState f state x = swap (runState (f x) state)
+unwrapState f s x = swap (runState (f x) s)
 -- END MISSING
 
 redactChar :: Char -> RedactState Char
