async private void HodClient_requestCompletedWithContent(string response)
        {
            await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                indicator.Visibility = Visibility.Collapsed;
                inprogress           = false;
                mediaList            = (QueryTextIndexResponse)parser.ParseCustomResponse <QueryTextIndexResponse>(ref response);
                if (mediaList != null)
                {
                    listViewModel.ClearData();
                    foreach (QueryTextIndexResponse.Document doc in mediaList.documents)
                    {
                        ContentModel item = new ContentModel();
                        item.Type         = doc.mediatype[0];
                        item.Title        = doc.medianame[0];
                        if (doc.filename != null)
                        {
                            item.filename = doc.filename[0];
                        }
                        item.reference = doc.reference;
                        item.index     = doc.index;

                        var type = item.Type.Split('/');
                        if (type[0] == "video")
                        {
                            item.Icon = "Assets/video_icon.png";
                        }
                        else
                        {
                            item.Icon = "Assets/audio_icon.png";
                        }

                        listViewModel.Items.Add(item);
                    }
                }
            });
        }
        async private void HodClient_requestCompletedWithContent(string response)
        {
            await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                mJobID               = "";
                String text          = "";
                indicator.Visibility = Visibility.Collapsed;
                if (mHodApp == HODApps.GET_CONTENT)
                {
                    mContentResponse = (GetContentResponse)mParser.ParseCustomResponse <GetContentResponse>(ref response);
                    if (mContentResponse != null)
                    {
                        // purify word array
                        if (mPunctuation == true)
                        {
                            var words     = mContentResponse.documents[0].text;
                            var timestamp = mContentResponse.documents[0].offset;

                            int count = mContentResponse.documents[0].text.Count;
                            int start = (mContentResponse.documents[0].text.Count > 10) ? 10 : 0;
                            int end   = (mContentResponse.documents[0].text.Count > 200) ? 150 : mContentResponse.documents[0].text.Count;
                            var total = 0.0;
                            for (int i = start; i < end; i++)
                            {
                                total += timestamp[i] - timestamp[i - 1];
                            }
                            var average   = total / end - 1;
                            double para   = average + 1500;
                            double dot    = average + 800;
                            double commas = average + 400;
                            count         = words.Count;
                            words[0]      = FirstCharToUpper(words[0]);
                            var len       = 0;
                            for (int i = 1; i < count; i++)
                            {
                                if (!words[i].Equals("<Music/Noise>") && !words[i - 1].Equals("<Music/Noise>"))
                                {
                                    var diff = timestamp[i] - timestamp[i - 1];
                                    if (diff > para && len > 1) // 2000
                                    {
                                        words[i - 1] += ".\n";
                                        words[i]      = FirstCharToUpper(words[i]);
                                        len           = 0;
                                    }
                                    else if (diff > dot && len > 1) // 1500
                                    {
                                        words[i - 1] += ".";
                                        words[i]      = FirstCharToUpper(words[i]);
                                        len           = 0;
                                    }
                                    else if (diff > commas && len > 1) // 1000
                                    {
                                        words[i - 1] += ",";
                                        len           = 0;
                                    }
                                    else
                                    {
                                        len++;
                                    }
                                }
                            }
                            mContentResponse.documents[0].text    = words;
                            mContentResponse.documents[0].offset  = timestamp;
                            mContentResponse.documents[0].content = String.Join(" ", words);

                            mTextItem.UnreadText = mContentResponse.documents[0].content;
                            mIsReading           = false;
                            if (mplayer.CurrentState != MediaElementState.Playing)
                            {
                                mplayer.Play();
                            }
                        }
                        else
                        {
                            mTextItem.UnreadText += mContentResponse.documents[0].content;
                        }
                        mIndex = 0;
                    }
                }
                else if (mHodApp == HODApps.FIND_SIMILAR)
                {
                    var result = (FindSimilarResponse)mParser.ParseCustomResponse <FindSimilarResponse>(ref response);
                    if (result != null)
                    {
                        text = "<html><head/><body><div style=\"font-size:1.0em\">";
                        mUrlList.Clear();
                        text += "<div style=\"text-align:right\"><a href=\"hod_home\">Back to Concepts</a></div>";
                        foreach (var document in result.documents)
                        {
                            text += String.Format("<div><b>Title: </b>{0} </div>", document.title);
                            text += String.Format("<div><b>Relevance: </b>{0}%</div>", document.weight.ToString("0.00"));
                            if (document.summary != null)
                            {
                                text += String.Format("<div><b>Summary: </b>{0}</div>", document.summary);
                            }
                            if (document.reference != null)
                            {
                                text += String.Format("<div><b>Content: </b><a href=\"{0}\">website</a></div>", document.reference);
                                mUrlList.Add(document.reference);
                            }
                            text += "</br>";
                        }
                        text += "</div></body></html>";
                        processedcontent.NavigateToString(text);
                    }
                }
                else if (mHodApp == HODApps.QUERY_TEXT_INDEX)
                {
                    mInprogress = false;
                    mMediaList  = (QueryTextIndexResponse)mParser.ParseCustomResponse <QueryTextIndexResponse>(ref response);
                    if (mMediaList != null)
                    {
                        mListViewModel.ClearData();
                        foreach (QueryTextIndexResponse.Document doc in mMediaList.documents)
                        {
                            ContentModel item = new ContentModel();
                            item.Type         = doc.mediatype[0];
                            item.Title        = doc.medianame[0];
                            if (doc.filename != null)
                            {
                                item.filename = doc.filename[0];
                            }
                            item.reference = doc.reference;
                            item.index     = doc.index;

                            var type = item.Type.Split('/');
                            if (type[0] == "video")
                            {
                                item.Icon = "Assets/video_icon.png";
                            }
                            else
                            {
                                item.Icon = "Assets/audio_icon.png";
                            }

                            mListViewModel.Items.Add(item);
                        }
                    }
                }
                else if (mHodApp == HODApps.ANALYZE_SENTIMENT)
                {
                    mSaResponse = mParser.ParseSentimentAnalysisResponse(ref response);
                    if (mSaResponse != null)
                    {
                        parseSentimentAnalysis();
                    }
                }
                else if (mHodApp == HODApps.ENTITY_EXTRACTION)
                {
                    mEeResponse = (EntityExtractionResponse)mParser.ParseCustomResponse <EntityExtractionResponse>(ref response);
                    if (mEeResponse != null)
                    {
                        parseEntityExtraction();
                    }
                    else
                    {
                        text += "Error!</div></body></html>";
                        processedcontent.NavigateToString(text);
                    }
                }
            });
        }