diff --git a/src/com/mirantis/mk/Common.groovy b/src/com/mirantis/mk/Common.groovy
index 0e5774e..1aa6732 100644
--- a/src/com/mirantis/mk/Common.groovy
+++ b/src/com/mirantis/mk/Common.groovy
@@ -3,9 +3,6 @@
 import static groovy.json.JsonOutput.prettyPrint
 import static groovy.json.JsonOutput.toJson
 
-@Grab(group='org.yaml', module='snakeyaml', version='1.17')
-import org.yaml.snakeyaml.Yaml
-import org.yaml.snakeyaml.DumperOptions
 import com.cloudbees.groovy.cps.NonCPS
 import groovy.json.JsonSlurperClassic
 /**
@@ -58,30 +55,6 @@
 }
 
 /**
- * Convert YAML document to Map object
- * @param data YAML string
- */
-@NonCPS
-def loadYAML(String data) {
-  def yaml = new Yaml()
-  return yaml.load(data)
-}
-
-
-/**
- * Convert Map object to YAML string
- * @param map Map object
- */
-@NonCPS
-def dumpYAML(Map map) {
-  def dumperOptions = new DumperOptions()
-  dumperOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK)
-  def yaml = new Yaml(dumperOptions)
-  return yaml.dump(map)
-}
-
-
-/**
  * Get credentials from store
  *
  * @param id    Credentials name
diff --git a/src/com/mirantis/mk/Yaml.groovy b/src/com/mirantis/mk/Yaml.groovy
new file mode 100644
index 0000000..e26ae2e
--- /dev/null
+++ b/src/com/mirantis/mk/Yaml.groovy
@@ -0,0 +1,34 @@
+package com.mirantis.mk
+
+@Grab(group='org.yaml', module='snakeyaml', version='1.17')
+import org.yaml.snakeyaml.Yaml
+import org.yaml.snakeyaml.DumperOptions
+
+/**
+ * Helper class for YAML operations
+ *
+ */
+
+
+/**
+ * Convert YAML document to Map object
+ * @param data YAML string
+ */
+@NonCPS
+def loadYAML(String data) {
+  def yaml = new Yaml()
+  return yaml.load(data)
+}
+
+
+/**
+ * Convert Map object to YAML string
+ * @param map Map object
+ */
+@NonCPS
+def dumpYAML(Map map) {
+  def dumperOptions = new DumperOptions()
+  dumperOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK)
+  def yaml = new Yaml(dumperOptions)
+  return yaml.dump(map)
+}
