diff --git a/src/com/mirantis/mk/Git.groovy b/src/com/mirantis/mk/Git.groovy
index 411372d..22bf0af 100644
--- a/src/com/mirantis/mk/Git.groovy
+++ b/src/com/mirantis/mk/Git.groovy
@@ -66,7 +66,7 @@
  * Mirror git repository
  */
 def mirrorReporitory(sourceUrl, targetUrl, credentialsId, branches, followTags = false, gitEmail = 'jenkins@localhost', gitUsername = 'Jenkins') {
-    def ssl = new com.mirantis.mk.ssl()
+    def ssl = new com.mirantis.mk.Ssl()
     if (branches instanceof String) {
         branches = branches.tokenize(',')
     }
diff --git a/src/com/mirantis/mk/Openstack.groovy b/src/com/mirantis/mk/Openstack.groovy
index d12c004..c965b81 100644
--- a/src/com/mirantis/mk/Openstack.groovy
+++ b/src/com/mirantis/mk/Openstack.groovy
@@ -14,7 +14,7 @@
  */
 
 def setupOpenstackVirtualenv(path, version = 'kilo'){
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
 
     def openstack_kilo_packages = [
         'python-cinderclient>=1.3.1,<1.4.0',
@@ -56,7 +56,7 @@
  * @param project         OpenStack project to connect to
  */
 def createOpenstackEnv(url, credentialsId, project) {
-    def common = new com.mirantis.mk.common()
+    def common = new com.mirantis.mk.Common()
     rcFile = "${env.WORKSPACE}/keystonerc"
     creds = common.getPasswordCredentials(credentialsId)
     rc = """set +x
@@ -79,7 +79,7 @@
  * @param path   Optional path to virtualenv with specific clients
  */
 def runOpenstackCommand(cmd, venv, path = null) {
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
     openstackCmd = ". ${venv}; ${cmd}"
     if (path) {
         output = python.runVirtualenvCommand(path, openstackCmd)
@@ -101,7 +101,7 @@
  * @param path         Optional path to the custom virtualenv
  */
 def getKeystoneToken(client, path = null) {
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
     cmd = "keystone token-get"
     outputTable = runOpenstackCommand(cmd, client, path)
     output = python.parseTextTable(outputTable, 'item', 'prettytable', path)
@@ -137,7 +137,7 @@
  * @param path         Optional path to the custom virtualenv
  */
 def createHeatStack(client, name, template, params = [], environment = null, path = null) {
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
     templateFile = "${env.WORKSPACE}/template/template/${template}.hot"
     if (environment) {
         envFile = "${env.WORKSPACE}/template/env/${template}/${name}.env"
@@ -195,7 +195,7 @@
  * @param path         Optional path to the custom virtualenv
  */
 def getHeatStackInfo(env, name, path = null) {
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
     cmd = "heat stack-show ${name}"
     outputTable = runOpenstackCommand(cmd, env, path)
     output = python.parseTextTable(outputTable, 'item', 'prettytable', path)
@@ -225,7 +225,7 @@
  * @param path         Optional path to the custom virtualenv
  */
 def getHeatStackResources(env, name, path = null) {
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
     cmd = "heat resource-list ${name}"
     outputTable = runOpenstackCommand(cmd, env, path)
     output = python.parseTextTable(outputTable, 'list', 'prettytable', path)
@@ -240,7 +240,7 @@
  * @param path         Optional path to the custom virtualenv
  */
 def getHeatStackResourceInfo(env, name, resource, path = null) {
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
     cmd = "heat resource-show ${name} ${resource}"
     outputTable = runOpenstackCommand(cmd, env, path)
     output = python.parseTextTable(outputTable, 'item', 'prettytable', path)
@@ -255,7 +255,7 @@
  * @param path         Optional path to the custom virtualenv
  */
 def updateHeatStack(env, name, path = null) {
-    def python = new com.mirantis.mk.python()
+    def python = new com.mirantis.mk.Python()
     cmd = "heat stack-update ${name}"
     outputTable = runOpenstackCommand(cmd, env, path)
     output = python.parseTextTable(outputTable, 'item', 'prettytable', path)
diff --git a/src/com/mirantis/mk/Salt.groovy b/src/com/mirantis/mk/Salt.groovy
index 8422cb3..8ec2979 100644
--- a/src/com/mirantis/mk/Salt.groovy
+++ b/src/com/mirantis/mk/Salt.groovy
@@ -53,7 +53,7 @@
  */
 @NonCPS
 def runSaltCommand(master, client, target, function, batch = null, args = null, kwargs = null) {
-    def http = new com.mirantis.mk.http()
+    def http = new com.mirantis.mk.Http()
 
     data = [
         'tgt': target.expression,
diff --git a/src/com/mirantis/mk/Ssl.groovy b/src/com/mirantis/mk/Ssl.groovy
index fcdea5a..c9bec04 100644
--- a/src/com/mirantis/mk/Ssl.groovy
+++ b/src/com/mirantis/mk/Ssl.groovy
@@ -46,7 +46,7 @@
  * @param credentialsId Jenkins credentials name to lookup private key
  */
 def prepareSshAgentKey(credentialsId) {
-    def common = new com.mirantis.mk.common()
+    def common = new com.mirantis.mk.Common()
     c = common.getSshCredentials(credentialsId)
     // create ~/.ssh and delete file ssh-agent.sh which can be stale
     sh('mkdir -p -m 700 ~/.ssh && rm -f ~/.ssh/ssh-agent.sh')
