internal override void Execute()
        {
            var cmdlet = (RegisterTmxSystemUnderTestCommand)Cmdlet;
            var clientSettings = ClientSettings.Instance;
            clientSettings.ServerUrl = cmdlet.ServerUrl;
            clientSettings.StopImmediately = false;
            
            var registration = new Registration(new RestRequestCreator());
            // temporarily
            // TODO: to a template method
            var startTime = DateTime.Now;
            while (!clientSettings.StopImmediately) {
                // TODO: move to aspect
                try {
                    clientSettings.ClientId = registration.SendRegistrationInfoAndGetClientId(cmdlet.CustomClientString);
                }
                catch (Exception e2) {
Console.WriteLine("registering " + e2.Message);
                    // cmdlet.WriteProgress(new System.Management.Automation.ProgressRecord(
                }
                
                if (Guid.Empty != clientSettings.ClientId)
                    break;
                
                if (!cmdlet.Continuous)
                    if ((DateTime.Now - startTime).TotalSeconds >= cmdlet.Seconds)
                        throw new Exception("Failed to register client in " + cmdlet.Seconds + " seconds");
                
                Thread.Sleep(Preferences.ClientRegistrationSleepIntervalMilliseconds);
            }
            
            clientSettings.StopImmediately = false;
        }