public void run() {
		while (running) {
			while (!dispatch.isEmpty()) {
				DispatchEntity de = dispatch.get(0);
				dispatch.remove(0);

				int method = de.method;
				Object args[] = de.params;

				if (method == ON_DOWNLOAD_COMPLETE)
					_bot.onDownloadComplete((User) getArg(args, 0), (DUEntity) getArg(args, 1), (Boolean) getArg(args, 2), (BotException) getArg(
							args, 3));
				else if (method == ON_UPLOAD_COMPLETE)
					_bot.onUploadComplete((User) getArg(args, 0), (DUEntity) getArg(args, 1), (Boolean) getArg(args, 2), (BotException) getArg(args,
							3));
				else if (method == ON_UPLOAD_START)
					_bot.onUploadStart((User) getArg(args, 0), (DUEntity) getArg(args, 1));
				else if (method == ON_UPDATE_MY_INFO)
					_bot.onUpdateMyInfo((String) getArg(args, 0));
				else
					try {
						throw new NoSuchMethodException("Method number:" + method);
					} catch (NoSuchMethodException e) {
						_bot.log.println("No method with number " + method + " found.");
						e.printStackTrace();
					}
			}
			try {
				sleep(60000L);
			} catch (InterruptedException e) {}
		}
	}