/// <summary>
        /// RunWorkerCompleted handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            CPSRichTextBox.AppendText("Calculation is completed. Check files in previously selected directory.\n");
            CPSRichTextBox.AppendText("cCounts - single codon counts\naCounts - single amino acids counts\ncpCounts - codon pair counts\napCounts - amino acid pairs counts\nCPScores - Codon Pair Scores\n");
            CPSRichTextBox.AppendText("For more information, please, check 'How To Use' page\n");

            // verification of ranking correctness
            // 3721 codon pairs - all possibilities of codon pairs permutations
            if (CCranker.cps.Count() != 3721)
            {
                string message = "Not all possible codon pairs found within the orfeome. Further analysis may be impossible.";
                ModernDialog.ShowMessage(message.ToString(), "Information", MessageBoxButton.OK);
            }
        }
        /// <summary>
        /// CCrankButton click event handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CCrankButton_Click(object sender, RoutedEventArgs e)
        {
            // richTextBox cleaning
            CPSRichTextBox.Document.Blocks.Clear();
            // directory setting
            SaveFileDialogInitialize();
            Nullable <bool> result = saveFileDialog.ShowDialog();

            if (result == true)
            {
                CPSRichTextBox.AppendText("Please, wait a moment for the results...\n\n");
                worker = new BackgroundWorker();

                // setting a path
                CCranker.fileName = saveFileDialog.FileName;
                CCranker.path     = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(saveFileDialog.FileName), CCranker.fileName);
                Directory.CreateDirectory(System.IO.Path.Combine(CCranker.path, CCranker.fileName));

                // Background worker settings
                // background worker initialization, CPR counter initialization
                worker.DoWork               += new DoWorkEventHandler(CCranker.CPScalculator);
                worker.ProgressChanged      += new ProgressChangedEventHandler(worker_ProgressChanged);
                worker.RunWorkerCompleted   += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
                worker.WorkerReportsProgress = true;

                CCProgressBar.Value = 0;

                // Elements counter initialization
                CCranker.ElemCounter();
                CPSRichTextBox.AppendText("Calculating...\n");
                worker.RunWorkerAsync();
                currentRankingCheckBoxIsEnabled = true;
            }
            else
            {
                // modern dialog initialization
                string message = "Something went wrong. It is necessary to select files directory before codon context ranking computing. Try again. \nFor more information about using Codon Context Ranking check the \"How to use\" page.";
                ModernDialog.ShowMessage(message.ToString(), "Warning", MessageBoxButton.OK);
            }
        }