diff --git a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt
index 0c8209f..8724a9f 100644
--- a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt
+++ b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintConstants.kt
@@ -46,6 +46,10 @@
     const val DATA_TYPE_MAP: String = "map"
     const val DATA_TYPE_JSON: String = "json"
 
+    const val SCRIPT_KOTLIN = "kotlin"
+    const val SCRIPT_JYTHON = "jython"
+    const val SCRIPT_INTERNAL = "internal"
+
     const val USER_SYSTEM: String = "System"
 
     const val PATH_DIVIDER: String = "/"
diff --git a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BluePrintScriptsService.kt b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BluePrintScriptsService.kt
index 124c167..ac68255 100644
--- a/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BluePrintScriptsService.kt
+++ b/ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BluePrintScriptsService.kt
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2018 IBM.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,8 +19,10 @@
 
 import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext
 
-interface BluePrintScriptsService{
+interface BluePrintScriptsService {
 
     fun <T> scriptInstance(blueprintContext: BluePrintContext, scriptClassName: String,
                            reCompile: Boolean): T
+
+    fun <T> scriptInstance(scriptClassName: String): T
 }
\ No newline at end of file
diff --git a/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintCompilerProxy.kt b/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintCompilerProxy.kt
index ce9553c..572724d 100644
--- a/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintCompilerProxy.kt
+++ b/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintCompilerProxy.kt
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2018 IBM.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -65,40 +66,45 @@
 
                 val rootDisposable = Disposer.newDisposable()
 
-                val compilerConfiguration = CompilerConfiguration().apply {
+                try {
 
-                    put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
-                    put(CommonConfigurationKeys.MODULE_NAME, blueprintSourceCode.moduleName)
-                    put(JVMConfigurationKeys.OUTPUT_JAR, compiledJarFile)
-                    put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, false)
+                    val compilerConfiguration = CompilerConfiguration().apply {
 
-                    // Load Current Class loader to Compilation Class loader
-                    val currentClassLoader = classpathFromClasspathProperty()
-                    currentClassLoader?.forEach {
-                        add(CLIConfigurationKeys.CONTENT_ROOTS, JvmClasspathRoot(it))
+                        put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
+                        put(CommonConfigurationKeys.MODULE_NAME, blueprintSourceCode.moduleName)
+                        put(JVMConfigurationKeys.OUTPUT_JAR, compiledJarFile)
+                        put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, false)
+
+                        // Load Current Class loader to Compilation Class loader
+                        val currentClassLoader = classpathFromClasspathProperty()
+                        currentClassLoader?.forEach {
+                            add(CLIConfigurationKeys.CONTENT_ROOTS, JvmClasspathRoot(it))
+                        }
+
+                        // Add all Kotlin Sources
+                        addKotlinSourceRoots(blueprintSourceCode.blueprintKotlinSources)
+
+                        languageVersionSettings = LanguageVersionSettingsImpl(
+                                LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlags.skipMetadataVersionCheck to true)
+                        )
                     }
 
-                    // Add all Kotlin Sources
-                    addKotlinSourceRoots(blueprintSourceCode.blueprintKotlinSources)
+                    //log.info("Executing with compiler configuration : $compilerConfiguration")
 
-                    languageVersionSettings = LanguageVersionSettingsImpl(
-                            LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlags.skipMetadataVersionCheck to true)
-                    )
-                }
+                    environment = KotlinCoreEnvironment.createForProduction(rootDisposable, compilerConfiguration,
+                            EnvironmentConfigFiles.JVM_CONFIG_FILES)
 
-                //log.info("Executing with compiler configuration : $compilerConfiguration")
+                    // Compile Kotlin Sources
+                    val compiled = KotlinToJVMBytecodeCompiler.compileBunchOfSources(environment)
 
-                environment = KotlinCoreEnvironment.createForProduction(rootDisposable, compilerConfiguration,
-                        EnvironmentConfigFiles.JVM_CONFIG_FILES)
+                    val analyzerWithCompilerReport = AnalyzerWithCompilerReport(messageCollector,
+                            environment.configuration.languageVersionSettings)
 
-                // Compile Kotlin Sources
-                val compiled = KotlinToJVMBytecodeCompiler.compileBunchOfSources(environment)
-
-                val analyzerWithCompilerReport = AnalyzerWithCompilerReport(messageCollector,
-                        environment.configuration.languageVersionSettings)
-
-                if (analyzerWithCompilerReport.hasErrors()) {
-                    return ResultWithDiagnostics.Failure(messageCollector.diagnostics)
+                    if (analyzerWithCompilerReport.hasErrors()) {
+                        return ResultWithDiagnostics.Failure(messageCollector.diagnostics)
+                    }
+                } finally {
+                    rootDisposable.dispose()
                 }
             }
 
diff --git a/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintScriptsServiceImpl.kt b/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintScriptsServiceImpl.kt
index e136552..4840fc9 100644
--- a/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintScriptsServiceImpl.kt
+++ b/ms/controllerblueprints/modules/blueprint-scripts/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/scripts/BluePrintScriptsServiceImpl.kt
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2018 IBM.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@
 import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext
 import org.springframework.stereotype.Service
 import java.io.File
+import java.util.*
 import kotlin.script.experimental.api.ResultValue
 import kotlin.script.experimental.api.resultOrNull
 import kotlin.script.experimental.jvmhost.createJvmCompilationConfigurationFromTemplate
@@ -57,6 +59,11 @@
         return returnValue?.value!! as T
     }
 
+    override fun <T> scriptInstance(scriptClassName: String): T {
+        val args = ArrayList<Any?>()
+        return Thread.currentThread().contextClassLoader.loadClass(scriptClassName).constructors
+                .single().newInstance(*args.toArray()) as T
+    }
 }
 
 fun getBluePrintScriptsJarName(blueprintContext: BluePrintContext): String {
