diff --git a/cfg_checker/cfg_check.py b/cfg_checker/cfg_check.py
index 22125f6..37f9957 100644
--- a/cfg_checker/cfg_check.py
+++ b/cfg_checker/cfg_check.py
@@ -2,10 +2,7 @@
 import sys
 from logging import DEBUG, INFO
 
-from cfg_checker.cli.command import execute_command
-from cfg_checker.cli.network import init_network_parser
-from cfg_checker.cli.package import init_package_parser
-from cfg_checker.cli.reclass import init_reclass_parser
+from cfg_checker.cli.command import execute_command, helps, parsers
 from cfg_checker.common import config, logger, logger_cli
 from cfg_checker.helpers.args_utils import MyParser
 
@@ -37,26 +34,13 @@
     )
     subparsers = parser.add_subparsers(dest='command')
 
-    # package
-    pkg_parser = subparsers.add_parser(
-        'packages',
-        help="Package versions check (Candidate vs Installed)"
-    )
-    init_package_parser(pkg_parser)
-
-    # networking
-    net_parser = subparsers.add_parser(
-        'network',
-        help="Network infrastructure checks and reports"
-    )
-    init_network_parser(net_parser)
-
-    # reclass
-    reclass_parser = subparsers.add_parser(
-        'reclass',
-        help="Reclass related checks and reports"
-    )
-    init_reclass_parser(reclass_parser)
+    # create parsers
+    for _command in helps.keys():
+        _parser = subparsers.add_parser(
+            _command,
+            help=helps[_command]
+        )
+        parsers[_command](_parser)
 
     # parse arguments
     try:
diff --git a/cfg_checker/cli/command.py b/cfg_checker/cli/command.py
index 0a9c2a2..e6d9cd9 100644
--- a/cfg_checker/cli/command.py
+++ b/cfg_checker/cli/command.py
@@ -1,19 +1,33 @@
+import pkgutil
 import sys
 import traceback
 
-from cfg_checker.common import logger_cli
+from cfg_checker.common import config, logger, logger_cli
 from cfg_checker.common.exception import CheckerException
+from cfg_checker.helpers.args_utils import MyParser
 
-# TODO: auto-create types for each command
-package_command_types = ['report']
-network_command_types = ['check', 'report']
-reclass_command_types = ['list', 'diff']
+main_pkg_name = __name__.split('.')[0]
+mods_package_name = "modules"
+mods_import_path = main_pkg_name + '.' + mods_package_name
+mods_prefix = mods_import_path + '.'
 
-commands = {
-    'packages': package_command_types,
-    'network': network_command_types,
-    'reclass': reclass_command_types
-}
+commands = {}
+parsers = {}
+helps = {}
+# Pure dynamic magic, loading all 'do_*' methods from available modules
+_m = __import__(mods_import_path, fromlist=[main_pkg_name])
+for _imp, modName, isMod in pkgutil.iter_modules(_m.__path__, mods_prefix):
+    # iterate all packages, add to dict
+    if isMod:
+        # load module
+        _p = _imp.find_module(modName).load_module(modName)
+        # create a shortname
+        mod_name = modName.split('.')[-1]
+        # A package! Create it and add commands
+        commands[mod_name] = \
+            [_n[3:] for _n in dir(_p) if _n.startswith("do_")]
+        parsers[mod_name] = getattr(_p, 'init_parser')
+        helps[mod_name] = getattr(_p, 'command_help')
 
 
 def execute_command(args, command):
@@ -34,7 +48,7 @@
         # form function name to call
         _method_name = "do_" + args.type
         _target_module = __import__(
-            "cfg_checker.modules."+command,
+            mods_prefix + command,
             fromlist=[""]
         )
         _method = getattr(_target_module, _method_name)
@@ -57,3 +71,23 @@
             ))
         ))
         return 1
+
+
+def cli_command(_title, _name):
+    my_parser = MyParser(_title)
+    parsers[_name](my_parser)
+
+    # parse arguments
+    try:
+        args = my_parser.parse_args()
+    except TypeError:
+        logger_cli.info("\n# Please, check arguments")
+        sys.exit(0)
+
+    # force use of sudo
+    config.ssh_uses_sudo = True
+
+    # Execute the command
+    result = execute_command(args, _name)
+    logger.debug(result)
+    sys.exit(result)
diff --git a/cfg_checker/cli/network.py b/cfg_checker/cli/network.py
index b53311d..5c5a4e2 100644
--- a/cfg_checker/cli/network.py
+++ b/cfg_checker/cli/network.py
@@ -1,59 +1,12 @@
-import sys
-
-from cfg_checker.common import config, logger, logger_cli
-from cfg_checker.helpers.args_utils import MyParser
-
-from command import execute_command
+from command import cli_command
 
 
-def init_network_parser(_parser):
-    # network subparser
-    net_subparsers = _parser.add_subparsers(dest='type')
-
-    net_check_parser = net_subparsers.add_parser(
-        'check',
-        help="Do network check and print the result"
+def entrypoint():
+    cli_command(
+        "# Mirantis Cloud Network checker",
+        'network'
     )
 
-    net_check_parser.add_argument(
-        '--detailed',
-        action="store_true", default=False,
-        help="Print error details after summary"
-    )
-
-    net_report_parser = net_subparsers.add_parser(
-        'report',
-        help="Generate network check report"
-    )
-
-    net_report_parser.add_argument(
-        '--html',
-        metavar='network_html_filename',
-        help="HTML filename to save report"
-    )
-
-    return _parser
-
-
-def cli_network():
-    net_parser = MyParser("# Mirantis Cloud Network checker")
-    init_network_parser(net_parser)
-
-    # parse arguments
-    try:
-        args = net_parser.parse_args()
-    except TypeError:
-        logger_cli.info("\n# Please, check arguments")
-        sys.exit(0)
-
-    # force use of sudo
-    config.ssh_uses_sudo = True
-
-    # Execute the command
-    result = execute_command(args, 'network')
-    logger.debug(result)
-    sys.exit(result)
-
 
 if __name__ == '__main__':
-    cli_network()
+    entrypoint()
diff --git a/cfg_checker/cli/package.py b/cfg_checker/cli/package.py
deleted file mode 100644
index 5fe7e0b..0000000
--- a/cfg_checker/cli/package.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import sys
-
-from cfg_checker.common import config, logger, logger_cli
-from cfg_checker.helpers.args_utils import MyParser
-
-from command import execute_command
-
-
-def init_package_parser(_parser):
-    # packages subparser
-    pkg_subparsers = _parser.add_subparsers(dest='type')
-
-    pkg_report_parser = pkg_subparsers.add_parser(
-        'report',
-        help="Report package versions to HTML file"
-    )
-    pkg_report_parser.add_argument(
-        '--full',
-        action="store_true", default=False,
-        help="HTML report will have all of the packages, not just errors"
-    )
-    pkg_report_parser.add_argument(
-        '--html',
-        metavar='packages_html_filename',
-        help="HTML filename to save report"
-    )
-    pkg_report_parser.add_argument(
-        '--csv',
-        metavar='packages_csv_filename',
-        help="CSV filename to save report"
-    )
-
-    return _parser
-
-
-def cli_package():
-    pkg_parser = MyParser("# Mirantis Cloud Package checker")
-    init_package_parser(pkg_parser)
-
-    # parse arguments
-    try:
-        args = pkg_parser.parse_args()
-    except TypeError:
-        logger_cli.info("\n# Please, check arguments")
-        sys.exit(0)
-
-    # force use of sudo
-    config.ssh_uses_sudo = True
-
-    # Execute the command
-    result = execute_command(args, 'packages')
-    logger.debug(result)
-    sys.exit(result)
-
-
-if __name__ == '__main__':
-    cli_package()
diff --git a/cfg_checker/cli/packages.py b/cfg_checker/cli/packages.py
new file mode 100644
index 0000000..c44e5bc
--- /dev/null
+++ b/cfg_checker/cli/packages.py
@@ -0,0 +1,12 @@
+from command import cli_command
+
+
+def entrypoint():
+    cli_command(
+        "# Mirantis Cloud Package checker",
+        'packages'
+    )
+
+
+if __name__ == '__main__':
+    entrypoint()
diff --git a/cfg_checker/cli/reclass.py b/cfg_checker/cli/reclass.py
index fc5961a..24eb8e2 100644
--- a/cfg_checker/cli/reclass.py
+++ b/cfg_checker/cli/reclass.py
@@ -1,67 +1,12 @@
-import sys
-
-from cfg_checker.common import config, logger, logger_cli
-from cfg_checker.helpers.args_utils import MyParser
-
-from command import execute_command
+from command import cli_command
 
 
-def init_reclass_parser(_parser):
-    # reclass subparsers
-    reclass_subparsers = _parser.add_subparsers(dest='type')
-    reclass_list_parser = reclass_subparsers.add_parser(
-        'list',
-        help="List models available to compare"
+def entrypoint():
+    cli_command(
+        '# Mirantis Cloud Reclass comparer"',
+        'packages'
     )
-    reclass_list_parser.add_argument(
-        "-p",
-        "--models-path",
-        default="/srv/salt/",
-        help="Global path to search models in"
-    )
-
-    reclass_diff_parser = reclass_subparsers.add_parser(
-        'diff',
-        help="List models available to compare"
-    )
-    reclass_diff_parser.add_argument(
-        "--model1",
-        required=True,
-        help="Model A <path>. Model name is the folder name"
-    )
-    reclass_diff_parser.add_argument(
-        "--model2",
-        required=True,
-        help="Model B <path>. Model name is the folder name"
-    )
-    reclass_diff_parser.add_argument(
-        '--html',
-        metavar='reclass_html_filename',
-        help="HTML filename to save report"
-    )
-
-    return _parser
-
-
-def cli_reclass():
-    net_parser = MyParser("# Mirantis Cloud Reclass comparer")
-    init_reclass_parser(net_parser)
-
-    # parse arguments
-    try:
-        args = net_parser.parse_args()
-    except TypeError:
-        logger_cli.info("\n# Please, check arguments")
-        sys.exit(0)
-
-    # force use of sudo
-    config.ssh_uses_sudo = True
-
-    # Execute the command
-    result = execute_command(args, 'reclass')
-    logger.debug(result)
-    sys.exit(result)
 
 
 if __name__ == "__main__":
-    cli_reclass()
+    entrypoint()
diff --git a/cfg_checker/helpers/args_utils.py b/cfg_checker/helpers/args_utils.py
index daf55b1..1661c96 100644
--- a/cfg_checker/helpers/args_utils.py
+++ b/cfg_checker/helpers/args_utils.py
@@ -34,7 +34,19 @@
         raise ConfigException("'{}' not exists".format(path))
 
 
-def get_report_type_and_filename(args):
+def get_network_map_type_and_filename(args):
+    if args.html or args.text:
+        if args.html and args.text:
+            raise ConfigException("Multuple report types not supported")
+        if args.html is not None:
+            return 'html', args.html
+        if args.text is not None:
+            return 'text', args.text
+    else:
+        return 'console', None
+
+
+def get_package_report_type_and_filename(args):
     if args.html or args.csv:
         if args.html and args.csv:
             raise ConfigException("Multuple report types not supported")
diff --git a/cfg_checker/helpers/errors.py b/cfg_checker/helpers/errors.py
index ca8a8da..1f962eb 100644
--- a/cfg_checker/helpers/errors.py
+++ b/cfg_checker/helpers/errors.py
@@ -200,7 +200,7 @@
         # Detailed errors
         if self.get_errors_total() > 0:
             # create list of strings with error messages
-            for _idx in range(1, self._index - 1):
+            for _idx in range(1, self._index):
                 _list.append(self._format_error(_idx))
                 _list.append("\n")
         else:
diff --git a/cfg_checker/modules/network/__init__.py b/cfg_checker/modules/network/__init__.py
index 78df6c6..075dccf 100644
--- a/cfg_checker/modules/network/__init__.py
+++ b/cfg_checker/modules/network/__init__.py
@@ -3,6 +3,37 @@
 
 import checker
 
+command_help = "Network infrastructure checks and reports"
+
+
+def init_parser(_parser):
+    # network subparser
+    net_subparsers = _parser.add_subparsers(dest='type')
+
+    net_check_parser = net_subparsers.add_parser(
+        'check',
+        help="Do network check and print the result"
+    )
+
+    net_check_parser.add_argument(
+        '--detailed',
+        action="store_true", default=False,
+        help="Print error details after summary"
+    )
+
+    net_report_parser = net_subparsers.add_parser(
+        'report',
+        help="Generate network check report"
+    )
+
+    net_report_parser.add_argument(
+        '--html',
+        metavar='network_html_filename',
+        help="HTML filename to save report"
+    )
+
+    return _parser
+
 
 def _prepare_check():
     _checker_class = checker.NetworkChecker()
@@ -11,7 +42,16 @@
     return _checker_class
 
 
+def _prepare_map():
+    _map_class = None
+
+    return _map_class
+
+
 def do_check(args):
+    # Net Checks
+    # should not print map, etc...
+    # Just bare summary and errors
     logger_cli.info("# Network check to console")
     netChecker = _prepare_check()
     netChecker.print_network_report()
@@ -28,7 +68,11 @@
 
 
 def do_report(args):
-    logger_cli.info("# Network report")
+    # Network Report
+    # should generate Static HTML page
+    # with node/network map and values
+
+    logger_cli.info("# Network report (check, node map")
 
     _filename = args_utils.get_arg(args, 'html')
 
@@ -36,3 +80,35 @@
     netChecker.create_html_report(_filename)
 
     return
+
+
+def do_map(args):
+    # Network Map
+    # Should generate network map to console or HTML
+    logger_cli.info("# Network report")
+
+    _type, _filename = args_utils.get_network_map_type_and_filename(args)
+    # networkMap = _prepare_map
+
+    # TODO: Create map class to generate network map
+
+    return
+
+
+def do_ping(args):
+    # Network pinger
+    # Checks if selected nodes are pingable
+    # with a desireble parameters: MTU, Frame, etc
+
+    # TODO: Simple ping based on parameters
+
+    return
+
+
+def do_trace(args):
+    # Network packet tracer
+    # Check if packet is delivered to proper network host
+
+    # TODO: Packet tracer
+
+    return
diff --git a/cfg_checker/modules/network/checker.py b/cfg_checker/modules/network/checker.py
index 48e7acb..7e6a239 100644
--- a/cfg_checker/modules/network/checker.py
+++ b/cfg_checker/modules/network/checker.py
@@ -115,6 +115,11 @@
                 for _ip_str in _ip4s:
                     # create interface class
                     _if = ipaddress.IPv4Interface(_ip_str)
+                    # check if this is a VIP
+                    # ...all those will have /32 mask
+                    net_data['vip'] = None
+                    if _if.network.prefixlen == 32:
+                        net_data['vip'] = str(_if.exploded)
                     if 'name' not in net_data:
                         net_data['name'] = net_name
                     if 'ifs' not in net_data:
@@ -303,47 +308,44 @@
 
                         _name = _host['name']
                         _rc_mtu = _r['mtu'] if 'mtu' in _r else None
-
-                        # Check if this is a VIP
-                        if _if.network.prefixlen == 32:
-                            _name = " "*20
-                            _ip_str += " VIP"
-                            _rc_mtu = "(-)"
-                            _enabled = "(-)"
-                            _r_gate = "-"
-
-                        # Check if this is a default MTU
-                        elif _host['mtu'] == '1500':
-                            # reclass is empty if MTU is untended to be 1500
-                            _rc_mtu = "(-)"
-                        elif _rc_mtu:
-                            _rc_mtu_s = str(_rc_mtu)
-                            # if there is an MTU value, match it
-                            if _host['mtu'] != _rc_mtu_s:
+                        _rc_mtu_s = str(_rc_mtu) if _rc_mtu else '(-)'
+                        # check if this is a VIP address
+                        # no checks needed if yes.
+                        if _host['vip'] != _ip_str:
+                            if _rc_mtu:
+                                # if there is an MTU value, match it
+                                if _host['mtu'] != _rc_mtu_s:
+                                    self.errors.add_error(
+                                        self.errors.NET_MTU_MISMATCH,
+                                        host=hostname,
+                                        if_name=_name,
+                                        if_cidr=_ip_str,
+                                        reclass_mtu=_rc_mtu,
+                                        runtime_mtu=_host['mtu']
+                                    )
+                            elif _host['mtu'] != '1500':
+                                # there is no MTU value in reclass
+                                # and runtime value is not default
                                 self.errors.add_error(
-                                    self.errors.NET_MTU_MISMATCH,
+                                    self.errors.NET_MTU_EMPTY,
                                     host=hostname,
                                     if_name=_name,
                                     if_cidr=_ip_str,
-                                    reclass_mtu=_rc_mtu,
-                                    runtime_mtu=_host['mtu']
+                                    if_mtu=_host['mtu']
                                 )
                         else:
-                            # there is no MTU value in reclass
-                            self.errors.add_error(
-                                self.errors.NET_MTU_EMPTY,
-                                host=hostname,
-                                if_name=_name,
-                                if_cidr=_ip_str,
-                                if_mtu=_host['mtu']
-                            )
+                            # this is a VIP
+                            _name = " "*20
+                            _ip_str += " VIP"
+                            _enabled = "(-)"
+                            _r_gate = "-"
 
                         _text = "{0:25} {1:19} {2:5}{3:10} {4:4}{5:10} " \
                                 "{6} / {7} / {8}".format(
                                     _name,
                                     _ip_str,
                                     _host['mtu'],
-                                    "("+_rc_mtu_s+")" if _rc_mtu else "(No!)",
+                                    _rc_mtu_s,
                                     _host['state'],
                                     _enabled,
                                     _gate,
diff --git a/cfg_checker/modules/packages/__init__.py b/cfg_checker/modules/packages/__init__.py
index 5e717d6..a4a81bd 100644
--- a/cfg_checker/modules/packages/__init__.py
+++ b/cfg_checker/modules/packages/__init__.py
@@ -2,6 +2,35 @@
 
 import checker
 
+command_help = "Package versions check (Candidate vs Installed)"
+
+
+def init_parser(_parser):
+    # packages subparser
+    pkg_subparsers = _parser.add_subparsers(dest='type')
+
+    pkg_report_parser = pkg_subparsers.add_parser(
+        'report',
+        help="Report package versions to HTML file"
+    )
+    pkg_report_parser.add_argument(
+        '--full',
+        action="store_true", default=False,
+        help="HTML report will have all of the packages, not just errors"
+    )
+    pkg_report_parser.add_argument(
+        '--html',
+        metavar='packages_html_filename',
+        help="HTML filename to save report"
+    )
+    pkg_report_parser.add_argument(
+        '--csv',
+        metavar='packages_csv_filename',
+        help="CSV filename to save report"
+    )
+
+    return _parser
+
 
 def do_report(args):
     """Create package versions report, HTML
@@ -9,7 +38,7 @@
     :args: - parser arguments
     :return: - no return value
     """
-    _type, _filename = args_utils.get_report_type_and_filename(args)
+    _type, _filename = args_utils.get_package_report_type_and_filename(args)
 
     # init connection to salt and collect minion data
     pChecker = checker.CloudPackageChecker()
diff --git a/cfg_checker/modules/reclass/__init__.py b/cfg_checker/modules/reclass/__init__.py
index adae6df..4b8b667 100644
--- a/cfg_checker/modules/reclass/__init__.py
+++ b/cfg_checker/modules/reclass/__init__.py
@@ -8,6 +8,45 @@
 
 import validator
 
+command_help = "Reclass related checks and reports"
+
+
+def init_parser(_parser):
+    # reclass subparsers
+    reclass_subparsers = _parser.add_subparsers(dest='type')
+    reclass_list_parser = reclass_subparsers.add_parser(
+        'list',
+        help="List models available to compare"
+    )
+    reclass_list_parser.add_argument(
+        "-p",
+        "--models-path",
+        default="/srv/salt/",
+        help="Global path to search models in"
+    )
+
+    reclass_diff_parser = reclass_subparsers.add_parser(
+        'diff',
+        help="List models available to compare"
+    )
+    reclass_diff_parser.add_argument(
+        "--model1",
+        required=True,
+        help="Model A <path>. Model name is the folder name"
+    )
+    reclass_diff_parser.add_argument(
+        "--model2",
+        required=True,
+        help="Model B <path>. Model name is the folder name"
+    )
+    reclass_diff_parser.add_argument(
+        '--html',
+        metavar='reclass_html_filename',
+        help="HTML filename to save report"
+    )
+
+    return _parser
+
 
 def do_list(args):
     logger_cli.info("# Reclass list")
diff --git a/etc/versions_map.csv b/etc/versions_map.csv
index 21b0e3b..cc0ee07 100644
--- a/etc/versions_map.csv
+++ b/etc/versions_map.csv
@@ -53,9 +53,9 @@
 cinder-backup,OpenStack,Cinder,mirantis,Pike,,2:11.1.0-1~u16.04+mcp59,,,
 cinder-api,OpenStack,Cinder,mirantis,,,,,,
 cinder-backup,OpenStack,Cinder,mirantis,,,,,,
-cinder-common,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96 [5],,
-cinder-scheduler,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96 [5],,
-cinder-volume,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96 [5],,
+cinder-common,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96,,
+cinder-scheduler,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96,,
+cinder-volume,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96,,
 cloud-guest-utils,,,,,,,,,
 cloud-initramfs-copymods,,,,,,,,,
 cloud-initramfs-dyn-netconf,,,,,,,,,
@@ -187,10 +187,10 @@
 haproxy,System,HAProxy,mirror,,,1.6.3,1.6.3,,
 haveged,,,,,,,,,
 hdparm,,,,,,,,,
-heat-api,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
-heat-api-cfn,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
-heat-common,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
-heat-engine,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
+heat-api,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54,,
+heat-api-cfn,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54,,
+heat-common,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54,,
+heat-engine,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54,,
 hostname,,,,,,,,,
 htop,,,,,,,,,
 ieee-data,,,,,,,,,
@@ -721,13 +721,13 @@
 mtools,,,,,,,,,
 mtr-tiny,,,,,,,,,
 multiarch-support,,,,,,,,,
-mysql-client,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+mysql-client,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2,,
 mysql-common,System,MySQL,,,,,,,
-mysql-wsrep-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
-mysql-wsrep-client-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
-mysql-wsrep-common-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
-mysql-wsrep-libmysqlclient18,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
-mysql-wsrep-server-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+mysql-wsrep-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2,,
+mysql-wsrep-client-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2,,
+mysql-wsrep-common-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2,,
+mysql-wsrep-libmysqlclient18,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2,,
+mysql-wsrep-server-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2,,
 nano,,,,,,,,,
 ncurses-base,,,,,,,,,
 ncurses-bin,,,,,,,,,
@@ -736,35 +736,35 @@
 netbase,,,,,,,,,
 netcat-openbsd,,,,,,,,,
 netfilter-persistent,,,,,,,,,
-neutron-common,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
-neutron-dhcp-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
-neutron-l3-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
-neutron-metadata-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
-neutron-openvswitch-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
-neutron-plugin-ml2,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
-neutron-server,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+neutron-common,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
+neutron-dhcp-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
+neutron-l3-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
+neutron-metadata-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
+neutron-openvswitch-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
+neutron-plugin-ml2,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
+neutron-server,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
 nginx,System,NGINX,mirror,,,1.10.3,1.10.3,,
 nginx-common,System,NGINX,mirror,,,1.10.3,1.10.3,,
 nginx-core,System,NGINX,mirror,,,1.10.3,1.10.3,,
-nova-api,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-common,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-compute,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-compute-kvm,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-conductor,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-consoleauth,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-consoleproxy,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-doc,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-placement-api,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
-nova-scheduler,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-api,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-common,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-compute,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-compute-kvm,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-conductor,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-consoleauth,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-consoleproxy,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-doc,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-placement-api,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
+nova-scheduler,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
 novnc,,,,,,,,,
 ntfs-3g,,,,,,,,,
 ntp,,,,,,,,,
 nvme-cli,,,,,,,,,
-octavia-api,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
-octavia-common,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
-octavia-health-manager,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
-octavia-housekeeping,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
-octavia-worker,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+octavia-api,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69,,
+octavia-common,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69,,
+octavia-health-manager,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69,,
+octavia-housekeeping,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69,,
+octavia-worker,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69,,
 open-iscsi,,,,,,,,,
 open-vm-tools,,,,,,,,,
 openipmi,,,,,,,,,
@@ -775,7 +775,7 @@
 openssh-server,System,SSH,,,,,,,
 openssh-sftp-server,System,SSH,,,,,,,
 openssl,System,SSL,,,,,,,
-openstack-dashboard,OpenStack,Horizon,mirantis,Queens,,13.0.1-9~u16.04+mcp,3:13.0.1-10~u16.04+mcp70 [5],,
+openstack-dashboard,OpenStack,Horizon,mirantis,Queens,,13.0.1-9~u16.04+mcp,3:13.0.1-10~u16.04+mcp70,,
 openvswitch-common,System,Open vSwitch,mirantis,,,,,,
 openvswitch-switch,System,Open vSwitch,mirantis,,,,,,
 os-brick-common,,,,,,,,,
@@ -871,7 +871,7 @@
 python-django-babel,,,,,,,,,
 python-django-common,,,,,,,,,
 python-django-compressor,,,,,,,,,
-python-django-horizon,OpenStack,Horizon,mirantis,Queens,,13.0.1-9~u16.04+mcp,3:13.0.1-10~u16.04+mcp70 [5],,
+python-django-horizon,OpenStack,Horizon,mirantis,Queens,,13.0.1-9~u16.04+mcp,3:13.0.1-10~u16.04+mcp70,,
 python-django-pyscss,,,,,,,,,
 python-dnspython,,,,,,,,,
 python-docker,,,,,,,,,
@@ -899,7 +899,7 @@
 python-greenlet,,,,,,,,,
 python-guestfs,,,,,,,,,
 python-gunicorn,,,,,,,,,
-python-heat,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
+python-heat,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54,,
 python-heat-dashboard,,,,,,,,,
 python-heatclient,,,,,,,,,
 python-httplib2,,,,,,,,,
@@ -952,19 +952,19 @@
 python-netaddr,,,,,,,,,
 python-netifaces,,,,,,,,,
 python-networkx,,,,,,,,,
-python-neutron,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+python-neutron,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93,,
 python-neutron-fwaas,,,,,,,,,
 python-neutron-lbaas,,,,,,,,,
 python-neutron-lib,,,,,,,,,
 python-neutronclient,,,,,,,,,
-python-nova,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+python-nova,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93,,
 python-novaclient,,,,,,,,,
 python-novnc,,,,,,,,,
 python-numpy,,,,,,,,,
 python-oauth,,,,,,,,,
 python-oauth2client,,,,,,,,,
 python-oauthlib,,,,,,,,,
-python-octavia,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+python-octavia,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69,,
 python-octavia-dashboard,,,,,,,,,
 python-octaviaclient,,,,,,,,,
 python-openssl,,,,,,,,,
diff --git a/setup.py b/setup.py
index 248ceb2..3db2008 100644
--- a/setup.py
+++ b/setup.py
@@ -24,9 +24,9 @@
 entry_points = {
     "console_scripts": [
         "mcp-checker = cfg_checker.cfg_check:config_check_entrypoint",
-        "mcp-checker-package = cfg_checker.cli.package:cli_package",
-        "mcp-checker-network = cfg_checker.cli.network:cli_network",
-        "mcp-checker-reclass = cfg_checker.cli.reclass:cli_reclass"
+        "mcp-checker-package = cfg_checker.cli.packages:entrypoint",
+        "mcp-checker-network = cfg_checker.cli.network:entrypoint",
+        "mcp-checker-reclass = cfg_checker.cli.reclass:entrypoint"
     ]
 }
 
diff --git a/tests/test_entrypoints.py b/tests/test_entrypoints.py
index 0b87e6d..5fd778a 100644
--- a/tests/test_entrypoints.py
+++ b/tests/test_entrypoints.py
@@ -27,7 +27,7 @@
         )
 
     def test_entry_packages(self):
-        _module_name = 'cfg_checker.cli.package'
+        _module_name = 'cfg_checker.cli.packages'
         with self.redirect_output():
             _msg, _m = self._safe_import_module(_module_name)
 
@@ -42,7 +42,7 @@
 
         with self.redirect_output():
             with self.assertRaises(SystemExit) as ep:
-                _m.cli.package.cli_package()
+                _m.cli.packages.entrypoint()
 
         self.assertEqual(
             ep.exception.code,
@@ -66,7 +66,7 @@
 
         with self.redirect_output():
             with self.assertRaises(SystemExit) as ep:
-                _m.cli.network.cli_network()
+                _m.cli.network.entrypoint()
 
         self.assertEqual(
             ep.exception.code,
@@ -90,7 +90,7 @@
 
         with self.redirect_output():
             with self.assertRaises(SystemExit) as ep:
-                _m.cli.reclass.cli_reclass()
+                _m.cli.reclass.entrypoint()
 
         self.assertEqual(
             ep.exception.code,
