diff --git a/Data/DList.hs b/Data/DList.hs
--- a/Data/DList.hs
+++ b/Data/DList.hs
@@ -42,9 +42,12 @@
 import Prelude hiding (concat, foldr, map, head, tail)
 import qualified Data.List as List
 import Control.Monad
-import Control.Applicative(Applicative(..))
 import Data.Monoid
 
+#ifdef APPLICATIVE_IN_BASE
+import Control.Applicative(Applicative(..))
+#endif
+
 -- | A difference list is a function that given a list, returns the
 -- original contents of the difference list prepended at the given list
 --
@@ -150,7 +153,7 @@
     fmap = map
     {-# INLINE fmap #-}
 
-#if __GLASGOW_HASKELL__ >= 608
+#ifdef APPLICATIVE_IN_BASE
 instance Applicative DList where
     pure  = return
     (<*>) = ap
diff --git a/dlist.cabal b/dlist.cabal
--- a/dlist.cabal
+++ b/dlist.cabal
@@ -1,5 +1,5 @@
 Name:                dlist
-Version:             0.3.2
+Version:             0.4
 Synopsis:            Differences lists
 Description:         
     Differences lists: a list-like type supporting O(1) append.
@@ -12,9 +12,19 @@
 Author:              Don Stewart 
 Maintainer:          dons@galois.com
 Copyright:           2006-7 Don Stewart
-Homepage:            http://www.cse.unsw.edu.au/~dons/dlist.html
-Build-Depends:       base
-Ghc-options:         -O2 -Wall
-Extensions:          CPP
-Exposed-modules:     Data.DList
+Homepage:            http://code.haskell.org/~dons/code/dlist/
 extra-source-files:  README tests/Properties.hs tests/Parallel.hs
+cabal-version:       >= 1.2
+
+flag applicative-in-base
+
+Library
+    Build-Depends:       base
+    Ghc-options:         -O2 -Wall
+    Extensions:          CPP
+    Exposed-modules:     Data.DList
+    if flag(applicative-in-base)
+        build-depends: base >= 2.0
+        cpp-options: -DAPPLICATIVE_IN_BASE
+    else
+        build-depends: base < 2.0
