diff --git a/Network/Pcap.hs b/Network/Pcap.hs
--- a/Network/Pcap.hs
+++ b/Network/Pcap.hs
@@ -105,7 +105,13 @@
     , snapshotLen		-- :: PcapHandle -> IO Int
     ) where
 
+#ifdef BYTESTRING_IN_BASE
 import qualified Data.ByteString.Base as B
+import qualified Data.ByteString.Base as BU
+#else
+import qualified Data.ByteString.Internal as B
+import qualified Data.ByteString.Unsafe as BU
+#endif
 import Data.Int (Int64)
 import Data.Time.Clock (DiffTime, picosecondsToDiffTime)
 import Data.Word (Word8, Word32)
@@ -313,7 +319,7 @@
 sendPacketBS :: PcapHandle
              -> B.ByteString    -- ^ packet data (including link-level header)
              -> IO ()
-sendPacketBS pch s = B.unsafeUseAsCStringLen s $ \(buf, len) ->
+sendPacketBS pch s = BU.unsafeUseAsCStringLen s $ \(buf, len) ->
     sendPacket pch (castPtr buf) len
 
 -- | Represent a captured packet as a 'B.ByteString'.  Suitable for
@@ -348,7 +354,7 @@
        -> IO ()
 dumpBS dh hdr s =
     withDump dh $ \hdl ->
-        B.unsafeUseAsCString s $ \buf -> P.dump hdl hdr (castPtr buf)
+        BU.unsafeUseAsCString s $ \buf -> P.dump hdl hdr (castPtr buf)
 
 --
 -- Datalink manipulation
diff --git a/Network/Pcap/Base.hsc b/Network/Pcap/Base.hsc
--- a/Network/Pcap/Base.hsc
+++ b/Network/Pcap/Base.hsc
@@ -114,7 +114,11 @@
 import Control.Monad (when)
 import Data.Maybe (isNothing, fromJust )
 import Data.ByteString ()
+#ifdef BYTESTRING_IN_BASE
 import qualified Data.ByteString.Base as B
+#else
+import qualified Data.ByteString.Internal as B
+#endif
 import Data.Word (Word8, Word32)
 import Foreign.Ptr (Ptr, plusPtr, nullPtr, FunPtr, freeHaskellFunPtr)
 import Foreign.C.String (CString, peekCString, withCString)
diff --git a/pcap.cabal b/pcap.cabal
--- a/pcap.cabal
+++ b/pcap.cabal
@@ -1,5 +1,5 @@
 name:            pcap
-version:         0.4
+version:         0.4.1
 license:         BSD4
 license-file:    LICENSE
 synopsis:        A system-independent interface for user-level packet capture
@@ -7,14 +7,33 @@
 maintainer:      Bryan O'Sullivan <bos@serpentine.com>
 author:          Bryan O'Sullivan, Nick Burlett, Dominic Steinitz, Gregory Wright (original author)
 category:        Network
-exposed-modules: Network.Pcap.Base
-                 Network.Pcap
-build-depends:   base >= 2.0, haskell98, network, time
-extensions:      ForeignFunctionInterface
-ghc-options:     -W -O -funbox-strict-fields
-include-dirs:    include
-includes:        pcapconfig.h pcap.h
-install-includes: pcapconfig.h
+cabal-version:   >= 1.2.1
 extra-source-files:
                  configure.ac configure include/pcapconfig.h.in
                  pcap.buildinfo.in
+extra-tmp-files: config.log config.status
+
+flag bytestring-in-base
+  description: bytestring was part of the base library in ghc-6.6
+               days. The bytestring low level interface is in
+               Data.ByteString.Internal and Data.Bytestring.Unsafe not
+               Data.ByteString.Base
+
+
+library
+  if flag(bytestring-in-base)
+    -- bytestring was in base-2.0 and 2.1.1
+    build-depends: base >= 2.0 && < 2.2
+    cpp-options:   -DBYTESTRING_IN_BASE
+  else
+    build-depends: base < 2.0 || >= 2.2, bytestring >= 0.9 
+
+  build-depends:   haskell98, network, time
+  exposed-modules: Network.Pcap.Base
+                   Network.Pcap
+  extensions:      ForeignFunctionInterface, CPP
+  ghc-options:     -W -O -funbox-strict-fields
+
+  include-dirs:    include
+  includes:        pcapconfig.h pcap.h
+  install-includes: pcapconfig.h
