diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## 0.0.18
+
+* Add missing lowlevel Block functionality
+* Cleanup UArray to use more functions from Block
+* Push Xoroshiro down to basement
+* Add instances for foundation's numerical classes for C types
+* Update benchmarks to gauge 0.2.0
+* Add documentation to some block & uarray functions
+
 ## 0.0.17
 
 * Add Terminal capabilities: ANSI Escape, UTF8 codepage initialization, get dimensions
diff --git a/Foundation/Check/Arbitrary.hs b/Foundation/Check/Arbitrary.hs
--- a/Foundation/Check/Arbitrary.hs
+++ b/Foundation/Check/Arbitrary.hs
@@ -184,7 +184,9 @@
 elements l = frequency (nonEmptyFmap (\x -> (1, pure x)) l)
 
 between :: (Word, Word) -> Gen Word
-between (x,y) = (+) x <$> genMax range
+between (x,y)
+    | range == 0 = pure x
+    | otherwise = (+) x <$> genMax range
   where range = y - x
 
 genMax :: Word -> Gen Word
diff --git a/Foundation/Class/Storable.hs b/Foundation/Class/Storable.hs
--- a/Foundation/Class/Storable.hs
+++ b/Foundation/Class/Storable.hs
@@ -35,9 +35,9 @@
 import Foreign.Ptr (castPtr)
 import qualified Foreign.Ptr
 import qualified Foreign.Storable (peek, poke)
-import           Foreign.C.Types (CChar, CUChar)
 
 import Basement.Compat.Base
+import Basement.Compat.C.Types (CChar, CUChar)
 import Basement.Types.OffsetSize
 import Basement.Types.Word128 (Word128(..))
 import Basement.Types.Word256 (Word256(..))
diff --git a/Foundation/Foreign.hs b/Foundation/Foreign.hs
--- a/Foundation/Foreign.hs
+++ b/Foundation/Foreign.hs
@@ -9,11 +9,11 @@
     ( module Basement.FinalPtr
     , V.foreignMem
     , V.mutableForeignMem
-    , module Foreign.C.Types
+    , module Basement.Compat.C.Types
     ) where
 
 import           Basement.FinalPtr
 import qualified Basement.UArray as V
 import qualified Basement.UArray.Mutable as V
 
-import           Foreign.C.Types
+import           Basement.Compat.C.Types
diff --git a/Foundation/Foreign/MemoryMap/Posix.hsc b/Foundation/Foreign/MemoryMap/Posix.hsc
--- a/Foundation/Foreign/MemoryMap/Posix.hsc
+++ b/Foundation/Foreign/MemoryMap/Posix.hsc
@@ -42,10 +42,10 @@
     ) where
 
 import Basement.Compat.Base
+import Basement.Compat.C.Types
 import Basement.Types.OffsetSize
 import System.Posix.Types
 import Foreign.Ptr
-import Foreign.C.Types
 import Foreign.C.Error
 import Data.Bits
 
diff --git a/Foundation/Network/HostName.hsc b/Foundation/Network/HostName.hsc
--- a/Foundation/Network/HostName.hsc
+++ b/Foundation/Network/HostName.hsc
@@ -24,6 +24,7 @@
 
 import Foundation.Class.Storable
 import Basement.Compat.Base
+import Basement.Compat.C.Types
 import Data.Proxy
 import Foundation.Hashing (Hashable)
 import Foundation.String
@@ -35,7 +36,6 @@
 import Foundation.System.Bindings.Network
 
 import Foreign.C.String
-import Foreign.C.Types
 import Foreign.Ptr (nullPtr)
 import Control.Concurrent.MVar
 import System.IO.Unsafe (unsafePerformIO)
diff --git a/Foundation/System/Bindings/Hs.hs b/Foundation/System/Bindings/Hs.hs
--- a/Foundation/System/Bindings/Hs.hs
+++ b/Foundation/System/Bindings/Hs.hs
@@ -5,6 +5,6 @@
     where
 
 import GHC.IO
-import Foreign.C.Types
+import Basement.Compat.C.Types
 
 foreign import ccall unsafe "HsBase.h __hscore_get_errno" sysHsCoreGetErrno :: IO CInt
diff --git a/Foundation/System/Bindings/Linux.hsc b/Foundation/System/Bindings/Linux.hsc
--- a/Foundation/System/Bindings/Linux.hsc
+++ b/Foundation/System/Bindings/Linux.hsc
@@ -16,7 +16,7 @@
    where
 
 import Basement.Compat.Base
-import Foreign.C.Types
+import Basement.Compat.C.Types
 import Foundation.System.Bindings.PosixDef
 
 #define __USE_GNU
diff --git a/Foundation/System/Bindings/Macos.hsc b/Foundation/System/Bindings/Macos.hsc
--- a/Foundation/System/Bindings/Macos.hsc
+++ b/Foundation/System/Bindings/Macos.hsc
@@ -3,7 +3,7 @@
     where
 
 import Basement.Compat.Base
-import Foreign.C.Types
+import Basement.Compat.C.Types
 import Foundation.System.Bindings.PosixDef
 import Basement.Types.OffsetSize
 
diff --git a/Foundation/System/Bindings/Network.hsc b/Foundation/System/Bindings/Network.hsc
--- a/Foundation/System/Bindings/Network.hsc
+++ b/Foundation/System/Bindings/Network.hsc
@@ -16,7 +16,7 @@
     ) where
 
 import Basement.Compat.Base
-import Foreign.C.Types
+import Basement.Compat.C.Types
 
 #ifdef mingw32_HOST_OS
 # include <winsock2.h>
diff --git a/Foundation/System/Bindings/Posix.hsc b/Foundation/System/Bindings/Posix.hsc
--- a/Foundation/System/Bindings/Posix.hsc
+++ b/Foundation/System/Bindings/Posix.hsc
@@ -17,7 +17,7 @@
    where
 
 import Basement.Compat.Base
-import Foreign.C.Types
+import Basement.Compat.C.Types
 import Data.Bits
 import Foundation.System.Bindings.PosixDef
 
diff --git a/Foundation/System/Bindings/PosixDef.hsc b/Foundation/System/Bindings/PosixDef.hsc
--- a/Foundation/System/Bindings/PosixDef.hsc
+++ b/Foundation/System/Bindings/PosixDef.hsc
@@ -12,8 +12,7 @@
     , CMode(..)
     ) where
 
-import Foreign.C.Types
-import System.Posix.Types (COff(..), CMode(..))
+import Basement.Compat.C.Types
 
 type CErrno = CInt
 type CFd = CInt
diff --git a/Foundation/System/Bindings/Time.hsc b/Foundation/System/Bindings/Time.hsc
--- a/Foundation/System/Bindings/Time.hsc
+++ b/Foundation/System/Bindings/Time.hsc
@@ -6,8 +6,8 @@
 module Foundation.System.Bindings.Time where
 
 import Basement.Compat.Base
+import Basement.Compat.C.Types
 import Basement.Types.OffsetSize
-import Foreign.C.Types
 
 #include <time.h>
 #include <sys/time.h>
diff --git a/Foundation/System/Entropy/Unix.hs b/Foundation/System/Entropy/Unix.hs
--- a/Foundation/System/Entropy/Unix.hs
+++ b/Foundation/System/Entropy/Unix.hs
@@ -16,12 +16,12 @@
     ) where
 
 import Foreign.Ptr
-import Foreign.C.Types
 import Control.Exception as E
 import Control.Monad
 import System.IO
 import System.IO.Unsafe (unsafePerformIO)
 import Basement.Compat.Base
+import Basement.Compat.C.Types
 import Prelude (fromIntegral)
 import Foundation.System.Entropy.Common
 import Foundation.Numerical
diff --git a/Foundation/Time/StopWatch.hs b/Foundation/Time/StopWatch.hs
--- a/Foundation/Time/StopWatch.hs
+++ b/Foundation/Time/StopWatch.hs
@@ -53,7 +53,7 @@
 initPrecise :: (Word64, Word64)
 initPrecise = unsafePerformIO $ do
     mti <- newPinned (sizeOfCSize size_MachTimebaseInfo)
-    mutableWithPtr mti $ \p -> do
+    withMutablePtr mti $ \p -> do
         sysMacos_timebase_info (castPtr p)
         let p32 = castPtr p :: Ptr Word32
         !n <- peek (p32 `ptrPlus` ofs_MachTimebaseInfo_numer)
@@ -69,14 +69,14 @@
 startPrecise = do
 #if defined(mingw32_HOST_OS)
     blk <- newPinned 16
-    _ <- mutableWithPtr blk $ \p ->
+    _ <- withMutablePtr blk $ \p ->
         c_QueryPerformanceCounter (castPtr p `ptrPlus` 8)
     pure (StopWatchPrecise blk)
 #elif defined(darwin_HOST_OS)
     StopWatchPrecise <$> sysMacos_absolute_time
 #else
     blk <- newPinned (sizeOfCSize (size_CTimeSpec + size_CTimeSpec))
-    _err1 <- mutableWithPtr blk $ \p -> do
+    _err1 <- withMutablePtr blk $ \p -> do
         sysTimeClockGetTime sysTime_CLOCK_MONOTONIC (castPtr p `ptrPlusCSz` size_CTimeSpec)
     pure (StopWatchPrecise blk)
 #endif
@@ -85,7 +85,7 @@
 stopPrecise :: StopWatchPrecise -> IO NanoSeconds
 stopPrecise (StopWatchPrecise blk) = do
 #if defined(mingw32_HOST_OS)
-    mutableWithPtr blk $ \p -> do
+    withMutablePtr blk $ \p -> do
         _ <- c_QueryPerformanceCounter (castPtr p)
         let p64 = castPtr p :: Ptr Word64
         end   <- peek p64
@@ -97,7 +97,7 @@
         (1,1)         -> end - blk
         (numer,denom) -> ((end - blk) * numer) `div` denom
 #else
-    mutableWithPtr blk $ \p -> do
+    withMutablePtr blk $ \p -> do
         _err1 <- sysTimeClockGetTime sysTime_CLOCK_MONOTONIC (castPtr p)
         let p64 = castPtr p :: Ptr Word64
         endSec    <- peek p64
diff --git a/benchs/BenchUtil/Common.hs b/benchs/BenchUtil/Common.hs
--- a/benchs/BenchUtil/Common.hs
+++ b/benchs/BenchUtil/Common.hs
@@ -12,8 +12,8 @@
     , nf
     ) where
 
-import           Gauge.Main hiding (bgroup, bench)
-import qualified Gauge.Main as C
+import           Gauge hiding (bgroup, bench)
+import qualified Gauge as C
 import           Foundation
 
 fbench = bench "foundation"
diff --git a/foundation.cabal b/foundation.cabal
--- a/foundation.cabal
+++ b/foundation.cabal
@@ -1,5 +1,5 @@
 name:                foundation
-version:             0.0.17
+version:             0.0.18
 synopsis:            Alternative prelude with batteries and no dependencies
 description:
     A custom prelude with no dependencies apart from base.
@@ -21,8 +21,7 @@
     * Usual partial functions distinguished through type system
 license:             BSD3
 license-file:        LICENSE
-copyright:           2015-2017 Vincent Hanquez <vincent@snarc.org>
-                     2017      Foundation Maintainers
+copyright:           2015-2017 Vincent Hanquez <vincent@snarc.org>, 2017- Foundation Maintainers
 author:              Vincent Hanquez <vincent@snarc.org>
 maintainer:          vincent@snarc.org
 category:            foundation
@@ -37,7 +36,7 @@
 
 source-repository head
   type: git
-  location: https://github.com/haskell-foundation/foundation.git
+  location: https://github.com/haskell-foundation/foundation
 
 flag experimental
   description:       Enable building experimental features, known as highly unstable or without good support cross-platform
@@ -192,7 +191,7 @@
                       BangPatterns
                       DeriveDataTypeable
   build-depends:     base >= 4.7 && < 5
-                   , basement == 0.0.4
+                   , basement == 0.0.5
                    , ghc-prim
   -- FIXME add suport for armel mipsel
   --  CPP-options: -DARCH_IS_LITTLE_ENDIAN
@@ -274,7 +273,7 @@
   if flag(minimal-deps) || impl(ghc < 7.10)
     buildable: False
   else
-    build-depends:     base >= 4, gauge, basement, foundation
+    build-depends:     base >= 4, gauge >= 0.2.0, basement, foundation
     if flag(bench-all)
       cpp-options:     -DBENCH_ALL
       build-depends:   text, attoparsec, vector, bytestring
