public static CSVHandler MakeHandler(String path)
        {
            using (StreamReader reader = new StreamReader(path))
            {
                string header = reader.ReadLine();

                CSVHandler output = new CSVHandler();
                output.path = path;

                output.stateNames = new List <String>(header.Split(DELIMITER));
                output.stateNames.Remove("Date");
                return(output);
            }
        }
        private static async Task MainLoop()
        {
            while (true)
            {
                Task <string> scrapeTask = ScrapeAsync();

                if (!File.Exists(FILE_PATH))
                {
                    CSVHandler.Create(FILE_PATH);
                }

                string             scrapedPage = await scrapeTask;
                HtmlNodeCollection search      = FindUsaData(scrapedPage);
                if (search.Count != 1)
                {
                    throw new FormatException("Found " + search.Count + "tables??!");
                }
                else
                {
                    HtmlNode tableBody = search[0].SelectSingleNode("tbody");

                    List <TableRow> processedHTML = new List <TableRow>();
                    foreach (HtmlNode row in tableBody.ChildNodes)
                    {
                        if (row.Name.Equals("tr"))
                        {
                            TableRow processed = TableRow.Parse_tr_Element(row);
                            processedHTML.Add(processed);
                        }
                    }

                    CSVHandler handler = CSVHandler.MakeHandler(FILE_PATH);
                    DateTime   now     = DateTime.Now;
                    handler.Write(processedHTML, now);
                    Console.WriteLine($"Finished a scraping at {now}");

                    await Task.Delay(FOUR_HOURS);
                }
            }
        }