diff --git a/cfg_checker/modules/packages/__init__.py b/cfg_checker/modules/packages/__init__.py
index 45b1f77..9d55c05 100644
--- a/cfg_checker/modules/packages/__init__.py
+++ b/cfg_checker/modules/packages/__init__.py
@@ -29,7 +29,18 @@
         metavar='packages_csv_filename',
         help="CSV filename to save report"
     )
-
+    pkg_report_parser.add_argument(
+        '--force-tag',
+        metavar='force_tag', default=None,
+        help="Tag to do a forced search of release versions in. "
+             "If nothing is found, 'mcp_version' tag will be used"
+    )
+    pkg_report_parser.add_argument(
+        '--exclude-keywords',
+        metavar='exclude_repos_keywords', default="nightly extra",
+        help="Keywords to exclude repos from searching "
+             "release versions. Space delimited: 'nightly extra'"
+    )
     pkg_repos = pkg_subparsers.add_parser(
         'versions',
         help="Parse versions at given URL and create local map"
@@ -95,8 +106,16 @@
     """
     _type, _filename = args_utils.get_package_report_type_and_filename(args)
 
+    if ' ' in args.exclude_keywords:
+        _kw = args.exclude_keywords.split(' ')
+    else:
+        _kw = [args.exclude_keywords]
+
     # init connection to salt and collect minion data
-    pChecker = checker.CloudPackageChecker()
+    pChecker = checker.CloudPackageChecker(
+        force_tag=args.force_tag,
+        exclude_keywords=_kw
+    )
     # collect data on installed packages
     pChecker.collect_installed_packages()
     # diff installed and candidates
diff --git a/cfg_checker/modules/packages/checker.py b/cfg_checker/modules/packages/checker.py
index c37ecee..972b12f 100644
--- a/cfg_checker/modules/packages/checker.py
+++ b/cfg_checker/modules/packages/checker.py
@@ -11,7 +11,7 @@
 
 
 class CloudPackageChecker(object):
-    def __init__(self):
+    def __init__(self, force_tag=None, exclude_keywords=[]):
         # Init salt master info
         if not salt_master.nodes:
             salt_master.nodes = salt_master.get_nodes()
@@ -29,6 +29,9 @@
                 )
             )
 
+        self.force_tag = force_tag
+        self.exclude_repos_keywords = exclude_keywords
+
     @staticmethod
     def presort_packages(all_packages, full=None):
         logger_cli.info("-> Presorting packages")
@@ -144,7 +147,7 @@
 
         for key in salt_master.nodes.keys():
             # due to much data to be passed from salt, it is happening in order
-            if key in _result:
+            if key in _result and _result[key]:
                 _text = _result[key]
                 try:
                     _dict = json.loads(_text[_text.find('{'):])
@@ -174,13 +177,23 @@
         """
         # Preload OpenStack release versions
         _desc = PkgVersions()
-
         logger_cli.info(
             "# Cross-comparing: Installed vs Candidates vs Release"
         )
         # shortcuts for this cloud values
         _os = salt_master.openstack_release
         _mcp = salt_master.mcp_release
+        _t = [self.force_tag] if self.force_tag else []
+        _t.append(_mcp)
+
+        logger_cli.info("# Tag search list: {}".format(", ".join(_t)))
+        logger_cli.info("# Openstack version: {}".format(_os))
+        logger_cli.info(
+            "# Release versions repos keyword exclude list: {}".format(
+                ", ".join(self.exclude_repos_keywords)
+            )
+        )
+
         # Progress class
         _progress = Progress(len(salt_master.nodes.keys()))
         _progress_index = 0
@@ -211,14 +224,42 @@
                     # get node attributes
                     _linux = salt_master.nodes[node_name]['linux_codename']
                     _arch = salt_master.nodes[node_name]['linux_arch']
-                    # get versions for this tag and repo headers
-                    # excluding 'nightly' repos
-                    _r = self.rm.get_filtered_versions(
-                        _name,
-                        tag=_mcp,
-                        include=[_os, _linux, _arch],
-                        exclude=["nightly"]
-                    )
+                    # get versions for tag, Openstack release and repo headers
+                    # excluding 'nightly' repos by default
+                    _r = {}
+                    # if there is a forced tag = use it
+                    if self.force_tag:
+                        _r = self.rm.get_filtered_versions(
+                            _name,
+                            tag=self.force_tag,
+                            include=[_os, _linux, _arch],
+                            exclude=self.exclude_repos_keywords
+                        )
+                        # if nothing found, look everywhere
+                        if not _r:
+                            _r = self.rm.get_filtered_versions(
+                                _name,
+                                tag=self.force_tag,
+                                include=[_linux, _arch],
+                                exclude=self.exclude_repos_keywords
+                            )
+                    # if nothing is found at this point,
+                    # repeat search using normal tags
+                    if not _r:
+                        _r = self.rm.get_filtered_versions(
+                            _name,
+                            tag=_mcp,
+                            include=[_os, _linux, _arch],
+                            exclude=self.exclude_repos_keywords
+                        )
+                    # Once again, if nothing found, look everywhere
+                    if not _r:
+                        _r = self.rm.get_filtered_versions(
+                            _name,
+                            tag=_mcp,
+                            include=[_linux, _arch],
+                            exclude=self.exclude_repos_keywords
+                        )
                     # repack versions in flat format
                     _vs = {}
                     _sections = {}
diff --git a/cfg_checker/modules/packages/versions.py b/cfg_checker/modules/packages/versions.py
index f12d0b7..c5689d3 100644
--- a/cfg_checker/modules/packages/versions.py
+++ b/cfg_checker/modules/packages/versions.py
@@ -19,7 +19,7 @@
 
     def __init__(self):
         # preload csv file
-        logger_cli.info("# Preloading MCP release versions")
+        logger_cli.info("# Preloading specific MCP release versions")
         with open(os.path.join(
             pkg_dir,
             'versions',
