diff --git a/README.md b/README.md
index 5e7b41e4f36712b50010d79ddfcc7ba5f82cfdb8..11ffc2f315e1506ae90fc7bfec68461db026c124 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Turn your server/desktop to DigitalOcean / Linode / Vultr with a super-simple sc
 
 qemu, bash, sed
 
-Optional: aria2c (simply replace aria2c with curl if you don't like it)
+Any of them: aria2c / wget / curl
 
 > ArchLinux user: simply run `pacman -S cdrkit qemu-base aria2`
 
diff --git a/cron-callback.sh b/cron-callback.sh
index 99af843308741707fec31416df33cef5ee070a24..6b0d414b0cddcf852f38275c67cef995ec2d2416 100755
--- a/cron-callback.sh
+++ b/cron-callback.sh
@@ -47,7 +47,13 @@ function download_cloud_img_if_not_exist () {
     [ ! "${knowledge[$cloudimg]+abc}" ] && echo2 "Unknown cloudimg $cloudimg. cannot download it." && return 1
 
     echo2 "+ Downloading cloudimg $cloudimg..."
-    aria2c -o "base/$cloudimg" "${knowledge[$cloudimg]}" || ! echo2 "Failed to download ubuntu cloudimg" || return $?
+    if which aria2c; then
+        aria2c -o "base/$cloudimg" "${knowledge[$cloudimg]}" || ! echo2 "Failed to download ubuntu cloudimg" || return $?
+    elif which wget; then
+        wget   -O "base/$cloudimg" "${knowledge[$cloudimg]}" || ! echo2 "Failed to download ubuntu cloudimg" || return $?
+    elif which curl; then
+        curl   -o "base/$cloudimg" "${knowledge[$cloudimg]}" || ! echo2 "Failed to download ubuntu cloudimg" || return $?
+    fi
 }
 
 function create_vm_if_not_exist () {