diff --git a/js/app/models/ExecutableNode.js b/js/app/models/ExecutableNode.js
index e5335eb..553e3b2 100644
--- a/js/app/models/ExecutableNode.js
+++ b/js/app/models/ExecutableNode.js
@@ -49,7 +49,8 @@ Ext.define('amdaModel.ExecutableNode', {
 
 		var jsonObject = this.get('object').getJsonValues();
 		if (opts && opts.sendToSamp) {
-			opts.sendToSamp = true;
+			jsonObject.sendToSamp = true;
+			opts.clientId = opts.clientId ? opts.clientId : 'hub';
 		}
        
 		if (!loadMask.isMasked())
@@ -79,15 +80,35 @@ Ext.define('amdaModel.ExecutableNode', {
 						module.updateInteractiveSession(res, true);
 					});
 				}
-				else {
-					/*if (res.sendToSamp) {
+				else if (!res.id && res.download) {
+					//Download TT / Cat
+					if (res.sendToSamp) {
 						myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) {
 							Ext.Array.each(res.download, function(download) {
-								module.sendVOTable(download, clientId ? clientId : 'hub');
+								module.sendVOTable(download, opts.clientId);
 							});
 						});
 						return;
-					}*/
+					} else if (res.compression) {					
+						window.location.href = res.download;
+					}
+					else {
+						window.open(res.download, '_blank');
+					}
+					return;
+				}
+				else {
+					if (res.sendToSamp) {
+						// Send to SAMP from Download UI
+						var files = res.result.split(",");
+						myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) {
+							Ext.each(files, function(file) {
+								var href = 'data/'+sessionID+'/RES/'+ res.folder + '/' + file;
+								module.sendVOTable(href, opts.clientId);
+							});
+						});
+						return;
+					}
 
 					if (logExecTime && res.exectime && (res.exectime != 0)) {
 						console.log("CMD EXEC TIME FOR "+res.id+" = "+res.exectime+"ms");
--
libgit2 0.21.2