static void NormalizeAddresses(List <string> args)
        {
            Console.WriteLine("Normalize Addresses");
            if (args.Count < 3)
            {
                throw new NormalException("Not enough arguments!  Usage: alba normalize-addresses <alba-tsv-input-file> <alba-tsv-output-file>");
            }

            string inputPath  = args[1];
            string outputPath = args[2];

            Console.WriteLine($"Input File Path: {inputPath}");
            Console.WriteLine($"Output File Path: {outputPath}");

            var addresses = LoadTsvAlbaAddresses.LoadFrom(inputPath);

            var streetTypes = StreetType.Parse(StreetTypes);
            var parser      = new CompleteAddressParser(streetTypes);

            var errors     = new List <AlbaAddressExport>();
            var normalized = new List <AlbaAddressExport>();

            foreach (var a in addresses)
            {
                try
                {
                    //string before = $"{a.Address}, {a.Suite}, {a.City}, {a.Province}, {a.Postal_code}";
                    var address = parser.Normalize($"{a.Address}, {a.Suite}", a.City, a.Province, a.Postal_code);
                    a.Address     = address.CombineStreet();
                    a.Suite       = address.CombineUnit();
                    a.City        = address.City;
                    a.Province    = address.State;
                    a.Postal_code = address.PostalCode;
                    normalized.Add(a);
                    //Console.WriteLine($"{before} :: {a.Address}, {a.Suite}, {a.City}, {a.Province}, {a.Postal_code}");
                }
                catch (Exception e)
                {
                    errors.Add(a);
                    Console.WriteLine(e.Message);
                }
            }

            if (errors.Count > 0)
            {
                Console.WriteLine();
                Console.WriteLine("Errors:");
                foreach (var a in errors)
                {
                    Console.WriteLine(a.Address);
                }

                Console.WriteLine($"Count: {errors.Count}");
            }

            LoadTsvAlbaAddresses.SaveTo(normalized, outputPath);
            LoadTsvAlbaAddresses.SaveTo(errors, $"{outputPath}.errors.txt");
        }