diff --git a/src/app/joblist/joblist.component.html b/src/app/joblist/joblist.component.html
index 064cae32d32f8ba9c35f7f78574a2b4f3f4d2d1b..cad2c94df97d68cb524d15dec7be2427a3f6860c 100644
--- a/src/app/joblist/joblist.component.html
+++ b/src/app/joblist/joblist.component.html
@@ -55,7 +55,7 @@
                 </mat-list-item>
             <mat-divider style="background-color: var(--panel-border-color)"></mat-divider>
             <div *ngFor="let job of joblist ; let lastItem = last">
-                <div *ngIf="job.app !== null && app.name == job.app.name && job.state == 'Finished'">
+                <div *ngIf="job.app !== null && app.name == job.appname && job.state == 'Finished'">
                     <app-job [jobdata]=job></app-job>
                     <mat-divider></mat-divider>
                 </div>
diff --git a/src/app/joblist/joblist.component.ts b/src/app/joblist/joblist.component.ts
index 92d3ff9e1f0395cd5d61dde972a29dbb71107ff4..7b7031380e7d3b7324bd6a8d02dfe5504810ea31 100644
--- a/src/app/joblist/joblist.component.ts
+++ b/src/app/joblist/joblist.component.ts
@@ -112,16 +112,24 @@ export class JoblistComponent implements OnInit {
     app = applist[0];
     for ( let item of applist) {
       sapp = <Strudelapp>item;
-      let sname = sapp.name.toLowerCase().replace(/\s/g, '');
-      let jname = name.toLowerCase().replace(/\s/g, '');
-      idx = sname.indexOf(jname)
+      //let sname = sapp.name.toLowerCase().replace(/\s/g, '');
+      //let jname = name.toLowerCase().replace(/\s/g, '');
+      let sname = sapp.name;
+      let jname = name;
+      idx = sname.indexOf(jname);
+      console.log('sname',sname);
+      console.log('jname',jname);
       if (idx == 0) {
         app = item;
+        console.log('found an app1',jname,sname);
+          console.log(app.startscript);
         return app;
       }
       if (sapp.applist != null) {
         app = this.getApp(name,sapp.applist);
         if (app != null) {
+          console.log('found an app1',jname,sname);
+          console.log(app.startscript);
           return app;
         }
       }
diff --git a/src/app/launch-dialog/launch-dialog.component.ts b/src/app/launch-dialog/launch-dialog.component.ts
index cb840429aa14fe8a26d7d55a5b9d7cbe3bb1a454..df5ae515c04cdf2db7318b59b753171e093fb481 100644
--- a/src/app/launch-dialog/launch-dialog.component.ts
+++ b/src/app/launch-dialog/launch-dialog.component.ts
@@ -70,7 +70,7 @@ export class LaunchDialogComponent implements OnInit {
     this.setFocus = false;
     this.updateURLs();
     this.clearInfo();
-    this.subscriptions.push(this.appSubject.subscribe(() => { this.app = this.appSubject.value; this.updateURLs() ; this.clearInfo()}));
+    this.subscriptions.push(this.appSubject.subscribe(() => { this.app = this.appSubject.value; console.log('updated app',this.app); this.updateURLs() ; this.clearInfo()}));
   }
 
   configdialog(){
@@ -201,13 +201,16 @@ export class LaunchDialogComponent implements OnInit {
   }
 
   canILaunch() {
+    console.log('called canIlaunch');
     if (this.app == null) {
+      console.log('setready false');
       this.setReady(false);
       return
     }
     if (this.submitcmd.value != null) {
         console.log(this.app.url);
         if (this.app.url === null || this.appData.value != null ) {
+            console.log('setready true');
             this.setReady(true);
             return;
         }
diff --git a/src/app/strudelapps.service.ts b/src/app/strudelapps.service.ts
index 0ca4fbda31c56ca8e6c28e640795299931dae332..a941fbc964ea10d61e468613da5fdef1bb5c4afe 100644
--- a/src/app/strudelapps.service.ts
+++ b/src/app/strudelapps.service.ts
@@ -7,9 +7,41 @@ import { Strudelapp } from './strudelapp';
 export class StrudelappsService {
 
   constructor() { }
+  getApp(name: string,applist: any): any {
+
+    var idx: number;
+    var app: any;
+    var sapp: Strudelapp;
+    app = applist[0];
+    for ( let item of applist) {
+      sapp = <Strudelapp>item;
+      //let sname = sapp.name.toLowerCase().replace(/\s/g, '');
+      //let jname = name.toLowerCase().replace(/\s/g, '');
+      let sname = sapp.name;
+      let jname = name;
+      idx = sname.indexOf(jname);
+      console.log('sname',sname);
+      console.log('jname',jname);
+      if (idx == 0) {
+        app = item;
+        console.log('found an app1',jname,sname);
+          console.log(app.startscript);
+        return app;
+      }
+      if (sapp.applist != null) {
+        app = this.getApp(name,sapp.applist);
+        if (app != null) {
+          console.log('found an app1',jname,sname);
+          console.log(app.startscript);
+          return app;
+        }
+      }
+    }
+    return null;
+  }
 
   // getApp(name: string,applist: Strudelapp[]): Strudelapp {
-  getApp(name: string,applist: any): any {
+    /*getApp(name: string,applist: any): any {
 
     var idx: number;
     var app: any;
@@ -32,6 +64,6 @@ export class StrudelappsService {
       }
     }
     return null;
-  }
+  }*/
 
 }
diff --git a/src/app/tes.service.ts b/src/app/tes.service.ts
index a44e8493388554db510e3af3bb76d61aa6268259..c071f81bb98c35e0a4e42b64e864cd551a3c227d 100644
--- a/src/app/tes.service.ts
+++ b/src/app/tes.service.ts
@@ -207,6 +207,7 @@ private addUserHealth(identity,resp) {
      }
    }
    let body = {'app': app, 'appparams': appparams, 'keys': keys, 'ids': JSON.stringify(JSON.stringify(ids))}
+   console.log('submit body',body);
    this.http.post<any>(this.Base+'/submit'+'?'+paramstr, body, options)
                                           .subscribe(resp => { this.notifications.notify(null) },
                                                      error => this.submissionError(error));
diff --git a/src/assets/config/m3apps.dev.json b/src/assets/config/m3apps.dev.json
index a9a4adc97081273ac8471c4ab2ddf5c02d8bb368..9c8bffbc29fdaa1c9c89041893a18a739697cdfb 100644
--- a/src/assets/config/m3apps.dev.json
+++ b/src/assets/config/m3apps.dev.json
@@ -132,7 +132,7 @@
        }
 
    ],
-   "desc": "this is a description of how to run jupyter with a <a href=https://www.cvl.org.au>link</a>",
+   "desc": "To run your own installation of jupyter you must first <ul> <li> Install Jupyter </li> <li> Create a file called <code>~/.jupytervenv</code> containg the path where you installed. For example if you have the program <code>/home/user/myenv/bin/jupyter</code>, you would put <code>/home/user/myenv</code> in that file.</li></ul>",
    "localbind": true,
    "applist": null
   },
diff --git a/src/assets/config/m3apps.test.json b/src/assets/config/m3apps.test.json
index 1a86a9a0bfe03fcdfc36fcd2758140813131ba68..70573d3b13912d037f72f99863397bbb7ea9d30e 100644
--- a/src/assets/config/m3apps.test.json
+++ b/src/assets/config/m3apps.test.json
@@ -103,6 +103,7 @@
        }
 
    ],
+   "desc": "To run your own installation of jupyter you must first <ul> <li> Install Jupyter </li> <li> Create a file called <code>~/.jupytervenv</code> containg the path where you installed. For example if you have the program <code>/home/user/myenv/bin/jupyter</code>, you would put <code>/home/user/myenv</code> in that file.</li></ul>",
    "localbind": true,
    "applist": null
   },