diff --git a/datadir/resources/Copy of more_gray.png b/datadir/resources/Copy of more_gray.png
new file mode 100644
Binary files /dev/null and b/datadir/resources/Copy of more_gray.png differ
diff --git a/datadir/resources/hoogle.js b/datadir/resources/hoogle.js
--- a/datadir/resources/hoogle.js
+++ b/datadir/resources/hoogle.js
@@ -163,7 +163,7 @@
     return {
         showWaiting: function(){show("<i>Still working...</i>");},
         showError: function(status,text){show("<i>Error: status " + status + "</i>");},
-        showResult : function(text){show(text);},
+        showResult: function(text){show(text);},
         hide: function(){show();}
     }
 }
@@ -307,17 +307,19 @@
 function cache(maxElems)
 {
     // FIXME: Currently does not evict things
-    var contents = {}; // what we have in the cache
+    var contents = {}; // what we have in the cache, with # prepended
+    // note that contents[toString] != undefined, since it's a default method
+    // hence the leading #
 
     return {
         add: function(key,val)
         {
-            contents[key] = val;
+            contents["#" + key] = val;
         },
         
         ask: function(key)
         {
-            return contents[key];
+            return contents["#" + key];
         }
     };
 }
diff --git a/hoogle.cabal b/hoogle.cabal
--- a/hoogle.cabal
+++ b/hoogle.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.6
 build-type:         Simple
 name:               hoogle
-version:            4.2.5
+version:            4.2.6
 license:            GPL
 license-file:       docs/LICENSE
 category:           Development
@@ -31,12 +31,12 @@
 
 source-repository head
     type:     darcs
-    location: http://community.haskell.org/~ndm/darcs/hoogle/
+    location: http://code.haskell.org/hoogle/
 
 library
     hs-source-dirs:     src
     build-depends:
-        base > 4 && < 4.4,
+        base > 4 && < 5,
         array, bytestring, containers, directory, filepath, process, random,
         safe,
         binary,
@@ -112,10 +112,10 @@
         enumerator == 0.4.*,
         blaze-builder >= 0.2 && < 0.4,
         http-types == 0.6.*,
-        case-insensitive == 0.2.*,
+        case-insensitive >= 0.2 && < 0.4,
         wai == 0.4.*,
         warp == 0.4.*,
-        Cabal >= 1.8 && < 1.11
+        Cabal >= 1.8 && < 1.13
 
     other-modules:
         CmdLine.All
diff --git a/src/Data/TypeMap.hs b/src/Data/TypeMap.hs
--- a/src/Data/TypeMap.hs
+++ b/src/Data/TypeMap.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 
 module Data.TypeMap(
     TypeMap, empty,
@@ -31,8 +32,10 @@
 insert a (TypeMap mp) = TypeMap $ Map.insert (typeOf a) (toDyn a) mp
 
 
+#if __GLASGOW_HASKELL__ < 702
 instance Ord TypeRep where
     compare a b = compare (splitTyConApp a) (splitTyConApp b)
 
 instance Ord TyCon where
     compare a b = compare (tyConString a) (tyConString b)
+#endif
diff --git a/src/General/System.hs b/src/General/System.hs
--- a/src/General/System.hs
+++ b/src/General/System.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP, ScopedTypeVariables #-}
 
 -- | Module for system like things in base/directory/etc, or could plausibly be added.
 module General.System(module General.System, module X) where
@@ -79,4 +79,4 @@
 
 
 getEnvVar :: String -> IO (Maybe String)
-getEnvVar x = catch (fmap Just $ getEnv x) (const $ return Nothing)
+getEnvVar x = E.catch (fmap Just $ getEnv x) (\(x :: E.SomeException) -> return Nothing)
diff --git a/src/Hoogle/Store/Type.hs b/src/Hoogle/Store/Type.hs
--- a/src/Hoogle/Store/Type.hs
+++ b/src/Hoogle/Store/Type.hs
@@ -34,7 +34,7 @@
 
 -- | Given how many you would like to allocate, return your base address
 onceKeys :: Int -> IO Int
-onceKeys = unsafePerformIO $ do
+onceKeys = System.IO.Unsafe.unsafePerformIO $ do
     ref <- newIORef 0
     return $ \n -> atomicModifyIORef ref $ \x -> (x+n, x)
 
@@ -93,7 +93,7 @@
 
 {-# NOINLINE once #-}
 once :: a -> Once a
-once x = unsafePerformIO $ do
+once x = System.IO.Unsafe.unsafePerformIO $ do
     key <- onceKeys 1
     return $ Once key x
 
diff --git a/src/Recipe/Download.hs b/src/Recipe/Download.hs
--- a/src/Recipe/Download.hs
+++ b/src/Recipe/Download.hs
@@ -52,12 +52,14 @@
 downloadTarball :: CmdLine -> FilePath -> URL -> IO ()
 downloadTarball opt out url = do
     b <- doesFileExist $ out <.> "txt"
-    unless b $ do
+    when (not b || redownload opt) $ do
         wget opt (out <.> "tar.gz") url
         createDirectoryIfMissing True out
         withDirectory out $ do
             check "gzip" "http://gnuwin32.sourceforge.net/packages/gzip.htm"
             check "tar" "http://gnuwin32.sourceforge.net/packages/gtar.htm"
-            system_ $ "gzip -d .." </> takeFileName out <.> "tar.gz"
+            putStrLn "Extracting tarball... "
+            system_ $ "gzip --decompress --force .." </> takeFileName out <.> "tar.gz"
             system_ $ "tar -xf .." </> takeFileName out <.> "tar"
+            putStrLn "Finished extracting tarball"
         writeFile (out <.> "txt") ""
