diff --git a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js
index 1ba8912..69098ec 100644
--- a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js
+++ b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaFactory.js
@@ -102,15 +102,19 @@
 function serialize_leaf_list(data) {
 	data = data[this.name];
 	if (data) {
-		data = data.reduce((result, value) => {
-			if (value !== '' && value !== null && value !== undefined && typeof value !== 'object') {
-				result.push(value);
+		commaSeparatedValues = data.reduce((d, v) => {
+			let leaf = Serializer.leaf.call(this, d);
+			let value = leaf & leaf[this.name];
+			if (value && value.length) {
+				if (v.length) {
+					v += ', ';
+				}
+				v += value;
 			}
-			return result;
-		}, []);
-		if (data.length){
+		}, "");
+		if (commaSeparatedValues.length) {
 			let obj = {};
-			obj[this.name] = data;
+			obj[this.name] = commaSeparatedValues;
 			return obj;
 		}
 	}
diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx b/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx
index 6273d8c..d1e295c 100644
--- a/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx
+++ b/skyquake/plugins/launchpad/src/instantiate/instantiateInputParams.jsx
@@ -105,13 +105,12 @@
   }
   inputParametersHTML = (props) => {
     let inputParameters = props.inputParameters;
-    const handleChange = (i, event) => props.updateInputParam(i, event.target.value);
     return inputParameters && inputParameters.map(function(input, i) {
         return (
                 <div className="configure-nsd_section" key={i}>
                   <h3 className="launchpadCard_title">Input Parameters</h3>
                   <div className="inputControls">
-                      <TextInput label={ input.label || input.xpath } type="text" onChange={handleChange.bind(this, i)} />
+                      <TextInput label={ input.label || input.xpath } type="text" onChange={props.updateInputParam.bind(self, i)} />
                   </div>
                 </div>
         )
diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js
index 0e91ee3..3ec2a80 100644
--- a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js
+++ b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js
@@ -189,10 +189,10 @@
         });
         return window.location.hash = 'launchpad/' + tokenizedHash[2];
     }
-    launchNSRError(data) {
+    launchNSRError(error) {
         var msg = 'Something went wrong while trying to instantiate. Check the error logs for more information';
-        if (data.error) {
-            msg = data.error;
+        if(error) {
+            msg = error;
         }
         Alt.actions.global.showNotification.defer(msg);
         Alt.actions.global.hideScreenLoader.defer();
