static void Main(string[] args)
        {
            if (args.Length < 4)
            {
                Console.WriteLine("Usage: Teleport [loginfirstname] [loginlastname] [password] [sim/x/y/z]");
                return;
            }

            char[] seps = { '/' };
            string[] destination = args[3].Split(seps);
            if( destination.Length != 4 )
            {
                Console.WriteLine("Destination should be specified as: sim/x/y/z");
                return;
            }

            string sim = destination[0];
            float x = float.Parse(destination[1]);
            float y = float.Parse(destination[2]);
            float z = float.Parse(destination[3]);

            Console.WriteLine("Will attempt a teleport to " + sim + " {" + x + "," + y + "," + z + "}...");
            Console.WriteLine();

            Teleport app = new Teleport(sim);
            bool success = app.Connect(args[0], args[1], args[2]);

            if (success)
            {
                // Get the current sim name
                while (app.Client.Network.CurrentSim.Region.Name == null)
                {
                    System.Threading.Thread.Sleep(100);
                }

                Console.WriteLine("Starting in " + app.Client.Network.CurrentSim.Region.Name);

                if (sim.ToLower() == app.Client.Network.CurrentSim.Region.Name.ToLower())
                {
                    Console.WriteLine("TODO: Add the ability to teleport somewhere in the local region. " +
                        "Exiting for now, please specify a region other than the current one");
                }
                else
                {
                    app.doStuff(sim, new LLVector3(x, y, z));
                }

                app.Disconnect();
            }
        }