--- a/libopkg/args.c
+++ b/libopkg/args.c
@@ -263,7 +263,7 @@
     
      printf("\nPackage Manipulation:\n");
      printf("\tupdate  		Update list of available packages\n");
-     printf("\tupgrade			Upgrade all installed packages to latest version\n");
+     printf("\tupgrade <pkg>		Upgrade package to latest version\n");
      printf("\tinstall <pkg>		Download and install <pkg> (and dependencies)\n");
      printf("\tinstall <file.opk>	Install package <file.opk>\n");
      printf("\tconfigure [<pkg>]	Configure unpacked packages\n");
--- a/libopkg/opkg_cmd.c
+++ b/libopkg/opkg_cmd.c
@@ -79,7 +79,7 @@
    array for easier maintenance */
 static opkg_cmd_t cmds[] = {
      {"update", 0, (opkg_cmd_fun_t)opkg_update_cmd}, 
-     {"upgrade", 0, (opkg_cmd_fun_t)opkg_upgrade_cmd},
+     {"upgrade", 1, (opkg_cmd_fun_t)opkg_upgrade_cmd},
      {"list", 0, (opkg_cmd_fun_t)opkg_list_cmd},
      {"list_installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd},
      {"list_upgradable", 0, (opkg_cmd_fun_t)opkg_list_upgradable_cmd},
@@ -640,17 +640,6 @@
 		    opkg_install_by_name(conf, arg);
                }
 	  }
-     } else {
-	  pkg_vec_t *installed = pkg_vec_alloc();
-
-	  pkg_info_preinstall_check(conf);
-
-	  pkg_hash_fetch_all_installed(&conf->pkg_hash, installed);
-	  for (i = 0; i < installed->len; i++) {
-	       pkg = installed->pkgs[i];
-	       opkg_upgrade_pkg(conf, pkg);
-	  }
-	  pkg_vec_free(installed);
      }
 
      /* recheck to verify that all dependences are satisfied */