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.3
+version:            4.2.4
 license:            GPL
 license-file:       docs/LICENSE
 category:           Development
@@ -39,7 +39,7 @@
         parsec >= 2.1,
         transformers == 0.2.*,
         uniplate == 1.6.*,
-        haskell-src-exts >= 1.9 && < 1.11
+        haskell-src-exts >= 1.9 && < 1.12
 
     if !os(mingw32)
         build-depends: unix
@@ -103,7 +103,7 @@
 
     build-depends:
         time, old-time, old-locale,
-        cmdargs == 0.6.*,
+        cmdargs == 0.7.*,
         tagsoup >= 0.11 && < 0.13,
         enumerator == 0.4.*,
         blaze-builder >= 0.2 && < 0.4,
diff --git a/src/Recipe/Download.hs b/src/Recipe/Download.hs
--- a/src/Recipe/Download.hs
+++ b/src/Recipe/Download.hs
@@ -32,11 +32,14 @@
     b <- doesFileExist fil
     when (not b || redownload opt) $ do
         check "wget" "http://gnuwin32.sourceforge.net/packages/wget.htm"
-        res <- system $ "wget " ++ url ++ " -O " ++ fil
-        let b = res == ExitSuccess
-        unless b $ do
-            b <- doesFileExist fil
-            when b $ removeFile fil
+        let sys cmd = do
+                res <- fmap (== ExitSuccess) $ system cmd
+                unless res $ do
+                    b <- doesFileExist fil
+                    when b $ removeFile fil
+                return res
+        b <- sys $ "wget " ++ url ++ " --output-document=" ++ fil
+        unless b $ do sys $ "curl " ++ url ++ " --output " ++ fil; return ()
     doesFileExist fil
 
 
