private void OnGo()
        {
            // Go:Click
            _btnGo.Click += (o, e) =>
            {
                try
                {
                    // reset message type
                    MessageType = MessageType.None;

                    // log every Go button click - !
                    // Log.LogUse(_btnGo.Text == "Map it!" ? 1 : 27, _comboDatabases.Text);

                    // check .NET path
                    if (!CheckNetDirectory())
                    {
                        return;
                    }

                    // check repository
                    if (!CheckRepository())
                    {
                        return;
                    }

                    // Finished, Stopped -> Idle
                    if (ProcessState == ProcessState.Finished || ProcessState == ProcessState.Stopped)
                    {
                        SetIdle();
                        return;
                    }

                    // Processing -> Stopped
                    if (ProcessState.IsProcessing())
                    {
                        if (_mapping != null && _mapping.Thread != null)
                        {
                            SetStopped();
                            return;
                        }
                    }

                    // validate
                    if (!ValidateGo())
                    {
                        return;
                    }

                    // create connection builder
                    _start.SetConnBuilder(_comboDatabases.Text);
                    var connBuilder = new SqlConnectionStringBuilder(_start.ConnBuilder.ToString());

                    // set processing and start mapping (on other thread)
                    SetProcessingTryConnection();
                    _mapping = new MappingHandler(this, CurrentGuid, connBuilder, _ctrMapper.Text);
                }
                catch (System.Exception ex)
                {
                    SetException(ex);
                }
            };

            // Go:MouseEnter
            _btnGo.MouseEnter += (o, e) =>
            {
                try
                {
                    if (_processState == ProcessState.Idle || _processState.IsProcessing())
                    {
                        _btnGo.BackColor = Color.Green;
                    }
                }
                catch { }  // do nothing
            };

            // Go:MouseLeave
            _btnGo.MouseLeave += (o, e) =>
            {
                try
                {
                    if (_processState == ProcessState.Idle || _processState.IsProcessing())
                    {
                        _SetGoDefault();
                    }
                }
                catch { }  // do nothing
            };
        }