diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+0.7
+---
+* adapt to `Data.Void` being moved into `base-4.8`
+* `vacuousM` removed
+
 0.6
 ---
 * `instance Exception Void`
diff --git a/src-old/Data/Void.hs b/src-old/Data/Void.hs
new file mode 100644
--- /dev/null
+++ b/src-old/Data/Void.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE CPP #-}
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
+
+#ifdef LANGUAGE_DeriveDataTypeable
+{-# LANGUAGE DeriveDataTypeable #-}
+#endif
+
+#ifdef LANGUAGE_DeriveGeneric
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE StandaloneDeriving #-}
+#endif
+
+#ifndef MIN_VERSION_base
+#define MIN_VERSION_base(x,y,z) 1
+#endif
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2008-2013 Edward Kmett
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  provisional
+-- Portability :  portable
+--
+----------------------------------------------------------------------------
+module Data.Void
+  ( Void
+  , absurd
+  , vacuous
+  , vacuousM
+  ) where
+
+import Control.Monad (liftM)
+import Data.Ix
+import Data.Hashable
+import Data.Semigroup (Semigroup(..))
+
+#ifdef LANGUAGE_DeriveDataTypeable
+import Data.Data
+#endif
+
+#ifdef LANGUAGE_DeriveGeneric
+import GHC.Generics
+#endif
+
+#if MIN_VERSION_base(4,0,0)
+import Control.Exception
+#endif
+
+-- | A logically uninhabited data type.
+#if __GLASGOW_HASKELL__ < 700
+data Void = Void !Void
+#else
+newtype Void = Void Void
+#endif
+#ifdef LANGUAGE_DeriveDataTypeable
+  deriving (Data, Typeable)
+#endif
+
+#ifdef LANGUAGE_DeriveGeneric
+deriving instance Generic Void
+#endif
+
+instance Eq Void where
+  _ == _ = True
+
+instance Hashable Void where
+  hashWithSalt _ = absurd
+
+instance Ord Void where
+  compare _ _ = EQ
+
+instance Show Void where
+  showsPrec _ = absurd
+
+-- | Reading a 'Void' value is always a parse error, considering 'Void' as
+-- a data type with no constructors.
+instance Read Void where
+  readsPrec _ _ = []
+
+-- | Since 'Void' values logically don't exist, this witnesses the logical
+-- reasoning tool of \"ex falso quodlibet\".
+absurd :: Void -> a
+absurd a = a `seq` spin a where
+   spin (Void b) = spin b
+
+-- | If 'Void' is uninhabited then any 'Functor' that holds only values of type 'Void'
+-- is holding no values.
+vacuous :: Functor f => f Void -> f a
+vacuous = fmap absurd
+
+-- | If 'Void' is uninhabited then any 'Monad' that holds values of type 'Void'
+-- is holding no values.
+vacuousM :: Monad m => m Void -> m a
+vacuousM = liftM absurd
+
+instance Semigroup Void where
+  a <> _ = a
+  times1p _ a = a
+
+instance Ix Void where
+  range _ = []
+  index _ = absurd
+  inRange _ = absurd
+  rangeSize _ = 0
+
+#if MIN_VERSION_base(4,0,0)
+instance Exception Void
+#endif
diff --git a/src/Data/Void.hs b/src/Data/Void.hs
deleted file mode 100644
--- a/src/Data/Void.hs
+++ /dev/null
@@ -1,111 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-}
-#endif
-
-#ifdef LANGUAGE_DeriveDataTypeable
-{-# LANGUAGE DeriveDataTypeable #-}
-#endif
-
-#ifdef LANGUAGE_DeriveGeneric
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE StandaloneDeriving #-}
-#endif
-
-#ifndef MIN_VERSION_base
-#define MIN_VERSION_base(x,y,z) 1
-#endif
------------------------------------------------------------------------------
--- |
--- Copyright   :  (C) 2008-2013 Edward Kmett
--- License     :  BSD-style (see the file LICENSE)
---
--- Maintainer  :  Edward Kmett <ekmett@gmail.com>
--- Stability   :  provisional
--- Portability :  portable
---
-----------------------------------------------------------------------------
-module Data.Void
-  ( Void
-  , absurd
-  , vacuous
-  , vacuousM
-  ) where
-
-import Control.Monad (liftM)
-import Data.Ix
-import Data.Hashable
-import Data.Semigroup (Semigroup(..))
-
-#ifdef LANGUAGE_DeriveDataTypeable
-import Data.Data
-#endif
-
-#ifdef LANGUAGE_DeriveGeneric
-import GHC.Generics
-#endif
-
-#if MIN_VERSION_base(4,0,0)
-import Control.Exception
-#endif
-
--- | A logically uninhabited data type.
-#if __GLASGOW_HASKELL__ < 700
-data Void = Void !Void
-#else
-newtype Void = Void Void
-#endif
-#ifdef LANGUAGE_DeriveDataTypeable
-  deriving (Data, Typeable)
-#endif
-
-#ifdef LANGUAGE_DeriveGeneric
-deriving instance Generic Void
-#endif
-
-instance Eq Void where
-  _ == _ = True
-
-instance Hashable Void where
-  hashWithSalt _ = absurd
-
-instance Ord Void where
-  compare _ _ = EQ
-
-instance Show Void where
-  showsPrec _ = absurd
-
--- | Reading a 'Void' value is always a parse error, considering 'Void' as
--- a data type with no constructors.
-instance Read Void where
-  readsPrec _ _ = []
-
--- | Since 'Void' values logically don't exist, this witnesses the logical
--- reasoning tool of \"ex falso quodlibet\".
-absurd :: Void -> a
-absurd a = a `seq` spin a where
-   spin (Void b) = spin b
-
--- | If 'Void' is uninhabited then any 'Functor' that holds only values of type 'Void'
--- is holding no values.
-vacuous :: Functor f => f Void -> f a
-vacuous = fmap absurd
-
--- | If 'Void' is uninhabited then any 'Monad' that holds values of type 'Void'
--- is holding no values.
-vacuousM :: Monad m => m Void -> m a
-vacuousM = liftM absurd
-
-instance Semigroup Void where
-  a <> _ = a
-  times1p _ a = a
-
-instance Ix Void where
-  range _ = []
-  index _ = absurd
-  inRange _ = absurd
-  rangeSize _ = 0
-
-#if MIN_VERSION_base(4,0,0)
-instance Exception Void
-#endif
diff --git a/void.cabal b/void.cabal
--- a/void.cabal
+++ b/void.cabal
@@ -1,8 +1,8 @@
 name:          void
 category:      Data Structures
-version:       0.6.1
+version:       0.7
 license:       BSD3
-cabal-version: >= 1.6
+cabal-version: >= 1.10
 license-file:  LICENSE
 author:        Edward A. Kmett
 maintainer:    Edward A. Kmett <ekmett@gmail.com>
@@ -31,10 +31,14 @@
   default: False
 
 library
+  default-language: Haskell98
   hs-source-dirs: src
   exposed-modules:
-    Data.Void
     Data.Void.Unsafe
+
+  if !impl(ghc>=7.9)
+    hs-source-dirs: src-old
+    exposed-modules: Data.Void
 
   build-depends:
     base       >= 3 && < 10,
