diff --git a/src/ideviceinstaller.c b/src/ideviceinstaller.c
index b626caa..5758b46 100644
--- a/src/ideviceinstaller.c
+++ b/src/ideviceinstaller.c
@@ -56,14 +56,19 @@
 char *options = NULL;
 char *appid = NULL;
 
-int list_apps_mode = 0;
-int install_mode = 0;
-int uninstall_mode = 0;
-int upgrade_mode = 0;
-int list_archives_mode = 0;
-int archive_mode = 0;
-int restore_mode = 0;
-int remove_archive_mode = 0;
+enum cmd_mode {
+	CMD_NONE = 0,
+	CMD_LIST_APPS,
+	CMD_INSTALL,
+	CMD_UNINSTALL,
+	CMD_UPGRADE,
+	CMD_LIST_ARCHIVES,
+	CMD_ARCHIVE,
+	CMD_RESTORE,
+	CMD_REMOVE_ARCHIVE
+};
+
+int cmd = CMD_NONE;
 
 char *last_status = NULL;
 int wait_for_op_complete = 0;
@@ -339,33 +344,32 @@
 			udid = strdup(optarg);
 			break;
 		case 'l':
-			list_apps_mode = 1;
+			cmd = CMD_LIST_APPS;
 			break;
 		case 'i':
-			install_mode = 1;
+			cmd = CMD_INSTALL;
 			appid = strdup(optarg);
 			break;
-		case 'u':
-			uninstall_mode = 1;
+			cmd = CMD_UNINSTALL;
 			appid = strdup(optarg);
 			break;
 		case 'g':
-			upgrade_mode = 1;
+			cmd = CMD_UPGRADE;
 			appid = strdup(optarg);
 			break;
 		case 'L':
-			list_archives_mode = 1;
+			cmd = CMD_LIST_ARCHIVES;
 			break;
 		case 'a':
-			archive_mode = 1;
+			cmd = CMD_ARCHIVE;
 			appid = strdup(optarg);
 			break;
 		case 'r':
-			restore_mode = 1;
+			cmd = CMD_RESTORE;
 			appid = strdup(optarg);
 			break;
 		case 'R':
-			remove_archive_mode = 1;
+			cmd = CMD_REMOVE_ARCHIVE;
 			appid = strdup(optarg);
 			break;
 		case 'o':
@@ -559,7 +563,7 @@
 	}
 	notification_expected = 0;
 
-	if (list_apps_mode) {
+	if (cmd == CMD_LIST_APPS) {
 		int xml_mode = 0;
 		plist_t client_opts = instproxy_client_options_new();
 		instproxy_client_options_add(client_opts, "ApplicationType", "User", NULL);
@@ -652,7 +656,7 @@
 			free(s_appid);
 		}
 		plist_free(apps);
-	} else if (install_mode || upgrade_mode) {
+	} else if (cmd == CMD_INSTALL || cmd == CMD_UPGRADE) {
 		plist_t sinf = NULL;
 		plist_t meta = NULL;
 		char *pkgname = NULL;
@@ -950,7 +954,7 @@
 		}
 
 		/* perform installation or upgrade */
-		if (install_mode) {
+		if (cmd == CMD_INSTALL) {
 			printf("Installing '%s'\n", bundleidentifier);
 #ifdef HAVE_LIBIMOBILEDEVICE_1_1
 			instproxy_install(ipc, pkgname, client_opts, status_cb, NULL);
@@ -969,7 +973,7 @@
 		free(pkgname);
 		wait_for_op_complete = 1;
 		notification_expected = 1;
-	} else if (uninstall_mode) {
+	} else if (cmd == CMD_UNINSTALL) {
 		printf("Uninstalling '%s'\n", appid);
 #ifdef HAVE_LIBIMOBILEDEVICE_1_1
 		instproxy_uninstall(ipc, appid, NULL, status_cb, NULL);
@@ -978,7 +982,7 @@
 #endif
 		wait_for_op_complete = 1;
 		notification_expected = 0;
-	} else if (list_archives_mode) {
+	} else if (cmd == CMD_LIST_ARCHIVES) {
 		int xml_mode = 0;
 		plist_t dict = NULL;
 		plist_t lres = NULL;
@@ -1069,7 +1073,7 @@
 		}
 		while (node);
 		plist_free(dict);
-	} else if (archive_mode) {
+	} else if (cmd == CMD_ARCHIVE) {
 		char *copy_path = NULL;
 		int remove_after_copy = 0;
 		int skip_uninstall = 1;
@@ -1274,8 +1278,7 @@
 			if (remove_after_copy) {
 				/* remove archive if requested */
 				printf("Removing '%s'\n", appid);
-				archive_mode = 0;
-				remove_archive_mode = 1;
+				cmd = CMD_REMOVE_ARCHIVE;
 				free(options);
 				options = NULL;
 				if (LOCKDOWN_E_SUCCESS != lockdownd_client_new_with_handshake(phone, &client, "ideviceinstaller")) {
@@ -1286,7 +1289,7 @@
 			}
 		}
 		goto leave_cleanup;
-	} else if (restore_mode) {
+	} else if (cmd == CMD_RESTORE) {
 #ifdef HAVE_LIBIMOBILEDEVICE_1_1
 		instproxy_restore(ipc, appid, NULL, status_cb, NULL);
 #else
@@ -1294,7 +1297,7 @@
 #endif
 		wait_for_op_complete = 1;
 		notification_expected = 1;
-	} else if (remove_archive_mode) {
+	} else if (cmd == CMD_REMOVE_ARCHIVE) {
 #ifdef HAVE_LIBIMOBILEDEVICE_1_1
 		instproxy_remove_archive(ipc, appid, NULL, status_cb, NULL);
 #else
