diff --git a/ci_checker/__init__.py b/cfg_checker/__init__.py
similarity index 100%
rename from ci_checker/__init__.py
rename to cfg_checker/__init__.py
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()
diff --git a/cfg_checker/clients/__init__.py b/cfg_checker/clients/__init__.py
new file mode 100644
index 0000000..3e1f55c
--- /dev/null
+++ b/cfg_checker/clients/__init__.py
@@ -0,0 +1,29 @@
+from cfg_checker.common.salt_utils import SaltRemote
+from cfg_checker.common import logger
+
+# instance of the salt client
+salt = None
+
+
+def get_salt_remote(config):
+    """Singleton-like creation of instance
+
+    Arguments:
+        config {base_config} -- an instance to base_config
+            with creds and params
+
+    Returns:
+        SaltRemote -- instance of salt client
+    """
+
+    global salt
+    logger.info("Creating salt remote instance")
+    # create it once
+    if salt is None:
+        salt = SaltRemote(config)
+        # do most expensive operation with no strict timeout possible
+        # all nodes that answer ping
+        salt.nodes_active = salt.get_active_nodes()
+
+    # return once required
+    return salt
diff --git a/cfg_checker/common/__init__.py b/cfg_checker/common/__init__.py
new file mode 100644
index 0000000..297ace6
--- /dev/null
+++ b/cfg_checker/common/__init__.py
@@ -0,0 +1,13 @@
+import os
+import const
+
+from settings import pkg_dir, config
+from other import Utils
+from log import logger, logger_cli
+
+
+utils = Utils()
+const = const
+logger = logger
+logger_cli = logger_cli
+config = config
\ No newline at end of file
diff --git a/ci_checker/common/const.py b/cfg_checker/common/const.py
similarity index 100%
rename from ci_checker/common/const.py
rename to cfg_checker/common/const.py
diff --git a/ci_checker/common/exception.py b/cfg_checker/common/exception.py
similarity index 85%
rename from ci_checker/common/exception.py
rename to cfg_checker/common/exception.py
index 82e2432..bc7cefe 100644
--- a/ci_checker/common/exception.py
+++ b/cfg_checker/common/exception.py
@@ -1,11 +1,11 @@
 from exceptions import Exception
 
 
-class CiCheckerBaseExceptions(Exception):
+class CheckerBaseExceptions(Exception):
     pass
 
 
-class CheckerException(CiCheckerBaseExceptions):
+class CheckerException(CheckerBaseExceptions):
     def __init__(self, message, *args, **kwargs):
         super(CheckerException, self).__init__(message, *args, **kwargs)
         # get the trace
diff --git a/ci_checker/common/log.py b/cfg_checker/common/log.py
similarity index 85%
rename from ci_checker/common/log.py
rename to cfg_checker/common/log.py
index 78f5ab3..af52cac 100644
--- a/ci_checker/common/log.py
+++ b/cfg_checker/common/log.py
@@ -1,5 +1,11 @@
+import os
 import logging
 
+pkg_dir = os.path.dirname(__file__)
+pkg_dir = os.path.join(pkg_dir, os.pardir, os.pardir)
+pkg_dir = os.path.normpath(pkg_dir)
+pkg_dir = os.path.abspath(pkg_dir)
+
 
 def color_me(color):
     RESET_SEQ = "\033[0m"
@@ -78,3 +84,12 @@
         logger_cli.addHandler(sh)
 
     return logger, logger_cli
+
+# init instances of logger to be used by all other modules
+logger, logger_cli = setup_loggers(
+    'cfg_checker',
+    log_fname=os.path.join(
+        pkg_dir,
+        os.getenv('LOGFILE', 'cfg_checker.log')
+    )
+)
diff --git a/ci_checker/common/other.py b/cfg_checker/common/other.py
similarity index 89%
rename from ci_checker/common/other.py
rename to cfg_checker/common/other.py
index 14003ea..97030bb 100644
--- a/ci_checker/common/other.py
+++ b/cfg_checker/common/other.py
@@ -1,13 +1,14 @@
 import os
 import re
 
-from ci_checker.common.const import all_roles_map
+from cfg_checker.common.const import all_roles_map
 
-from ci_checker.common.exception import ConfigException
+from cfg_checker.common.exception import ConfigException
 
-PKG_DIR = os.path.dirname(__file__)
-PKG_DIR = os.path.join(PKG_DIR, os.pardir, os.pardir)
-PKG_DIR = os.path.normpath(PKG_DIR)
+pkg_dir = os.path.dirname(__file__)
+pkg_dir = os.path.join(pkg_dir, os.pardir, os.pardir)
+pkg_dir = os.path.normpath(pkg_dir)
+pkg_dir = os.path.abspath(pkg_dir)
 
 
 class Utils(object):
@@ -74,7 +75,7 @@
             try:
                 if not nodes_list:
                     return []
-                with open(os.path.join(PKG_DIR, nodes_list)) as _f:
+                with open(os.path.join(pkg_dir, nodes_list)) as _f:
                     _list.extend(_f.read().splitlines())
             except IOError as e:
                 raise ConfigException("Error while loading file, '{}': "
diff --git a/ci_checker/common/salt_utils.py b/cfg_checker/common/salt_utils.py
similarity index 98%
rename from ci_checker/common/salt_utils.py
rename to cfg_checker/common/salt_utils.py
index cbf0321..ba1233b 100644
--- a/ci_checker/common/salt_utils.py
+++ b/cfg_checker/common/salt_utils.py
@@ -5,8 +5,7 @@
 import requests
 import time
 
-from ci_checker.common.base_settings import base_config as config
-from ci_checker.common import logger
+from cfg_checker.common import logger, config
 
 
 def list_to_target_string(node_list, separator):
diff --git a/cfg_checker/common/settings.py b/cfg_checker/common/settings.py
new file mode 100644
index 0000000..cea1f0c
--- /dev/null
+++ b/cfg_checker/common/settings.py
@@ -0,0 +1,107 @@
+import os
+
+from exception import ConfigException
+from log import logger
+from other import utils
+
+pkg_dir = os.path.dirname(__file__)
+pkg_dir = os.path.join(pkg_dir, os.pardir, os.pardir)
+pkg_dir = os.path.normpath(pkg_dir)
+pkg_dir = os.path.abspath(pkg_dir)
+
+_default_work_folder = os.path.normpath(pkg_dir)
+
+
+class CheckerConfiguration(object):
+    def _init_values(self):
+        """Load values from environment variables or put default ones
+        """
+
+        self.name = "CheckerConfig"
+        self.working_folder = os.environ.get(
+            'CFG_TESTS_WORK_DIR',
+            _default_work_folder
+        )
+        self.date_format = "%Y-%m-%d %H:%M:%S.%f%z"
+        self.default_tz = "UTC"
+
+        self.salt_host = os.environ.get('SALT_URL', None)
+        self.salt_port = os.environ.get('SALT_PORT', '6969')
+        self.salt_user = os.environ.get('SALT_USER', 'salt')
+        self.salt_pass = os.environ.get('SALT_PASSWORD', None)
+        self.salt_timeout = os.environ.get('SALT_TIMEOUT', 30)
+        self.salt_file_root = os.environ.get('SALT_FILE_ROOT', None)
+        self.salt_scripts_folder = os.environ.get(
+            'SALT_SCRIPTS_FOLDER',
+            'cfg_checker_scripts'
+        )
+        self.all_nodes = utils.get_nodes_list(
+            os.environ.get('CFG_ALL_NODES', None),
+            os.environ.get('SALT_NODE_LIST_FILE', None)
+        )
+        self.skip_nodes = utils.node_string_to_list(os.environ.get(
+            'CFG_SKIP_NODES',
+            None
+        ))
+
+    @staticmethod
+    def _init_env(env_name=None):
+        """[summary]
+
+        Keyword Arguments:
+            env_name {str} -- environment name to search configuration
+                files in etc/<env_name>.env (default: {None})
+
+        Raises:
+            ConfigException -- on IO error when loading env file
+            ConfigException -- on env file failed validation
+        """
+        # load env file as init os.environment with its values
+        if env_name is None:
+            _env_name = 'default'
+        else:
+            _env_name = env_name
+        _config_path = os.path.join(pkg_dir, 'etc', _env_name + '.env')
+        if os.path.isfile(_config_path):
+            with open(_config_path) as _f:
+                _list = _f.read().splitlines()
+            logger.debug("Loading env vars from '{}'".format(_config_path))
+        else:
+            raise ConfigException(
+                "Failed to load enviroment vars from '{}'".format(
+                    _config_path
+                )
+            )
+        for index in range(len(_list)):
+            _line = _list[index]
+            # skip comments
+            if _line.strip().startswith('#'):
+                continue
+            # validate
+            _errors = []
+            if _line.find('=') < 0 or _line.count('=') > 1:
+                _errors.append("Line {}: {}".format(index, _line))
+            else:
+                # save values
+                _t = _line.split('=')
+                _key, _value = _t[0], _t[1]
+                os.environ[_key] = _value
+        # if there was errors, report them
+        if _errors:
+            raise ConfigException(
+                "Environment file failed validation in lines: {}".format(
+                    "\n".join(_errors)
+                )
+            )
+        else:
+            logger.debug("Loaded total of '{}' vars".format(len(_list)))
+
+    def __init__(self):
+        """Base configuration class. Only values that are common for all scripts
+        """
+        _env = os.getenv('SALT_ENV', None)
+        self._init_env(_env)
+        self._init_values()
+
+
+config = CheckerConfiguration()
diff --git a/ci_checker/pkg_check.py b/cfg_checker/pkg_check.py
similarity index 91%
rename from ci_checker/pkg_check.py
rename to cfg_checker/pkg_check.py
index dd1efc1..34907c5 100644
--- a/ci_checker/pkg_check.py
+++ b/cfg_checker/pkg_check.py
@@ -4,11 +4,11 @@
 
 from copy import deepcopy
 
-import common.const as const
 import reporter
-from ci_checker.common import utils
-from ci_checker.common import base_config, logger, logger_cli, PKG_DIR
-from ci_checker.common import salt_utils
+
+from cfg_checker.common import utils, const
+from cfg_checker.common import config, logger, logger_cli, pkg_dir
+from cfg_checker.common import salt_utils
 
 node_tmpl = {
     'role': '',
@@ -20,7 +20,7 @@
 
 
 class CloudPackageChecker(object):
-    _config = base_config
+    _config = config
 
     def __init__(self):
         logger_cli.info("Collecting nodes for package check")
@@ -173,16 +173,17 @@
         })
 
 
-# init connection to salt and collect minion data
-cl = CloudPackageChecker()
+if __name__ == '__main__':
+    # init connection to salt and collect minion data
+    cl = CloudPackageChecker()
 
-# collect data on installed packages
-cl.collect_installed_packages()
+    # collect data on installed packages
+    cl.collect_installed_packages()
 
-# diff installed and candidates
-# cl.collect_packages()
+    # diff installed and candidates
+    # cl.collect_packages()
 
-# report it
-cl.create_html_report("./pkg_versions.html")
+    # report it
+    cl.create_html_report("./pkg_versions.html")
 
-sys.exit(0)
+    sys.exit(0)
diff --git a/ci_checker/reclass_cmp.py b/cfg_checker/reclass_cmp.py
similarity index 99%
rename from ci_checker/reclass_cmp.py
rename to cfg_checker/reclass_cmp.py
index fd0dff3..d644679 100644
--- a/ci_checker/reclass_cmp.py
+++ b/cfg_checker/reclass_cmp.py
@@ -7,7 +7,7 @@
 import yaml
 
 import reporter
-from ci_checker.common import logger, logger_cli
+from cfg_checker.common import logger, logger_cli
 
 
 global prefix_name
diff --git a/ci_checker/reporter.py b/cfg_checker/reporter.py
similarity index 98%
rename from ci_checker/reporter.py
rename to cfg_checker/reporter.py
index 591026c..3b21894 100644
--- a/ci_checker/reporter.py
+++ b/cfg_checker/reporter.py
@@ -3,7 +3,7 @@
 import abc
 import os
 
-from ci_checker.common import const
+from cfg_checker.common import const
 
 pkg_dir = os.path.dirname(__file__)
 pkg_dir = os.path.join(pkg_dir, os.pardir)
diff --git a/ci_checker/common/__init__.py b/ci_checker/common/__init__.py
deleted file mode 100644
index e1c9f55..0000000
--- a/ci_checker/common/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import os
-import const
-import log
-
-from base_settings import PKG_DIR, base_config
-from other import Utils
-
-
-utils = Utils()
-const = const
-
-logger, logger_cli = log.setup_loggers(
-    'cee8_features',
-    log_fname=os.path.join(PKG_DIR, base_config.logfile_name)
-)
diff --git a/ci_checker/common/base_settings.py b/ci_checker/common/base_settings.py
deleted file mode 100644
index f0a8f2b..0000000
--- a/ci_checker/common/base_settings.py
+++ /dev/null
@@ -1,47 +0,0 @@
-"""
-Base configuration module
-Gathers env values and supplies default ones
-
-Attributes:
-    base_config: class with all of the values prepared to work with env
-"""
-
-import os
-
-from ci_checker.common.other import utils
-
-PKG_DIR = os.path.dirname(__file__)
-PKG_DIR = os.path.join(PKG_DIR, os.pardir, os.pardir)
-PKG_DIR = os.path.normpath(PKG_DIR)
-
-_default_work_folder = os.path.normpath(PKG_DIR)
-
-
-class TestsConfigurationBase(object):
-    """
-    Base configuration class. Only values that are common for all scripts
-    """
-
-    name = "CiTestsBaseConfig"
-    logfile_name = 'ci_checker.log'
-    working_folder = os.environ.get('CI_TESTS_WORK_DIR', _default_work_folder)
-    salt_host = os.environ.get('SALT_URL', None)
-    salt_port = os.environ.get('SALT_PORT', '6969')
-    salt_user = os.environ.get('SALT_USER', 'salt')
-    salt_pass = os.environ.get('SALT_PASSWORD', None)
-
-    salt_timeout = os.environ.get('SALT_TIMEOUT', 30)
-    salt_file_root = os.environ.get('SALT_FILE_ROOT', None)
-    salt_scripts_folder = os.environ.get('SALT_SCRIPTS_FOLDER', 'test_scripts')
-
-    all_nodes = utils.get_nodes_list(
-        os.environ.get('CI_ALL_NODES', None),
-        os.environ.get('SALT_NODE_LIST_FILE', None)
-    )
-    skip_nodes = utils.node_string_to_list(os.environ.get(
-        'CI_SKIP_NODES',
-        None
-    ))
-
-
-base_config = TestsConfigurationBase()
diff --git a/etc/example._env b/etc/example._env
index 477296c..44414a8 100644
--- a/etc/example._env
+++ b/etc/example._env
@@ -1,15 +1,12 @@
-# CI Checker
+# Cfg Checker
 # Environment file example
 
 # Either open a tunnel from your hosts using 
 # 'ssh -L 16969:<cfg-IP>:6969 <user>@<lab-IP>'
 # Or run it from within a cloud
 
-# Not used so far, reserved
-# CI_TESTS_WORK_DIR=
-
 # Main log file of the tests
-CEE8_LOGFILE = 'ci_checker.log'
+LOGFILE = 'cfg_checker.log'
 
 # Salt master host to connect to
 SALT_URL=127.0.0.1
diff --git a/requirements.txt b/requirements.txt
index eaae064..d68799f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
 six
 pyyaml
-jinja2
\ No newline at end of file
+jinja2
+requests
