public Dictionary <string, string> start()
        {
            Attempts = 0;
            WebBrowser.openSync(StartPage);
            Results = new Dictionary <string, string>();
            foreach (var payload_1 in Field_1_Payloads)
            {
                foreach (var payload_2 in Field_2_Payloads)
                {
                    Attempts++;
                    if (DebugMode)
                    {
                        "trying values: {0}={1} , {2}={3}".format(Field_1_Name, payload_1, Field_2_Name, payload_2).debug();
                    }
                    HtmlForm.set(Field_1_Name, payload_1);
                    HtmlForm.set(Field_2_Name, payload_2);
                    WebBrowser.openSync("about:blank");
                    WebBrowser.submit(HtmlForm);

                    if (WebBrowser.contains(SuccessCriteria))
                    {
                        "MATCH!! on value: {0}={1}".format(payload_1, payload_2).info();
                        if (false == Results.ContainsKey(payload_1))
                        {
                            Results.Add(payload_1, payload_2);
                        }
                        else
                        {
                            Results.Add(payload_1.appendGuid(), payload_2);
                        }
                        if (ReturnOnFirstMatch)
                        {
                            return(Results);
                        }
                        else
                        {
                            WebBrowser.openSync(StartPage);
                            break;
                        }
                    }
                    else
                    if (false == WebBrowser.contains(FailureCriteria))
                    {
                        "Aborting Neither the SuccessCriteria or FailureCriteria was found in this page".error();
                        return(Results);
                    }
                }
            }
            return(Results);
        }