diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+1.7.0.4
+-------
+* Removed redundant constraints.
+
 1.7.0.3
 -------
 * Relaxed upper version bound for `OpenGL` package.
diff --git a/OpenAL.cabal b/OpenAL.cabal
--- a/OpenAL.cabal
+++ b/OpenAL.cabal
@@ -1,5 +1,5 @@
 name: OpenAL
-version: 1.7.0.3
+version: 1.7.0.4
 synopsis: A binding to the OpenAL cross-platform 3D audio API
 description:
   A Haskell binding for the OpenAL cross-platform 3D audio API,
@@ -23,6 +23,15 @@
 maintainer: Sven Panne <svenpanne@gmail.com>, Stephen Blackheath <haskell.openal2.stephen@blacksapphire.com>
 category: Sound
 build-type: Simple
+tested-with:
+  GHC == 7.0.4
+  GHC == 7.2.2
+  GHC == 7.4.2
+  GHC == 7.6.3
+  GHC == 7.8.4
+  GHC == 7.10.3
+  GHC == 8.0.1
+  GHC == 8.1
 cabal-version:  >= 1.10
 extra-source-files:
   CHANGELOG.md
@@ -79,6 +88,9 @@
     OpenGL       >= 2.12 && < 3.1
   default-language: Haskell2010
   ghc-options: -Wall
+  if impl(ghc > 8)
+    ghc-options: -Wcompat
+  other-extensions: CPP
   if os(windows) && flag(UseNativeWindowsLibraries)
     extra-libraries: OpenAL32
   else
diff --git a/src/Sound/OpenAL/AL/Attenuation.hs b/src/Sound/OpenAL/AL/Attenuation.hs
--- a/src/Sound/OpenAL/AL/Attenuation.hs
+++ b/src/Sound/OpenAL/AL/Attenuation.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 --------------------------------------------------------------------------------
 -- |
@@ -28,8 +29,10 @@
    -- $NoCullingByDistance
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Data.StateVar ( StateVar, makeStateVar )
 import Foreign.Marshal.Alloc ( alloca )
diff --git a/src/Sound/OpenAL/AL/Buffer.hs b/src/Sound/OpenAL/AL/Buffer.hs
--- a/src/Sound/OpenAL/AL/Buffer.hs
+++ b/src/Sound/OpenAL/AL/Buffer.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 --------------------------------------------------------------------------------
 -- |
@@ -69,8 +70,10 @@
    Buffer, MemoryRegion(..), Format(..), BufferData(..), bufferData
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Data.StateVar ( StateVar, makeStateVar )
 import Foreign.Marshal.Alloc ( alloca )
diff --git a/src/Sound/OpenAL/AL/BufferInternal.hs b/src/Sound/OpenAL/AL/BufferInternal.hs
--- a/src/Sound/OpenAL/AL/BufferInternal.hs
+++ b/src/Sound/OpenAL/AL/BufferInternal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_HADDOCK hide #-}
 --------------------------------------------------------------------------------
 -- |
@@ -17,8 +18,10 @@
    Buffer(..), marshalBuffer, unmarshalBuffer
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Control.Monad.IO.Class ( MonadIO(..) )
 import Data.ObjectName ( ObjectName(..), GeneratableObjectName(..) )
diff --git a/src/Sound/OpenAL/AL/Doppler.hs b/src/Sound/OpenAL/AL/Doppler.hs
--- a/src/Sound/OpenAL/AL/Doppler.hs
+++ b/src/Sound/OpenAL/AL/Doppler.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 --------------------------------------------------------------------------------
 -- |
@@ -20,8 +21,10 @@
    dopplerFactor, speedOfSound
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Data.StateVar ( get, StateVar, makeStateVar )
 import Foreign.Ptr ( FunPtr )
diff --git a/src/Sound/OpenAL/AL/Errors.hs b/src/Sound/OpenAL/AL/Errors.hs
--- a/src/Sound/OpenAL/AL/Errors.hs
+++ b/src/Sound/OpenAL/AL/Errors.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Sound.OpenAL.AL.Errors
@@ -17,8 +18,10 @@
    ALError(..), ALErrorCategory(..), alErrors
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Data.StateVar ( GettableStateVar, makeGettableStateVar )
 
diff --git a/src/Sound/OpenAL/AL/Extensions.hs b/src/Sound/OpenAL/AL/Extensions.hs
--- a/src/Sound/OpenAL/AL/Extensions.hs
+++ b/src/Sound/OpenAL/AL/Extensions.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Sound.OpenAL.AL.Extensions
@@ -22,8 +23,10 @@
    unmarshalALboolean, unmarshalFormat, unmarshalBuffer
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Data.StateVar ( GettableStateVar, makeGettableStateVar )
 import Foreign.Ptr
diff --git a/src/Sound/OpenAL/AL/Listener.hs b/src/Sound/OpenAL/AL/Listener.hs
--- a/src/Sound/OpenAL/AL/Listener.hs
+++ b/src/Sound/OpenAL/AL/Listener.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Sound.OpenAL.AL.Listener
@@ -31,8 +32,10 @@
    listenerPosition, listenerVelocity, Gain, listenerGain, orientation
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Data.StateVar ( StateVar, makeStateVar )
 import Foreign.Marshal.Array ( allocaArray, withArray )
diff --git a/src/Sound/OpenAL/AL/QueryUtils.hs b/src/Sound/OpenAL/AL/QueryUtils.hs
--- a/src/Sound/OpenAL/AL/QueryUtils.hs
+++ b/src/Sound/OpenAL/AL/QueryUtils.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_HADDOCK hide #-}
 --------------------------------------------------------------------------------
 -- |
@@ -18,8 +19,10 @@
    StringName(..), getString
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Foreign.Ptr ( Ptr )
 
diff --git a/src/Sound/OpenAL/AL/Source.hs b/src/Sound/OpenAL/AL/Source.hs
--- a/src/Sound/OpenAL/AL/Source.hs
+++ b/src/Sound/OpenAL/AL/Source.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 --------------------------------------------------------------------------------
 -- |
@@ -76,8 +77,10 @@
    SourceState(..), sourceState, play, pause, stop, rewind
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Control.Monad ( liftM2 )
 import Control.Monad.IO.Class ( MonadIO(..) )
@@ -592,8 +595,7 @@
       (makeSetter dict name source)
 
 makeSourceGettableStateVar ::
-   (Storable b, Storable c) =>
-   Dictionary a b c -> GetPName -> Source -> GettableStateVar a
+   (Storable b) => Dictionary a b c -> GetPName -> Source -> GettableStateVar a
 makeSourceGettableStateVar dict name source =
    makeGettableStateVar
       (makeGetter dict name source)
diff --git a/src/Sound/OpenAL/ALC/Capture.hs b/src/Sound/OpenAL/ALC/Capture.hs
--- a/src/Sound/OpenAL/ALC/Capture.hs
+++ b/src/Sound/OpenAL/ALC/Capture.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Sound.OpenAL.ALC.Capture
@@ -20,8 +21,10 @@
    allCaptureDeviceSpecifiers
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Control.Monad.IO.Class ( MonadIO(..) )
 import Data.StateVar ( get, GettableStateVar, makeGettableStateVar )
diff --git a/src/Sound/OpenAL/ALC/Errors.hs b/src/Sound/OpenAL/ALC/Errors.hs
--- a/src/Sound/OpenAL/ALC/Errors.hs
+++ b/src/Sound/OpenAL/ALC/Errors.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Sound.OpenAL.ALC.Errors
@@ -17,8 +18,10 @@
    ALCError(..), ALCErrorCategory(..), alcErrors
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Data.StateVar ( GettableStateVar, makeGettableStateVar )
 
diff --git a/src/Sound/OpenAL/ALC/Extensions.hs b/src/Sound/OpenAL/ALC/Extensions.hs
--- a/src/Sound/OpenAL/ALC/Extensions.hs
+++ b/src/Sound/OpenAL/ALC/Extensions.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Sound.OpenAL.ALC.Extensions
@@ -18,8 +19,10 @@
    alcVersion
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Control.Monad ( liftM2 )
 import Data.StateVar ( GettableStateVar, makeGettableStateVar )
diff --git a/src/Sound/OpenAL/ALC/QueryUtils.hs b/src/Sound/OpenAL/ALC/QueryUtils.hs
--- a/src/Sound/OpenAL/ALC/QueryUtils.hs
+++ b/src/Sound/OpenAL/ALC/QueryUtils.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_HADDOCK hide #-}
 --------------------------------------------------------------------------------
 -- |
@@ -17,8 +18,10 @@
    alcIsExtensionPresent
 ) where
 
+#if __GLASGOW_HASKELL__ >= 704
 -- Make the foreign imports happy.
 import Foreign.C.Types
+#endif
 
 import Control.Monad ( when )
 import Data.StateVar ( GettableStateVar, makeGettableStateVar )
diff --git a/src/Sound/OpenAL/Config.hs b/src/Sound/OpenAL/Config.hs
--- a/src/Sound/OpenAL/Config.hs
+++ b/src/Sound/OpenAL/Config.hs
@@ -31,10 +31,8 @@
    alcProcessContext, alcMakeContextCurrent, alcDestroyContext
 ) where
 
--- Make the foreign imports happy.
-import Foreign.C.Types
-
 import Control.Monad.IO.Class ( MonadIO(..) )
+import Foreign.C.Types
 import Foreign.Ptr ( Ptr, nullPtr )
 
 --------------------------------------------------------------------------------
