Refactor modules execution
diff --git a/cfg_checker/cfg_check.py b/cfg_checker/cfg_check.py
new file mode 100644
index 0000000..9260f30
--- /dev/null
+++ b/cfg_checker/cfg_check.py
@@ -0,0 +1,112 @@
+import argparse
+import os
+import sys
+
+import reporter
+from cfg_checker.common import utils, const
+from cfg_checker.common import config, logger, logger_cli, pkg_dir
+from cfg_checker.clients import salt
+
+from cfg_checker.pkg_check import CloudPackageChecker
+
+pkg_dir = os.path.dirname(__file__)
+pkg_dir = os.path.normpath(pkg_dir)
+
+
+class MyParser(argparse.ArgumentParser):
+    def error(self, message):
+        sys.stderr.write('Error: {0}\n\n'.format(message))
+        self.print_help()
+
+
+
+def help_message():
+    print"""
+    Please, use following examples to generate info reports:\n
+         cfg_checker packages report\n
+         cfg_checker network check\n
+         cfg_checker network report\n
+    """
+    return
+
+def pkg_check(args):
+    # create package versions report
+    _filename = args.file
+    # init connection to salt and collect minion data
+    pChecker = CloudPackageChecker()
+    # collect data on installed packages
+    pChecker.collect_installed_packages()
+    # diff installed and candidates
+    # pChecker.collect_packages()
+    # report it
+    pChecker.create_html_report(_filename)
+
+
+def net_check(args):
+    print("This is net check routine")
+
+    return
+
+
+def net_report(args):
+    print("This is net check routine")
+
+    return
+
+
+def config_check_entrypoint():
+    # Main entrypointр
+    parser = MyParser(prog="Cloud configuration checker")
+    subparsers = parser.add_subparsers(dest='command')
+    # packages
+    pkg_parser = subparsers.add_parser(
+        'packages',
+        help="Package versions check (Candidate vs Installed)"
+    )
+    pkg_subparsers = pkg_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(
+        '-f',
+        '--file',
+        help="HTML filename to save report"
+    )
+
+    # networking
+    net_parser = subparsers.add_parser(
+        'network',
+        help="Network infrastructure checks"
+    )
+    net_subparsers = net_parser.add_subparsers(dest='type')
+
+    net_check_parser = net_subparsers.add_parser(
+        'check',
+        help="Do network check and print the result"
+    )
+    net_check_parser.set_defaults(func=net_check)
+
+    net_report_parser = net_subparsers.add_parser(
+        'report',
+        help="Generate network check report"
+    )
+    net_report_parser.add_argument(
+        '-f',
+        '--file',
+        help="HTML filename to save report"
+    )
+    net_report_parser.set_defaults(func=net_report)
+    
+    #parse arguments
+    args = parser.parse_args()
+
+    # Execute the command
+    result = args.func(args)
+
+    logger.debug(result)
+    return
+
+if __name__ == '__main__':
+    config_check_entrypoint()