diff --git a/src/app/job/job.component.html b/src/app/job/job.component.html
index a7536627842229aa6a151e0df30129212aa6b19a..7d417b6c1f5ad84e5c8e26221bcf4d715dbf21e4 100644
--- a/src/app/job/job.component.html
+++ b/src/app/job/job.component.html
@@ -1,93 +1,56 @@
-<mat-list-item>
-    <!--<mat-card-title>{{ jobdata.name }}</mat-card-title>-->
-  <div style="width: 100%">
-  <div *ngIf="jobdata.connectionState == 0">
-    <div gdAreas="name name name name|
-                status resources space buttons"
-       gdColumns="20% 60% auto 20%"
-       >
-       <div gdArea="name">
-           {{ jobdata.name }} {{ jobdata.desc }}
-       </div>
-       <div gdArea="status">
-           {{ jobdata.state }}
-       </div>
-       <div gdArea="buttons">
-           <div fxLayout="row">
-           <div fxFlex *ngIf="!nocancel">
-              <button mat-button (click)="onCancel()" >
-                Cancel
-              </button>
-           </div>
-           <div fxFlex *ngIf="jobdata.state == 'RUNNING' && jobdata.app !== null && jobdata.app.client !== null">
-              <button mat-button (click)="onConnect()">
-                Connect
-              </button>
-           </div>
-           </div>
-       </div>
-       <div gdArea="resources">
-           <div fxLayout="column">
-               <div>
-                    {{ resources }}
-               </div>
-               <div>
-                   {{ timeremaining }}
-               </div>
-           </div>
-       </div>
-
-  </div>
-</div>
-<!--  <table>
-    <tr>
-      <td width="100%">
-        {{ jobdata.desc }}
-      </td>
-      <td width="20%">
-        {{ jobdata.state }}
-      </td>
-      <td withdt="10%">
-        <div *ngIf="!nocancel">
-          <button mat-button (click)="onCancel()" >
-            Cancel
-          </button>
-        </div>
-      </td>
-      <td width="10%">
-        <div *ngIf="available">
-          <button mat-button (click)="onConnect()" [disabled]="busy">
-            Connect
-          </button>
-        </div>
-      </td>
-  </tr>
-</table>  -->
-    <div *ngIf="jobdata.connectionState == 1">
-      <div gdArea="status">
-      Getting app parameters
+<mat-list-item style="height: auto; width: auto">
+  <div fxLayout="column" style="width: 100%">
+    <div style="text-align: left"> {{ jobdata.name }} </div>
+    <div *ngIf="jobdata.connectionState == 0" fxLayout="row" fxLayoutAlign="space-between">
+      <div fxFlex="10%"> {{ jobdata.state }} </div>
+      <div fxFlex="10%"> {{ jobdata.jobid }}</div>
+      <div fxFlex="10%"> {{ jobdata.batch_host }}</div>
+      <div fxFlex="20%" fxLayout="column">
+        <div> {{ resources }} </div>
+        <div> {{ timeremaining }} </div>
       </div>
-      <div gdArea="resources">
-      <mat-progress-bar mode="determinate" value=30></mat-progress-bar>
+      <div fxFlex></div>
+      <div fxFlex="10%" fxLayout="row">
+        <div fxFlex *ngIf="!nocancel"> <button mat-button (click)="onCancel()" > Cancel </button> </div>
+        <div fxFlex *ngIf="jobdata.state == 'RUNNING' && jobdata.app !== null && jobdata.app.client !== null"> <button mat-button (click)="onConnect()"> Connect </button> </div>
       </div>
     </div>
 
-    <div *ngIf="jobdata.connectionState == 2">
-      <div gdArea="status">
-      Creating secure tunnels
-      </div>
-      <div gdArea="resources">
-      <mat-progress-bar mode="determinate" value=60></mat-progress-bar>
-      </div>
+    <div fxLayout="row" *ngIf="jobdata.connectionState == 1">
+      <div fxFlex="20%"> Getting app parameters </div>
+      <div fxFlex="80%"> <mat-progress-bar mode="determinate" value=30></mat-progress-bar> </div>
     </div>
-
-    <div *ngIf="jobdata.connectionState == 3">
-      <div gdArea="status">
-      Determining correct URL
-      </div>
-      <div gdArea="resources">
-      <mat-progress-bar mode="determinate" value=90></mat-progress-bar>
-      </div>
+     
+    <div fxLayout="row" *ngIf="jobdata.connectionState == 2">
+        <div fxFlex="20%"> Creating secure tunnels </div>
+        <div fxFlex="80%"> <mat-progress-bar mode="determinate" value=60></mat-progress-bar> </div>
+    </div>
+     
+    <div fxLayout="row" *ngIf="jobdata.connectionState == 3">
+      <div fxFlex="20%"> Determining correct URL </div>
+      <div fxFlex="80%"> <mat-progress-bar mode="determinate" value=90></mat-progress-bar> </div>
     </div>
   </div>
 </mat-list-item>
+
+<!--<mat-list-item>
+    <div fxLayout="column" fxLayoutAlign="space-around none" style="width: 100%; background-color: red">
+        <div fxLayout="row" style="background-color: green">
+            <div>
+                {{ jobdata.name }}
+            </div>
+            <div fxFlex>
+            </div>
+        </div>
+        <div *ngIf="jobdata.connectionState == 0" fxLayout="row" style="background-color: blue">
+            <div>
+               {{ jobdata.state }}
+            </div>
+            <div></div>
+            <div fxLayout="column">
+              <div> {{ resources }} </div>
+              <div> {{ timeremaining }} </div>
+            </div>
+        </div>
+    </div>
+</mat-list-item>-->
diff --git a/src/app/joblist/joblist.component.html b/src/app/joblist/joblist.component.html
index fabe6c5f88097fd439f3555f0b6f96b9be138101..50cde8c15127d34bb1e442c979a03d166d68c673 100644
--- a/src/app/joblist/joblist.component.html
+++ b/src/app/joblist/joblist.component.html
@@ -3,9 +3,10 @@
 </div>-->
 <div *ngIf="(identitySubject | async) !== null" >
    <mat-list>
-   <div *ngFor="let job of ((identitySubject | async).joblist | async)">
+   <div *ngFor="let job of ((identitySubject | async).joblist | async) ; let lastItem = last">
        <div *ngIf="job.state != 'Finished'">
         <app-job [jobdata]=job></app-job>
+        <mat-divider></mat-divider>
        </div>
    </div>
    </mat-list>
diff --git a/src/app/launcher/launcher.component.html b/src/app/launcher/launcher.component.html
index e19f1d79f842ca026bbd04ca83e24013b89a0247..9cd5a2721b9539e702130150faf5fb4a323a8cf8 100644
--- a/src/app/launcher/launcher.component.html
+++ b/src/app/launcher/launcher.component.html
@@ -18,21 +18,22 @@
             <div *ngFor="let id of (computeSitesService.appidentities | async)">
                 <mat-expansion-panel (opened)="selectId(id)">
                     <mat-expansion-panel-header>
-                        <mat-panel-title>
-                            <button mat-button style="width: 100%">
+                    <mat-panel-title>
+                        
+                        <!--<button mat-button style="width: 100%">-->
                             <div fxLayout="row">
-                                <div style="width: 10px;"></div>
+                                <div style="width: 20px;"></div>
                                 <div fxFlex fxLayout="column">
-                                    <div style="height: 10px"></div>
+                                    <div style="height: 15px"></div>
                                     <span fxFlex matBadge="{{ (id.healthalerts | async).length }}" 
                                                               [matBadgeHidden]= "(id.healthalerts | async).length == 0"  
                                                               matBadgePosition="above before" 
-                                                              matBadgeColor="warn" style=" text-align: left">
+                                                              matBadgeColor="warn" style=" text-align: left" matBadgeOverlap="false" matBadgeSize="small">
                                         {{ id.displayName() }}
                                     </span>
                                 </div>
                             </div>
-                            </button>
+                            <!--</button>-->
                         </mat-panel-title>
                     </mat-expansion-panel-header>
                     <app-strudelapplist [applist]=id.site.appCatalog [identity]="id" (appChange)="selectApp($event)"></app-strudelapplist>
diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html
index 93f7c3b39d4592b6cbc9e19cb6d05a9afb34db3c..41b3441c127652c1b036c3020d098c6193deaed1 100644
--- a/src/app/login/login.component.html
+++ b/src/app/login/login.component.html
@@ -1,4 +1,4 @@
-
+<div fxLayout="column" style="height: 100%">
 <mat-toolbar color="primary" style="width: 100%">
   <mat-toolbar-row>
     <button mat-icon-button ><mat-icon>menu</mat-icon></button>
@@ -7,11 +7,11 @@
     <span class="fill-horizontal-space"></span>
     </mat-toolbar-row>
 </mat-toolbar>
-<mat-sidenav-container style="height: 100%; width: 100%">
-    <mat-sidenav>
+<mat-sidenav-container fxFlex style=" width: 100%;">
+    <mat-sidenav >
     </mat-sidenav>
-    <mat-sidenav-content>
-        <div  fxFlex style="flex: 1 1 0%; box-sizing: border-box">
+    <mat-sidenav-content style="height: 100%">
+        <!--<div  fxFlex style="flex: 1 1 0%; box-sizing: border-box">-->
             <div fxLayout="column" fxLayoutAlign="space-around stretch" style="height: 100%; width: 100%" >
                 <div fxLayout="row">
                     <div fxFlex></div>
@@ -41,6 +41,7 @@
                 <div fxFlex></div>
                 <button mat-icon-button routerLink="/settings"><mat-icon>settings</mat-icon></button>
             </div>
-        </div>
+            <!--</div>-->
     </mat-sidenav-content>
 </mat-sidenav-container>
+</div>
diff --git a/src/app/tes.service.ts b/src/app/tes.service.ts
index 9a633270e9b4c143a7c40edbd8800016413be9b2..c597dd3c3ea24571d141ee7abcc35d65130089b2 100644
--- a/src/app/tes.service.ts
+++ b/src/app/tes.service.ts
@@ -156,7 +156,7 @@ public setStatusMsg(statusMsg: BehaviorSubject<any>) {
    }
    joblist = joblist.sort((a,b) =>  (a.jobid < b.jobid)? 1:-1);
    identity.joblist.next(joblist);
-   this.statusMsg.next(null);
+   //this.statusMsg.next(null);
  }
 
  private getBatchInterfaceError(error: any) {
@@ -379,6 +379,7 @@ addUserHealth(identity,resp) {
    params.set('cmd',JSON.stringify(job.app.paramscmd));
    let paramstr = params.toString();
    job.connectionState = 1;
+   console.log('in getAppInstance');
    this.http.get<string>(this.Base+'/appinstance/'+username+'/'+loginhost+'/'+batchhost+'/'+jobid+'?'+paramstr, options)
                 // .pipe(catchError(this.handleError))
          .subscribe(resp =>  { job.appinst = resp; this.createTunnel(job) },
@@ -512,9 +513,13 @@ private httperror(errorstr: string) {
 
 
 private handleAppInstanceError(job: Job, error: any) {
+    console.log('in handle app instance error');
+    console.log(error);
     job.connectionState=0;
     if (error.error !== undefined && error.error.message !== undefined) {
         this.statusMsg.next(error.error.message);
+    } else if (error.error !== undefined && error.error.error !== undefined) {
+      this.statusMsg.next(error.error.error.msg);
     } else {
         this.statusMsg.next(error);
     }
diff --git a/src/assets/config/computesites.json b/src/assets/config/computesites.json
index b5d8b970625330a96faeb93941a5a0b303a61b9c..205b513cc81e8cd99917adc5c0ebcd6e78d2a081 100644
--- a/src/assets/config/computesites.json
+++ b/src/assets/config/computesites.json
@@ -1,8 +1,8 @@
 [
   {
-    "url": "http://localhost:5000/",
+    "url": "https://strudel2-api-dev.cloud.cvl.org.au/m3/",
     "name": "M3",
-    "host": "m3-login2.massive.org.au",
+    "host": "m3-login1.massive.org.au",
     "dtn": "m3-dtn1.massive.org.au",
     "cafingerprint": "RSA SHA256:cmDxHrZQSPlBMUUcI/BWmruXho1XOzfXPDHSqVTwV2I",
     "appCatalog": [],
diff --git a/src/assets/config/m3apps.dev.json b/src/assets/config/m3apps.dev.json
index 17bd3ec0c25650c6cc917cf1b19530f12a24f7ef..5f470b6ef9dc42d5e1d51475e69d87e495b33387 100644
--- a/src/assets/config/m3apps.dev.json
+++ b/src/assets/config/m3apps.dev.json
@@ -1,8 +1,8 @@
 [
   { "url": null,
     "name": "Desktop",
-    "startscript": "#!/bin/bash\n/usr/local/sv2/dev/desktop/desktop.slurm\n ",
-    "paramscmd": "/usr/local/sv2/dev/desktop/params.py",
+    "startscript": "#!/bin/bash\n#SBATCH -w m3a002\n/usr/local/sv2/dev/desktop/desktop.slurm\n ",
+    "paramscmd": "/usr/local/sv2/dev/desktop/params.py {jobid}",
     "client": {"cmd": null, "redir": "vnc.html?password={password}" },
     "localbind": true,
     "applist": null
diff --git a/src/assets/config/m3apps.json b/src/assets/config/m3apps.json
index c8baa3b4e43b6335b567b32b6b34bd767b802c00..2918d2dd7c9cea41a5b48c05acc77f65010252b5 100644
--- a/src/assets/config/m3apps.json
+++ b/src/assets/config/m3apps.json
@@ -1,8 +1,8 @@
 [
   { "url": null,
     "name": "Desktop",
-    "startscript": "#!/bin/bash\n/usr/local/sv2/desktop/desktop.slurm\n ",
-    "paramscmd": "/usr/local/sv2/desktop/params.py",
+    "startscript": "#!/bin/bash\n#SBATCH -w m3a002\n/usr/local/sv2/dev/desktop/desktop.slurm\n ",
+    "paramscmd": "/usr/local/sv2/dev/desktop/params.py {jobid}",
     "client": {"cmd": null, "redir": "vnc.html?password={password}" },
     "localbind": true,
     "applist": null