diff --git a/Data/Digest/Pure/MD5.hs b/Data/Digest/Pure/MD5.hs
--- a/Data/Digest/Pure/MD5.hs
+++ b/Data/Digest/Pure/MD5.hs
@@ -36,6 +36,7 @@
 import Data.ByteString.Unsafe (unsafeUseAsCString)
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Lazy as L
+import Data.ByteString.Unsafe (unsafeDrop)
 import Data.ByteString.Internal
 import Data.Bits
 import Data.List
@@ -121,7 +122,7 @@
   | B.length bs == 0 = ctx
   | otherwise = 
 	let !new = performMD5Update ctx bs
-	in blockAndDo new (B.drop blockSizeBytes bs)
+	in blockAndDo new (unsafeDrop blockSizeBytes bs)
 {-# INLINE blockAndDo #-}
 
 -- Assumes ByteString length == blockSizeBytes, will fold the 
diff --git a/pureMD5.cabal b/pureMD5.cabal
--- a/pureMD5.cabal
+++ b/pureMD5.cabal
@@ -1,5 +1,5 @@
 name:		pureMD5
-version:	2.1.0.1
+version:	2.1.0.2
 license:	BSD3
 license-file:	LICENSE
 author:		Thomas DuBuisson <thomas.dubuisson@gmail.com>
@@ -28,6 +28,7 @@
 
 Executable md5Test
   main-is: Test/main.hs
-  Build-Depends: base, QuickCheck, crypto-api, bytestring, cereal
+  if flag(test)
+    Build-Depends: base, QuickCheck, crypto-api, bytestring, cereal
   if !flag(test)
     buildable: False
