public static void main(String[] args) throws Exception {
		// Parse command line arguments.
		if (args.length != 5)
			usage();
		String host = args[0];
		int port = parseInt(args[1], "port");
		String originNode = args[2];
		double x = parseDouble(args[3], "X - coordinate");
		double y = parseDouble(args[4], "Y - coordinate");
		long myPackageNumber = 0;
		GPSOfficeRef node = null;
		registry = new RegistryProxy(host, port);
		// Look up GPSOffice node name in the Registry Server
		try {
			node = (GPSOfficeRef) registry.lookup(originNode);
		} catch (NotBoundException e) {
			System.out.println("The GPSOffice named " + originNode
					+ " does not exist!");
			System.exit(1);
		}
		// Assign tracking number to the package
		myPackageNumber = node.assignPackageNumber();

		final Customer customer = new Customer(myPackageNumber, x, y);

		// Export a remote event listener object for receiving notifications
		// from GPSOffice objects.
		nodeListener = new RemoteEventListener<TrackPackage>() {
			public void report(long seqnum, TrackPackage event) {
				if (event.status == 2) {
					System.out.println(event.message);
					System.exit(0);
				}
				if (event.status == 1)
					System.out.println(event.message);
				if (event.status == 0)
					System.out.println(event.message);

			}
		};
		UnicastRemoteObject.exportObject(nodeListener, 0);

		// Sends the package to the originating GPSOffice node
		node.sendPackage(myPackageNumber, x, y, nodeListener);
	}