/// <summary>
        ///  Save Sealized result in a file
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public string SubmitPuzzleResult(PuzzleResult result)
        {
            if (string.IsNullOrEmpty(result.Email))
            {
                throw new Exception("unable to submit result, email not provided");
            }
            var submitfile = Path.Combine(puzzleResultFolder, result.ResultFile);

            if (File.Exists(submitfile))
            {
                throw new Exception("Email " + result.Email + " is already submitted, can not submit again");
            }

            // Write the byte array to the other FileStream.
            using (FileStream puzzleResultFileStream = new FileStream(submitfile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                var serializer = new XmlSerializer(result.GetType());
                serializer.Serialize(puzzleResultFileStream, result);
            }
            return(submitfile);
        }