diff --git a/tcp_tests/fixtures/ceph_fixtures.py b/tcp_tests/fixtures/ceph_fixtures.py
index 94315c4..44ab7d2 100644
--- a/tcp_tests/fixtures/ceph_fixtures.py
+++ b/tcp_tests/fixtures/ceph_fixtures.py
@@ -38,7 +38,7 @@
 @pytest.mark.revert_snapshot(ext.SNAPSHOT.ceph_deployed)
 @pytest.fixture(scope='function')
 def ceph_deployed(revert_snapshot, request, config,
-                  hardware, underlay, common_services_deployed,
+                  hardware, underlay, core_deployed,
                   salt_deployed, ceph_actions):
     """Fixture to get or install Ceph services on environment
 
@@ -48,7 +48,7 @@
     :param config: fixture provides oslo.config
     :param hardware: fixture provides enviromnet manager
     :param underlay: fixture provides underlay manager
-    :param common_services_deployed: fixture provides CommonServicesManager
+    :param core_deployed: fixture provides CoreManager
     :param ceph_actions: fixture provides CephManager instance
     :rtype: CephManager
 
diff --git a/tcp_tests/fixtures/common_services_fixtures.py b/tcp_tests/fixtures/common_services_fixtures.py
deleted file mode 100644
index 7d1c73f..0000000
--- a/tcp_tests/fixtures/common_services_fixtures.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#    Copyright 2016 Mirantis, Inc.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-#    License for the specific language governing permissions and limitations
-#    under the License.
-
-import pytest
-
-from tcp_tests import logger
-from tcp_tests.helpers import ext
-from tcp_tests.managers import common_services_manager
-
-LOG = logger.logger
-
-
-@pytest.fixture(scope='function')
-def common_services_actions(config, underlay, salt_actions):
-    """Fixture that provides various actions for CommonServices
-
-    :param config: fixture provides oslo.config
-    :param underlay: fixture provides underlay manager
-    :rtype: CommonServicesManager
-    """
-    return common_services_manager.CommonServicesManager(config, underlay,
-                                                         salt_actions)
-
-
-@pytest.mark.revert_snapshot(ext.SNAPSHOT.common_services_deployed)
-@pytest.fixture(scope='function')
-def common_services_deployed(revert_snapshot, request, config,
-                             hardware, underlay, salt_deployed,
-                             common_services_actions):
-    """Fixture to get or install common services on the environment
-
-    :param revert_snapshot: fixture that reverts snapshot that is specified
-                            in test with @pytest.mark.revert_snapshot(<name>)
-    :param request: fixture provides pytest data
-    :param config: fixture provides oslo.config
-    :param hardware: fixture provides enviromnet manager
-    :param underlay: fixture provides underlay manager
-    :param common_services_actions: fixture provides CommonServicesManager
-                                    instance
-    :rtype: CommonServicesManager
-
-    If config.common_services.common_services_installed is not set, this
-    fixture assumes that the common services were not installed
-    , and do the following:
-    - install common services
-    - make snapshot with name 'common_services_deployed'
-    - return CommonServicesManager
-
-    If config.common_services.common_services_installed was set, this fixture
-    assumes that the common services were already installed, and do
-    the following:
-    - return CommonServicesManager instance
-
-    If you want to revert 'common_services_deployed' snapshot, please use mark:
-    @pytest.mark.revert_snapshot("common_services_deployed")
-    """
-    # Create Salt cluster
-    if not config.common_services.common_services_installed:
-        steps_path = config.common_services_deploy.common_services_steps_path
-        commands = underlay.read_template(steps_path)
-        common_services_actions.install(commands)
-        hardware.create_snapshot(ext.SNAPSHOT.common_services_deployed)
-        salt_deployed.sync_time()
-
-    else:
-        # 1. hardware environment created and powered on
-        # 2. config.underlay.ssh contains SSH access to provisioned nodes
-        #    (can be passed from external config with TESTS_CONFIGS variable)
-        # 3. config.tcp.* options contain access credentials to the already
-        #    installed TCP API endpoint
-        pass
-
-    return common_services_actions
diff --git a/tcp_tests/fixtures/core_fixtures.py b/tcp_tests/fixtures/core_fixtures.py
new file mode 100644
index 0000000..cb058a3
--- /dev/null
+++ b/tcp_tests/fixtures/core_fixtures.py
@@ -0,0 +1,83 @@
+#    Copyright 2016 Mirantis, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+import pytest
+
+from tcp_tests import logger
+from tcp_tests.helpers import ext
+from tcp_tests.managers import core_manager
+
+LOG = logger.logger
+
+
+@pytest.fixture(scope='function')
+def core_actions(config, underlay, salt_actions):
+    """Fixture that provides various actions for Core
+
+    :param config: fixture provides oslo.config
+    :param underlay: fixture provides underlay manager
+    :rtype: CoreManager
+    """
+    return core_manager.CoreManager(config, underlay, salt_actions)
+
+
+@pytest.mark.revert_snapshot(ext.SNAPSHOT.core_deployed)
+@pytest.fixture(scope='function')
+def core_deployed(revert_snapshot, request, config,
+                  hardware, underlay, salt_deployed,
+                  core_actions):
+    """Fixture to get or install common services on the environment
+
+    :param revert_snapshot: fixture that reverts snapshot that is specified
+                            in test with @pytest.mark.revert_snapshot(<name>)
+    :param request: fixture provides pytest data
+    :param config: fixture provides oslo.config
+    :param hardware: fixture provides enviromnet manager
+    :param underlay: fixture provides underlay manager
+    :param core_actions: fixture provides CoreManager
+                                    instance
+    :rtype: CoreManager
+
+    If config.core.core_installed is not set, this
+    fixture assumes that the common services were not installed
+    , and do the following:
+    - install common services
+    - make snapshot with name 'core_deployed'
+    - return CoreManager
+
+    If config.core.core_installed was set, this fixture
+    assumes that the common services were already installed, and do
+    the following:
+    - return CoreManager instance
+
+    If you want to revert 'core_deployed' snapshot, please use mark:
+    @pytest.mark.revert_snapshot("core_deployed")
+    """
+    # Create Salt cluster
+    if not config.core.core_installed:
+        steps_path = config.core_deploy.core_steps_path
+        commands = underlay.read_template(steps_path)
+        core_actions.install(commands)
+        hardware.create_snapshot(ext.SNAPSHOT.core_deployed)
+        salt_deployed.sync_time()
+
+    else:
+        # 1. hardware environment created and powered on
+        # 2. config.underlay.ssh contains SSH access to provisioned nodes
+        #    (can be passed from external config with TESTS_CONFIGS variable)
+        # 3. config.tcp.* options contain access credentials to the already
+        #    installed TCP API endpoint
+        pass
+
+    return core_actions
diff --git a/tcp_tests/fixtures/k8s_fixtures.py b/tcp_tests/fixtures/k8s_fixtures.py
index f59ff61..a85473d 100644
--- a/tcp_tests/fixtures/k8s_fixtures.py
+++ b/tcp_tests/fixtures/k8s_fixtures.py
@@ -40,7 +40,7 @@
 @pytest.mark.revert_snapshot(ext.SNAPSHOT.k8s_deployed)
 @pytest.fixture(scope='function')
 def k8s_deployed(revert_snapshot, request, config, hardware, underlay,
-                 common_services_deployed, salt_deployed, k8s_actions):
+                 core_deployed, salt_deployed, k8s_actions):
     """Fixture to get or install k8s on environment
 
     :param revert_snapshot: fixture that reverts snapshot that is specified
@@ -49,7 +49,7 @@
     :param config: fixture provides oslo.config
     :param hardware: fixture provides enviromnet manager
     :param underlay: fixture provides underlay manager
-    :param common_services_deployed: fixture provides CommonServicesManager
+    :param core_deployed: fixture provides CoreManager
     :param k8s_actions: fixture provides K8SManager instance
     :rtype: K8SManager
 
diff --git a/tcp_tests/fixtures/openstack_fixtures.py b/tcp_tests/fixtures/openstack_fixtures.py
index 8f997a3..480a548 100644
--- a/tcp_tests/fixtures/openstack_fixtures.py
+++ b/tcp_tests/fixtures/openstack_fixtures.py
@@ -39,7 +39,7 @@
 @pytest.mark.revert_snapshot(ext.SNAPSHOT.openstack_deployed)
 @pytest.fixture(scope='function')
 def openstack_deployed(revert_snapshot, request, config,
-                       hardware, underlay, common_services_deployed,
+                       hardware, underlay, core_deployed,
                        salt_deployed, openstack_actions, rally):
     """Fixture to get or install OpenStack services on environment
 
@@ -49,7 +49,7 @@
     :param config: fixture provides oslo.config
     :param hardware: fixture provides enviromnet manager
     :param underlay: fixture provides underlay manager
-    :param common_services_deployed: fixture provides CommonServicesManager
+    :param core_deployed: fixture provides CoreManager
     :param openstack_actions: fixture provides OpenstackManager instance
     :param rally: fixture provides RallyManager instance
     :rtype: OpenstackManager
diff --git a/tcp_tests/fixtures/oss_fixtures.py b/tcp_tests/fixtures/oss_fixtures.py
index 95bbc54..6162e27 100644
--- a/tcp_tests/fixtures/oss_fixtures.py
+++ b/tcp_tests/fixtures/oss_fixtures.py
@@ -88,8 +88,8 @@
                        oss_deployed):
     """Fixture to get or install SL and OpenStack services on environment
 
-    Uses fixtures openstack_deployed and sl_deployed, with 'sl_deployed'
-    top-level snapshot.
+    Uses fixtures openstack_deployed and stacklight_deployed,
+    with 'stacklight_deployed' top-level snapshot.
 
     Returns SLManager instance object
     """
diff --git a/tcp_tests/fixtures/stacklight_fixtures.py b/tcp_tests/fixtures/stacklight_fixtures.py
index c1747b8..2c30530 100644
--- a/tcp_tests/fixtures/stacklight_fixtures.py
+++ b/tcp_tests/fixtures/stacklight_fixtures.py
@@ -35,11 +35,11 @@
     return sl_manager.SLManager(config, underlay, salt_deployed)
 
 
-@pytest.mark.revert_snapshot(ext.SNAPSHOT.sl_deployed)
+@pytest.mark.revert_snapshot(ext.SNAPSHOT.stacklight_deployed)
 @pytest.fixture(scope='function')
-def sl_deployed(revert_snapshot, request, config,
-                hardware, underlay, common_services_deployed,
-                salt_deployed, sl_actions):
+def stacklight_deployed(revert_snapshot, request, config,
+                        hardware, underlay, core_deployed,
+                        salt_deployed, sl_actions):
     """Fixture to get or install SL services on environment
 
     :param revert_snapshot: fixture that reverts snapshot that is specified
@@ -56,7 +56,7 @@
         steps_path = config.sl_deploy.sl_steps_path
         commands = underlay.read_template(steps_path)
         sl_actions.install(commands)
-        hardware.create_snapshot(ext.SNAPSHOT.sl_deployed)
+        hardware.create_snapshot(ext.SNAPSHOT.stacklight_deployed)
         salt_deployed.sync_time()
 
     else:
@@ -70,16 +70,16 @@
     return sl_actions
 
 
-@pytest.mark.revert_snapshot(ext.SNAPSHOT.sl_deployed)
+@pytest.mark.revert_snapshot(ext.SNAPSHOT.stacklight_deployed)
 @pytest.fixture(scope='function')
 def sl_os_deployed(revert_snapshot,
                    openstack_deployed,
-                   sl_deployed):
+                   stacklight_deployed):
     """Fixture to get or install SL and OpenStack services on environment
 
-    Uses fixtures openstack_deployed and sl_deployed, with 'sl_deployed'
-    top-level snapshot.
+    Uses fixtures openstack_deployed and stacklight_deployed,
+    with 'stacklight_deployed' top-level snapshot.
 
     Returns SLManager instance object
     """
-    return sl_deployed
+    return stacklight_deployed
