diff --git a/Database/MongoDB/Admin.hs b/Database/MongoDB/Admin.hs
--- a/Database/MongoDB/Admin.hs
+++ b/Database/MongoDB/Admin.hs
@@ -35,7 +35,7 @@
 import Data.Set (Set)
 import System.IO.Unsafe (unsafePerformIO)
 
-import qualified Data.HashTable as H
+import qualified Data.HashTable.IO as H
 import qualified Data.Set as Set
 
 import Control.Monad.Trans (MonadIO, liftIO)
@@ -148,7 +148,7 @@
 
 -- *** Index cache
 
-type DbIndexCache = H.HashTable Database IndexCache
+type DbIndexCache = H.BasicHashTable Database IndexCache
 -- ^ Cache the indexes we create so repeatedly calling ensureIndex only hits database the first time. Clear cache every once in a while so if someone else deletes index we will recreate it on ensureIndex.
 
 type IndexCache = IORef (Set (Collection, IndexName))
@@ -156,7 +156,7 @@
 dbIndexCache :: DbIndexCache
 -- ^ initialize cache and fork thread that clears it every 15 minutes
 dbIndexCache = unsafePerformIO $ do
-	table <- H.new (==) (H.hashString . T.unpack)
+	table <- H.new
 	_ <- forkIO . forever $ threadDelay 900000000 >> clearDbIndexCache
 	return table
 {-# NOINLINE dbIndexCache #-}
diff --git a/Database/MongoDB/Query.hs b/Database/MongoDB/Query.hs
--- a/Database/MongoDB/Query.hs
+++ b/Database/MongoDB/Query.hs
@@ -561,7 +561,7 @@
 newCursor db col batchSize dBatch = do
 	var <- newMVar dBatch
 	let cursor = Cursor (db <.> col) batchSize var
-	mkWeakMVar var (closeCursor cursor)
+	_ <- mkWeakMVar var (closeCursor cursor)
 	return cursor
 #if !MIN_VERSION_base(4,6,0)
   where mkWeakMVar = addMVarFinalizer
diff --git a/System/IO/Pipeline.hs b/System/IO/Pipeline.hs
--- a/System/IO/Pipeline.hs
+++ b/System/IO/Pipeline.hs
@@ -2,7 +2,7 @@
 
 A pipeline closes itself when a read or write causes an error, so you can detect a broken pipeline by checking isClosed.  It also closes itself when garbage collected, or you can close it explicitly. -}
 
-{-# LANGUAGE DoRec, RecordWildCards, NamedFieldPuns, ScopedTypeVariables #-}
+{-# LANGUAGE RecursiveDo, RecordWildCards, NamedFieldPuns, ScopedTypeVariables #-}
 {-# LANGUAGE CPP #-}
 
 module System.IO.Pipeline (
@@ -69,7 +69,7 @@
 	rec
 		let pipe = Pipeline{..}
 		listenThread <- forkIO (listen pipe)
-	mkWeakMVar vStream $ do
+	_ <- mkWeakMVar vStream $ do
 		killThread listenThread
 		closeStream stream
 	return pipe
diff --git a/mongoDB.cabal b/mongoDB.cabal
--- a/mongoDB.cabal
+++ b/mongoDB.cabal
@@ -1,5 +1,5 @@
 Name:           mongoDB
-Version:        1.4.1.1
+Version:        1.4.2
 Synopsis:       Driver (client) for MongoDB, a free, scalable, fast, document
                 DBMS
 Description:    This package lets you connect to MongoDB servers and
@@ -37,6 +37,7 @@
                     , monad-control >= 0.3.1
                     , lifted-base >= 0.1.0.3
                     , transformers-base >= 0.4.1
+                    , hashtables >= 1.1.2.0
 
   Exposed-modules:  Database.MongoDB
                     Database.MongoDB.Admin
