public async void Start()
        {
            
            status.IsSearchingForNAO = true;
            while (status.IsSearchingForNAO)
            {
                await naoDiscoverer.DiscoverNAO();
                if (naoDiscoverer.NAOs.Count > 0)
                {
                    naoRemote = new NAORemote.NAORemote(naoDiscoverer.NAOs[0].IP, "nao", "nao");
                    naoRemote.Connect();
                    status.IsSearchingForNAO = false;
                    status.DiscoveredNAOs = new ObservableCollection<NAOHost>(naoDiscoverer.NAOs);
                    status.SelectedNAO = naoDiscoverer.NAOs[0];
                }
            }
            string character = Environment.GetCommandLineArgs().Length > 1 ? Environment.GetCommandLineArgs()[1] : "";
            naoThalamusClient = await ConnectThalamusAsync(character, status.SelectedNAO.IP);

            CheckPythonInstalledAsync();
            CheckBehavioursInstalledAsync();

            await shellControl.Connect(status.SelectedNAO.IP, "nao", "nao");
            
            if (!await CheckIsPythonRunning())
            {
                RunPythonAsync();
                PythonChecker();
                NaoQiChecker();
            }
            else
            {
                LogError("Python already running. You have to manually stop it and run again this application");
            }
        }