private void MineRules()
        {
            if (!sourceSelected)
            {
                Console.WriteLine("THe data source was not chosen.");
                Start();
                return;
            }

            try
            {
                Console.WriteLine("Please enter a minimal support (for example:0,4).");
                var supp = GetNumber(Console.ReadLine());
                if (supp < 0)
                {
                    throw new Exception("Wpisano nie poprawną wartość.");
                }

                Console.WriteLine("Please enter a minimal confidence (for example:0,2).");
                var conf = GetNumber(Console.ReadLine());
                if (conf < 0)
                {
                    throw new Exception("Wpisano nie poprawną wartość.");
                }

                Console.WriteLine("Please enter a minimal rule length (for example:2).");
                var minlen = GetOption(Console.ReadLine());
                if (minlen < 0)
                {
                    throw new Exception("Wpisano nie poprawną wartość.");
                }

                Console.WriteLine("Please enter a maximal rule length (for example:4).");
                var maxlen = GetOption(Console.ReadLine());
                if (maxlen < 0)
                {
                    throw new Exception("Wpisano nie poprawną wartość.");
                }

                RuleParameters param = new RuleParameters
                {
                    MinSupport    = supp,
                    MinConfidence = conf,
                    MinLength     = minlen,
                    MaxLength     = maxlen
                };

                Console.WriteLine("Which approach of mining do you want to use?(1 or 2)");
                var opt = GetOption(Console.ReadLine());
                if (opt < 1 || opt > 2)
                {
                    throw new Exception("Wpisano nie poprawną wartość.");
                }

                manager.GetObservableRulesCollection().CollectionChanged += MinerConsole_CollectionChanged;
                Console.WriteLine("Mining is being processed...");
                if (opt == 1)
                {
                    manager.FindRule(param);
                }
                else if (opt == 2)
                {
                    manager.FindRuleSecondApproach(param);
                }

                if (manager.GetObservableRulesCollection().Count == 0)
                {
                    Console.WriteLine("No results found");
                }
                else
                {
                    Console.WriteLine("");
                    Console.WriteLine("Mining has finished!");
                    Console.WriteLine("");
                }

                Console.WriteLine("");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Start();
            }
        }