diff --git a/TODO b/TODO
--- a/TODO
+++ b/TODO
@@ -23,5 +23,6 @@
     -- too complex.
 
 -- coverage tests
-    -- not working
+    -- fixed in head.
 
+-- move to .Unsafe
diff --git a/mersenne-random.cabal b/mersenne-random.cabal
--- a/mersenne-random.cabal
+++ b/mersenne-random.cabal
@@ -1,5 +1,5 @@
 name:            mersenne-random
-version:         0.1
+version:         0.1.1
 homepage:        http://code.haskell.org/~dons/code/mersenne-random
 synopsis:        Generate high quality pseudorandom numbers using a SIMD Fast Mersenne Twister
 description:
@@ -36,9 +36,8 @@
 author:          Don Stewart
 maintainer:      Don Stewart <dons@galois.com>
 cabal-version: >= 1.2.0
-build-type:      Configure
 tested-with:     GHC ==6.8.2, Hugs ==2005
-build-type:      Configure
+build-type:      Simple
 
 flag small_base
   description: Build with new smaller base library
@@ -106,4 +105,3 @@
     include-dirs:     include
     includes:         SFMT.h
     install-includes: SFMT.h
-    extra-libraries:  m
diff --git a/tests/Makefile b/tests/Makefile
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -2,7 +2,7 @@
 	ghc -O2 -ddump-simpl-stats -no-recomp Unit.hs --make
 	./Unit
 	ghc -O2 pi.hs --make
-	./pi 100000000
+	./pi 10000000
 
 hpc:
 	ghc --make -i. -i../ -optc-DMEXP=19937 -optc-DNDEBUG -optc-O3 -optc-finline-functions -optc-fomit-frame-pointer -optc-fno-strict-aliasing -optc--param -optcmax-inline-insns-single=1800 -#include "SFMT.h" -package base-3.0.1.0 -package old-time-1.0.0.0 -O -Wall -O2 -fvia-C -XCPP -XForeignFunctionInterface -XBangPatterns Unit.hs -o Unit -fhpc -no-recomp  ../dist/build/cbits/SFMT.o -I../include
diff --git a/tests/Unit.hs b/tests/Unit.hs
--- a/tests/Unit.hs
+++ b/tests/Unit.hs
@@ -13,29 +13,45 @@
 import qualified System.Random as Old
 
 import System.Random.Mersenne
+import Control.Concurrent
+import Control.Concurrent.MVar
 
 main = do
     print  version
-
     g <- newMTGen (Just 5)
 
-    time $ gen g
-    ranges_strict g
+    s   <- newMVar 0 :: IO (MVar Int)
+    putStr "Callibrating ... " >> hFlush stdout
+
+    tid <- forkIO $ do
+        let go !i = do !a <- random g :: IO Double
+                       !_ <- swapMVar s i
+                       go (i+1)
+        go 0
+
+    threadDelay (1000 * 1000)
+    killThread tid
+    putStrLn "done."
+    n <- readMVar s -- 1 sec worth of generation
+    print n
+
+    time $ gen n g
+    ranges_strict n g
 --    ranges_strict_range g
-    ranges_ty g
+    ranges_ty n g
 --    ranges g
 
-    speed (undefined :: Int) g
-    speed (undefined :: Integer) g
-    speed (undefined :: Double) g
+    speed n (undefined :: Int) g
+    speed n (undefined :: Integer) g
+    speed n (undefined :: Double) g
 
-    time $ sums g
-    time $ sum_lazy g
+    time $ sums n g
+    time $ sum_lazy n g
 
-gen g = do
-    forM_ [0 .. 10000] $ \i -> do
+gen n g = do
+    forM_ [0 .. n] $ \i -> do
         x <- random g :: IO Word
-        when (i < 1000) $ do
+        when (i < 100) $ do
             printf "%12u " (fromIntegral x :: Int)
             when (i `rem` 4 == 3) $
                 putChar '\n'
@@ -52,9 +68,8 @@
 
 
 -- overhead cause by random's badness
-sums g = do
+sums lim g = do
 
-    let lim = 100000000
     printf "Generating %d randoms ...\n" lim
 
 
@@ -67,8 +82,7 @@
     print =<< go 0 0
 
 
-sum_lazy g = do
-    let lim = 100000000
+sum_lazy lim g = do
     printf "Generating %d randoms lazily ...\n" lim
 
     xs <- randoms g :: IO [Int]
@@ -95,8 +109,7 @@
 -}
 
 -- overhead cause by random's badness
-ranges_ty g = do
-    let n = 10000000
+ranges_ty n g = do
     test_type g n (undefined :: Bool)
     test_type g n (undefined :: Word8)
     test_type g n (undefined :: Word16)
@@ -110,8 +123,7 @@
     test_type g n (undefined :: Int8)
 
 -- overhead cause by random's badness
-ranges_strict g = do
-    let n = 100000000
+ranges_strict n g = do
     test_strict g n (undefined :: Word)
     test_strict g n (undefined :: Word8)
     test_strict g n (undefined :: Word16)
@@ -235,12 +247,11 @@
 
 -- overhead cause by random's badness
 speed :: forall a . (Show a, Ord a, Typeable a, Old.Random a, Num a, MTRandom a)
-                            => a -> MTGen -> IO ()
-speed ty g  = do
-
-    let lim = 5000000
+                            => Int -> a -> MTGen -> IO ()
+speed lim ty g  = do
 
-    time $ do
+--  x <- 
+     time $ do
         putStrLn $ "System.Random: " ++ show lim ++ " " ++ show (show $ typeOf ty)
         let g = Old.mkStdGen 5
 
@@ -252,7 +263,8 @@
                         in go g' (n+1) (if a > acc then a else acc)
         print (go g 0 0)
 
-    time $ do
+--  y <-
+     time $ do
         putStrLn $ "System.Random.Mersenne: " ++ show lim ++ " " ++ show (show $ typeOf ty)
         let go !n !acc
                 | n >= lim = return acc
@@ -261,4 +273,6 @@
                         go (n+1::Int) (if a > acc then a else acc)
         print =<< go 0 0
 
+--    printf "MT is %s times faster generating %s\n" (show $x`div`y) (show (typeOf ty))
+--    return ()
 
