diff --git a/http-media.cabal b/http-media.cabal
--- a/http-media.cabal
+++ b/http-media.cabal
@@ -1,5 +1,5 @@
 name:          http-media
-version:       0.6.0
+version:       0.6.1
 license:       MIT
 license-file:  LICENSE
 author:        Timothy Jones
@@ -46,6 +46,8 @@
   default-language: Haskell2010
   default-extensions:
     OverloadedStrings
+  other-extensions:
+    CPP
 
   exposed-modules:
     Network.HTTP.Media
@@ -71,6 +73,9 @@
   default-language: Haskell2010
   default-extensions:
     OverloadedStrings
+  other-extensions:
+    CPP
+    TupleSections
 
   test-module: Tests
   other-modules:
diff --git a/src/Network/HTTP/Media.hs b/src/Network/HTTP/Media.hs
--- a/src/Network/HTTP/Media.hs
+++ b/src/Network/HTTP/Media.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 ------------------------------------------------------------------------------
 -- | A framework for parsing HTTP media type headers.
 module Network.HTTP.Media
@@ -46,7 +48,11 @@
 import qualified Data.ByteString.Char8 as BS
 
 ------------------------------------------------------------------------------
+#if MIN_VERSION_base(4, 8, 0)
+import Control.Applicative  ((<|>))
+#else
 import Control.Applicative  (pure, (<$>), (<*>), (<|>))
+#endif
 import Control.Monad        (guard, (>=>))
 import Data.ByteString      (ByteString)
 import Data.Maybe           (fromMaybe)
diff --git a/src/Network/HTTP/Media/Language/Internal.hs b/src/Network/HTTP/Media/Language/Internal.hs
--- a/src/Network/HTTP/Media/Language/Internal.hs
+++ b/src/Network/HTTP/Media/Language/Internal.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 ------------------------------------------------------------------------------
 -- | Defines the 'Language' accept header with an 'Accept' instance for use in
 -- language negotiation.
@@ -14,7 +16,9 @@
 import Data.ByteString      (ByteString)
 import Data.CaseInsensitive (CI, original)
 import Data.Char            (isAlpha)
+#if !MIN_VERSION_base(4, 8, 0)
 import Data.Functor         ((<$>))
+#endif
 import Data.List            (isPrefixOf)
 import Data.Maybe           (fromMaybe)
 import Data.String          (IsString (..))
diff --git a/src/Network/HTTP/Media/MediaType.hs b/src/Network/HTTP/Media/MediaType.hs
--- a/src/Network/HTTP/Media/MediaType.hs
+++ b/src/Network/HTTP/Media/MediaType.hs
@@ -94,7 +94,7 @@
 -- a parameter value. RFC 4288 does not specify what characters are valid, so
 -- here we just disallow parameter and media type breakers, ',' and ';'.
 ensureV :: ByteString -> CI ByteString
-ensureV = CI.mk . ensure (`notElem` ",;")
+ensureV = CI.mk . ensure (`notElem` [',', ';'])
 
 
 ------------------------------------------------------------------------------
diff --git a/test/Network/HTTP/Media/Gen.hs b/test/Network/HTTP/Media/Gen.hs
--- a/test/Network/HTTP/Media/Gen.hs
+++ b/test/Network/HTTP/Media/Gen.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 ------------------------------------------------------------------------------
 -- | Contains definitions for generating 'ByteString's.
 module Network.HTTP.Media.Gen
@@ -17,7 +19,9 @@
 import qualified Data.CaseInsensitive  as CI
 
 ------------------------------------------------------------------------------
+#if !MIN_VERSION_base(4, 8, 0)
 import Control.Applicative  ((<$>))
+#endif
 import Control.Monad        (liftM2, join)
 import Data.ByteString      (ByteString)
 import Data.CaseInsensitive (CI, original)
diff --git a/test/Network/HTTP/Media/Language/Gen.hs b/test/Network/HTTP/Media/Language/Gen.hs
--- a/test/Network/HTTP/Media/Language/Gen.hs
+++ b/test/Network/HTTP/Media/Language/Gen.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE CPP, TupleSections #-}
 
 ------------------------------------------------------------------------------
 -- | Contains definitions for generating 'Language's.
@@ -18,7 +18,9 @@
     ) where
 
 ------------------------------------------------------------------------------
+#if !MIN_VERSION_base(4, 8, 0)
 import Control.Applicative  ((<$>))
+#endif
 import Data.ByteString      (ByteString)
 import Data.CaseInsensitive (CI)
 import Test.QuickCheck.Gen
diff --git a/test/Network/HTTP/Media/Language/Tests.hs b/test/Network/HTTP/Media/Language/Tests.hs
--- a/test/Network/HTTP/Media/Language/Tests.hs
+++ b/test/Network/HTTP/Media/Language/Tests.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 ------------------------------------------------------------------------------
 module Network.HTTP.Media.Language.Tests (tests) where
 
@@ -5,7 +7,9 @@
 import qualified Data.ByteString.Char8 as BS
 
 ------------------------------------------------------------------------------
+#if !MIN_VERSION_base(4, 8, 0)
 import Control.Applicative               ((<$>))
+#endif
 import Control.Monad                     (join)
 import Data.String                       (fromString)
 import Distribution.TestSuite.QuickCheck
diff --git a/test/Network/HTTP/Media/MediaType/Gen.hs b/test/Network/HTTP/Media/MediaType/Gen.hs
--- a/test/Network/HTTP/Media/MediaType/Gen.hs
+++ b/test/Network/HTTP/Media/MediaType/Gen.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 ------------------------------------------------------------------------------
 -- | Contains definitions for generating 'MediaType's.
 module Network.HTTP.Media.MediaType.Gen
@@ -30,7 +32,9 @@
 import qualified Data.Map as Map
 
 ------------------------------------------------------------------------------
+#if !MIN_VERSION_base(4, 8, 0)
 import Control.Applicative  ((<$>))
+#endif
 import Control.Monad        (liftM, liftM2)
 import Data.ByteString      (ByteString)
 import Data.CaseInsensitive (CI, original)
diff --git a/test/Network/HTTP/Media/Tests.hs b/test/Network/HTTP/Media/Tests.hs
--- a/test/Network/HTTP/Media/Tests.hs
+++ b/test/Network/HTTP/Media/Tests.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE CPP #-}
+
 ------------------------------------------------------------------------------
 module Network.HTTP.Media.Tests (tests) where
 
 ------------------------------------------------------------------------------
+#if !MIN_VERSION_base(4, 8, 0)
 import Control.Applicative               ((<$>), (<*>))
+#endif
 import Control.Monad                     ((>=>), replicateM)
 import Data.ByteString                   (ByteString)
 import Data.Foldable                     (foldlM)
