/// <summary>
        /// Application invoker
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            movies = new List<IMovieDetails>();
            var exportData = true;
            char keyResponse = Char.MinValue;
            OutputProviderHost outputProviderHost = null;

            try
            {
                outputProviderHost = new OutputProviderHost();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Application malfunctioned!");
            }

            Console.WriteLine("Welcome to your Movie Aggregator app!");
            Console.WriteLine("Let's get started!");

            // Add movie to the list
            AddMovie();

            Console.Write("Would you like to export the saved movies details to a readable format?");
            keyResponse = Console.ReadLine()[0];

            if (keyResponse != 'y' && keyResponse != 'Y')
                exportData = false;

            if (exportData)
            {
                // Create data from list of movies
                var movieDetailStr = CreateDataFromList();

                try
                {
                    // Export data using output providers
                    ExportData(outputProviderHost, Encoding.UTF8.GetBytes(movieDetailStr));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Application malfunctioned! Export Failed!");
                }

                Console.ReadKey();
            }
        }
        /// <summary>
        /// Export data using output provider
        /// </summary>
        /// <param name="outputProviderHost">Output provider host object</param>
        /// <param name="data">Output data in byte[]</param>
        private static void ExportData(OutputProviderHost outputProviderHost, byte[] data)
        {
            var outputFormats = outputProviderHost.GetOutputProviderFormats();

            if (outputFormats.Count > 0)
            {
                Console.WriteLine("In which file format would you like to export the saved movies details?");

                for (int index = 0; index < outputFormats.Count; index++)
                {
                    Console.WriteLine(string.Concat(index + 1, ": ", outputFormats[index]));
                }

                Console.Write("Enter the format number: ");
                UInt16 formatChoice = Convert.ToUInt16(Console.ReadLine());

                var result = outputProviderHost.Output(data, outputFormats[formatChoice - 1]);

                if (result)
                {
                    Console.WriteLine("Data exported successfully!");
                }
                else
                {
                    Console.WriteLine("Data export failed!");
                }
            }
            else
            {
                Console.WriteLine("Data export failed!");
            }
        }